我的简单Fortran程序有问题.我在Fortran 77工作,使用Compaq Visual Fortran.程序结构必须采用主程序和子程序的形式,因为它是与有限元方法相关的大程序的一部分.
我的问题是,我想设置的值10000和10000 NHELE和NVELE分别,但是当我运行的代码,程序停止,并提供了以下错误:
forrt1: server <170>: program Exception - stack overflow
Run Code Online (Sandbox Code Playgroud)
我已经尝试迭代地减少所需的值,直到我达到507和507.此时代码运行没有错误.
但是,将值增加到508和508会导致重新出现相同的错误.
我认为这个问题与子程序有关NIGTEE,因为当我没有它重新安排程序时,一切正常.
我已经尝试使用菜单将堆栈大小增加到最大值,project>>settings>>link>>output>>reserve & commit
但这并没有什么区别.
我怎么解决这个问题?
这是我的计划:
PARAMETER(NHELE=508,NVELE=508)
PARAMETER(NHNODE=NHELE+1,NVNODE=NVELE+1)
PARAMETER(NTOTALELE=NHELE*NVELE)
DIMENSION MELE(NTOTALELE,4)
CALL NIGTEE(NHELE,NVELE,NHNODE,NVNODE,NTOTALELE,MELE)
OPEN(UNIT=7,FILE='MeshNO For Rectangular.TXT',STATUS='UNKNOWN')
WRITE(7,500) ((MELE(I,J),J=1,4),I=1,NTOTALELE)
500 FORMAT(4I20)
STOP
END
SUBROUTINE NIGTEE(NHELE,NVELE,NHNODE,NVNODE,NTOTALELE,MELE)
DIMENSION NM(NVNODE,NHNODE),NODE(4)
DIMENSION MELE(NTOTALELE,4)
KK=0
DO 20 I=1,NVNODE
DO 20 J=1,NHNODE
KK=KK+1
NM(I,J)=KK
20 CONTINUE
KK=0
DO 30 I=1,NVELE
DO 30 J=1,NHELE
NODE(1)=NM(I,J)
NODE(2)=NM(I,J+1)
NODE(3)=NM(I+1,J+1)
NODE(4)=NM(I+1,J)
KK=KK+1
DO 50 II=1,4
50 MELE(KK,II)=NODE(II)
30 …Run Code Online (Sandbox Code Playgroud)