Fortran Stack Overflow

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.

+3
source share
4 answers

Update

. NM NHNODE NVNODE. 10 000 10 000, 381 , , . ( , 500 500, 1 .)

, Fortran . "" ( ) 1977 , Fortran 77 . , , , , 381 . , , (, , ).

, . , COMMON . - , , ( ), .

Fortran 90 ALLOCATE . , , , .

, , , M.S.B. , .

+8

?

, , . Fortran 95 FORTRAN 77. , . Intel Visual Fortran, Compaq Visual Fortran, Windows Mac OS X .

+3

MELE , NM: 10000 x 10000 x 4 x 4, 10001 x 100001 x 4 (, 4 , ) - 1,49 381 . MELE , , . , NM ( 1,86 ), . MELE , NM , , , -. , NM, , . , , NM, . NM - . , include PARAMETER, , , . , , PARAMETER , , , . , . , NM .

COMMON- - - , . , COMMON , .

- - , " ". , . , , .

+1

, , , , . allocatable? ( , F77, )

0
source

Source: https://habr.com/ru/post/1721484/


All Articles