I have a problem with my simple Fortran program. I work in Fortran 77 using Compaq Visual Fortran. The structure of the program should be in the form of the main and subprograms, since it is part of a large program related to the finite element method.
My problem is that I would like to set the values to 10000 and 10000 for NHELEand NVELErespectively, but when I run the code, the program stops and gives the following error:
forrt1: server <170>: program Exception - stack overflow
I tried iteratively decreasing the required values until I reached 507 and 507. At this point, the code works without errors.
However, increasing the values to 508 and 508 causes a second error.
I think the problem is with the subroutine NIGTEE, because when I change the program without it, everything works fine.
I tried to maximize the stack size using the menu project>>settings>>link>>output>>reserve & commit
but that didn't matter.
How can I solve this problem?
Here is my program:
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
Thanks.