Un Débordement de pile dans le programme Fortran

J'ai un problème avec mon simple programme Fortran. Je travaille en Fortran 77, à l'aide de Compaq Visual Fortran. La structure du programme doit être sous la forme d'une main et d'une sous-routine, parce qu'il fait partie d'un grand programme lié à la méthode des éléments finis.

Mon problème est que je voudrais définir les valeurs 10000 & 10000 pour NHELE et NVELE respectivement, mais quand je lance le code, le programme s'arrête et donne l'erreur suivante:

forrt1: server <170>: program Exception - stack overflow

J'ai essayé de réduire de manière itérative les valeurs requises, jusqu'à ce que j'ai atteint 507 & 507. À ce stade, le code s'exécute sans erreur.

Cependant, l'augmentation des valeurs à 508 & 508 provoque la même erreur à nouveau.

Je pense que le problème est lié à la sous-routine NIGTEE, parce que quand j'ai réorganiser le programme sans elle, tout fonctionne bien.

J'ai tenté d'augmenter la taille de la pile pour un maximum en utilisant le menu project>>settings>>link>>output>>reserve & commit
mais ceci n'est pas de faire une différence.

Comment puis-je résoudre ce problème?

Voici mon programme:

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

Grâce.

J'ai lu le titre et pensé que ce serait sur la création d'une SORTE de clone en Fortran. /facepalm

OriginalL'auteur ghazooo | 2009-10-30