0

我有一个 FORTRAN 77 程序代码。我在 Windows 上使用 Fortran Power Station 4.0。这是一个很长的有限元方法代码。

代码如下:


1 主程序以

PARAMETER (HLENGTH=600.0,VLENGTH=600.0,NHELE=6,NVELE=6,NTYPE=1) 
PARAMETER (DENSITY=2.78E-6,POISON=0.34,THICK=1.0,EMODULE=6.87E4)
PARAMETER (NTOTALNODE=(NHELE+1)*(NVELE+1))                  
PARAMETER (NHNODE=NHELE+1,NVNODE=NVELE+1)                   
PARAMETER (MK=(NTOTALNODE-2*NHNODE-2*(NVNODE-2))*5)      
PARAMETER (DELTAH=(HLENGTH+0.0)/(NHELE+0.0))
PARAMETER (DELTAV=(VLENGTH+0.0)/(NVELE+0.0)) 


DIMENSION NODEMATRIX(NTOTALELE,4)                           
REAL*8    STIFFMATRIX(20,20),MASSMATRIX(20,20)
REAL*8    STIFFMATRIXS(20,20),MASSMATRIXS(20,20)
DIMENSION NODEROWT(4),NODEROWT2(20)     
DIMENSION NM(NVNODE,NHNODE)                                                
REAL*8 GSM(NTOTALNODE*5,NTOTALNODE*5),NCARRIER(MK),
      &GMM(NTOTALNODE*5,NTOTALNODE*5),AA(MK,MK),BB(MK,MK)


CALL STIFFMAT(STIFFMATRIX,DELTAV,DELTAH,THICK,EMODULE)
CALL MASSMAT(MASSMATRIX,DELTAV,DELTAH,THICK,DENSITY)
CALL STIFFMATS(STIFFMATRIXS,DELTAV,DELTAH)
CALL MASSMATS(MASSMATRIXS,DELTAV,DELTAH,DENSITY)
.
.
.
. etc

2 - 子程序开始如下:

SUBROUTINE STIFFMAT(STIFFMATRIX,DELTAV,DELTAH,THICK,EMODULE)

   REAL*8 STIFFMATRIX(20,20),B(6,20),BT(20,6),D(6,6)

   REAL*8 CC(5),ZETAM(5),ETAM(5),CA,CB,ZETA,ETA,SUM,SUM2,SUM3

   .
   .
   .etc



SUBROUTINE MASSMAT(MASSMATRIX,DELTAV,DELTAH,THICK,DENSITY)

   REAL*8 MASSMATRIX(20,20),B(5,20),BT(20,5),D(5,5)

   REAL*8 CC(5),ZETAM(5),ETAM(5),CA,CB,ZETA,ETA,SUM,SUM2,SUM3

   .
   .
   .etc



SUBROUTINE MASSMATS(MASSMATRIXS,DELTAV,DELTAH,DENSITY)

   REAL*8 MASSMATRIXS(20,20),B(5,20),BT(20,5),D(5,5),IS,JS,AS

   REAL*8 CC(5),ZETAM(5),CA,ZETA,ETA,SUM,SUM2,SUM3

   .
   .
   .etc



SUBROUTINE STIFFMATS(STIFFMATRIXS,DELTAV,DELTAH)

   REAL*8 STIFFMATRIXS(20,20),B(3,20),BT(20,3),D(3,3)

   REAL*8 CC(5),ZETAM(5),CA,ZETA,ETA,SUM,SUM2,SUM3

   .
   .
   .etc

当我按下编译命令时,它会显示以下消息:

致命错误 F1002:编译器在传递 2 中的堆空间不足

我用谷歌搜索了这个问题,并找到了以下解决方案

但我不明白解决方案!

我不知道如何更改Zi选项,我在哪里可以找到它?

我认为我的代码很好而且清晰。有没有人有任何建议来解决这个问题?

4

4 回答 4

1

如果项目工作空间放置在嵌套文件夹中导致路径过大,则 powerstation 编译器会显示此错误。解决方案是通过将项目工作区放置在靠近 c 驱动器的位置来减少项目工作区的路径,例如在我的文档文件夹中。

于 2011-10-30T20:58:31.577 回答
1

通过互联网可以提供的帮助非常有限。使用缺少文档的过时产品(MS Fortran Power Station)只能完成这么多工作。我有几个建议。获取现代编译器。凭借您的计算机经验,并且由于您使用的是 MS Windows,您可能最好使用 Intel Visual Fortran Compiler for Windows 等商业产品。

可能会有教育折扣。可能有一个试用下载(定时演示)。如果您仍然有困难(安装、编译程序等),请提供一些钱给擅长计算机的本科生,以帮助您几个小时。我还建议学习 Fortran 95。由于语言兼容,您可以逐渐从 FORTRAN 77 切换到 Fortran 95。Fortran 95 是一种更强大的语言。它还具有更好地允许编译器发现程序员错误、加快开发过程的功能。

于 2010-05-22T04:51:28.807 回答
0

从您提供的链接:

有三种不同的方法可以解决这些问题:

  • 重新排列结构。将小物件放在首位通常可以消除这两个错误。-或者-

  • 使用一个字符长的成员名称。-或者-

  • 不使用 -Zi 重新编译。

如果您使用 -Zi 参数进行编译,请关闭该参数。

如果这不起作用,请重新排序结构。这意味着将较小的单个 INTEGER、FLOAT 等元素放在程序的前面,然后是 Array 声明。

如果这不起作用,您的程序对于 Fortran 电站来说太大了。

于 2010-05-20T19:35:42.793 回答
0

当我将“项目工作区”名称设置得太长时,我遇到了类似的问题。使用简短的“项目工作区”名称。

于 2017-08-29T06:41:36.087 回答