我有一个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遍中没有堆空间
我用Google搜索了问题,找到了following solutions
但我不明白解决方案!
我不知道如何更改Zi
选项,我可以在哪里找到它?
我认为我的代码很好而且清晰。有没有人有任何建议来解决这个问题?
答案 0 :(得分:1)
互联网上只能提供很多帮助。只有那些你没有文档的过时产品(MS Fortran Power Station)才能做到这一点。我有几个建议。获得一个现代编译器。凭借您的计算机使用经验,以及自使用MS Windows以来,您可能最擅长使用英特尔Visual Fortran编译器等商业产品。
可能会有教育折扣。可能有试用版下载(定时演示)。如果您仍然遇到困难(安装,编译程序等),请向熟悉计算机的本科生提供一些资金,以帮助您几个小时。我还建议学习Fortran 95.由于语言兼容,您可以逐步从FORTRAN 77切换到Fortran 95。 Fortran 95是一种功能更强大的语言。它还具有更好的功能,允许编译器找到程序员的错误,加快开发过程。
答案 1 :(得分:1)
如果项目工作区放置在嵌套文件夹中,导致路径较大,那么powerstation编译器会显示此错误。解决方案是通过将项目工作区放置在更靠近c驱动器的位置来减少项目工作区的路径,例如在我的文档文件夹中。
答案 2 :(得分:0)
从您提供的链接:
有三种不同的方法可以解决这些问题:
重新排序结构。放小 物品首先经常消除两者 错误。 -OR -
使用一个字符长的成员名称。 -OR -
不使用-Zi重新编译。
如果您使用-Zi参数进行编译,请关闭参数。
如果不起作用,请重新排序结构。这意味着将较小的单个INTEGER,FLOAT等元素放在程序的前面,然后是Array声明。
如果这不起作用,您的程序对于Fortran电站来说太大了。
答案 3 :(得分:0)
当我将“Project Workspace”名称设置得太久时,我遇到了类似的问题。使用简短的“项目工作区”名称。