Question

J'essaie d'optimiser un code dans Fortran77 et j'aimerais savoir si les tableaux ont déclaré de la manière suivante dans une routine ou un fichier d'en-tête sont des tableaux de pointes ou de tableaux de structures:

cas 1: réel * 8 xred (maxatm)

Cas 2: Common / Atomes / x (Maxatm)

J'ai déjà fouillé sur Internet, mais je ne pouvais trouver aucune information à ce sujet, la seule chose que j'ai trouvée était que lorsque vous passez une matrice à une routine, elle est transmise par référence.Mais en ce qui concerne quand il est déclaré dans le fichier d'en-tête ou à l'intérieur de la routine, je n'ai rien trouvé.

Merci d'avance!

Était-ce utile?

La solution

dans un fichier .f77 'en-tête' / fichier commun / .cmn Vous déclarez que vos variables sont utilisées dans votre programme.L'espace requis pour ces variables est établi lors de la compilation de chaque fichier contenant la déclaration d'en-tête.Donc, pour 'my.cmn' qui contient

REAL*8 XEDG(-2:MAXNB+4)  ! left x-edges of cells    
REAL*8 YEDG(-2:MAXNB+4)  ! left y-edges of cells 
REAL*8 XC(-2:MAXNB+4) ! X CELL CENTERS
REAL*8 YC(-2:MAXNB+4) ! Y CELL CENTERS

Ces variables sont créées chaque fois qu'ils sont déclarés dans un fichier .f77 via INCLUDE 'My.CMN'.

Cependant, en utilisant un bloc commun

COMMON /GRID/ XEDG,YEDG,XC,YC

Indique au compilateur que les variables contenues dans un fichier .cmn donné (ou autre) sont à certaines étendues globales / partagées, le compilateur utilisera ici les pointeurs vers l'espace pertinent en mémoire.

The COMMON statement defines a block of main memory storage so that 
different program units can share the same data without using arguments.

voir ici pour plus d'informations sur COMMON et ici pour le manuel de référence du compilateur Sun Fortran 77 4.0.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top