Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
致命错误F1002编译器在MS Fortran Powerstation的过程2中堆空间不足_Fortran_Fortran77 - Fatal编程技术网

致命错误F1002编译器在MS Fortran Powerstation的过程2中堆空间不足

致命错误F1002编译器在MS Fortran Powerstation的过程2中堆空间不足,fortran,fortran77,Fortran,Fortran77,我有一个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)*(NV

我有一个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
当我按下compile命令时,它会显示以下消息:

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

我用谷歌搜索了这个问题,找到了答案

但我不明白解决办法

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


我认为我的代码是好的和清晰的。有人对解决这个问题有什么建议吗

从您提供的链接:

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

  • 重新排列结构。放小 第一个项目通常会消除这两种情况 错误-或-

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

  • 不使用-Zi重新编译

如果使用-Zi参数编译,请去掉该参数

如果这不起作用,请重新排列结构。这意味着将较小的单个整数、浮点等元素放在程序的前面,后面是数组声明


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

互联网上能提供的帮助只有这么多。对于一个过时的产品(MS Fortran Power Station),只有这么多可以做的事情,而您缺乏相关文档。我有几个建议。找一个现代化的编译器。根据您的计算机经验,并且由于您使用的是MS Windows,您最好使用商业产品,如“英特尔Visual Fortran编译器Windows版”


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

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

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

也许使用更新的编译器——微软已经好几年没有出售Fortran编译器了。对于新代码,我强烈推荐Fortran 95。有免费的(如gfortran、g95)或低成本的编译器可用(在您的国家,有些可能有教育折扣)。他们还将编译FORTRAN 77。谢谢M.S.B。请注意我在问题中所做的更改。我正在使用power station 4.0,我会尽力找到新版本。@M.S.B.-尽管我同意这个建议(关于更新的编译器),但它在这里解决不了任何问题。是的,MS Fortran Powerstation是一个旧产品,但考虑到一些因素,它仍然可以在Win7下工作。我的一个同事每天都用它;他只是从来没有换过——觉得新英特尔的IDE非常“令人困惑”。Ghazooo-我可以尝试解决这个问题,但不幸的是,你在这里发布的内容远远不够基本诊断。您是否有机会将您的代码与项目和示例输入/输出文件(如果有)一起发布到某个地方?您在这里给出的内容根本不足以推断出可用内存有问题。@Gilbert感谢您的回答。好吧,我读了MS的解决方案。。。但是我不知道如何更改Zi参数的设置。请注意我在问题中所做的更改。我添加了程序的基本部分。请把你的笔记给我,告诉我我要换什么好吗?提前感谢您必须在编译主程序的同时编译所有子例程?你能独立于主程序编译子程序吗?不,我不能独立编译子程序。我必须同时编译主程序和子程序。我认为这是F77标准之一。你有没有发现结构有问题???如何更改Zi选项?FORTRAN77标准当然不要求您一次性编译程序和子程序。我不明白你为什么认为你不能单独编译子程序——这是因为你缺乏知识还是因为你正在使用的旧编译器的一些怪癖造成的限制?我想一次编译主程序和子程序,因为它们都在一个页面中!!!我不知道如何单独编译!!不管怎样,这是F1002错误的主要问题吗?