単純な Fortran プログラムに問題があります。Compaq Visual Fortran を使用して、Fortran 77 で作業しています。プログラムの構造は、有限要素法に関わる大きなプログラムの一部であるため、メインとサブルーチンの形式でなければなりません。
私の問題は、NHELE
と にNVELE
それぞれ 10000 と 10000 の値を設定したいのですが、コードを実行するとプログラムが停止し、次のエラーが表示されます。
forrt1: server <170>: program Exception - stack overflow
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 CONTINUE
RETURN
END
ありがとう。