2. Organigrammes#

2.1. Organigramme simplifié de la routine CALCUL#

Les noms des routines sont écrits en majuscules italiques. Seules les grandes étapes de la routine sont présentées.

CALCUL    (...)

DEBCA1! Initialisation des COMMON CAII02 et CAII11

! Mise au propre de LPAIN, LCHIN, LPAOU et LCHOU

! On vérifie que les paramètres de LPAIN existent dans la description de

! l’option et qu’il n’y a pas de doublons dans LPAIN et LPAOU


DEBCAL ! « Prologue » de la routine CALCUL : ! mise dans des COMMON d’adresses JEVEUX ! « extension » des CARTES IN [§2] ! vérifications diverses


ALRSLT ! Allocations des champs globaux résultats (OUT) ALCHLO ! Allocation des champs locaux


EXTRAI ! Dans le cas des volumes finis : extraction du champ local ! associé à pain pour le GREL grel en prenant en compte les ! voisins

boucle sur les GREL du LIGREL : grel

! Lorsqu’on utilise le parallélisme “GROUP_ELEM”, on peut parfois ! «sauter» tout un GREL si ce GREL n’est pas calculé par ce processeur : goto fin boucle grel

INIGRL ! Allocations des objets “&INEL.XXX” pour le GREL grel

EXTRAI ! Extraction des champs locaux associé aux LPAIN ! pour le GREL grel

ZECHLO ! Mise à zéro des champs locaux OUT CAUNDF ! Ajout de UNDEF aux bouts des champs IN/OUT pour ! vérifications ultérieures

TE0000 ! Appel aux TE000I effectifs (calculs élémentaires)

CAUNDF ! Vérifications ultérieures des UNDEF MONTEE ! Recopie des champs locaux OUT dans les champs ! globaux résultats

fin boucle grel


MONTEE ! Pour les volumes finis

si calcul parallèle distribué : SDMPIC! Communication MPI

2.2. Organigrammes simplifiés de la routine EXTRAI#

EXTRAI    (LCHIN,...)

! Dans le cas volumes finis, on doit allouer tous les champs avant la ! boucle sur les grels pour permettre l’accès aux «voisins» si volumes finis et si on est avant la boucle sur les grels boucle sur les GREL du LIGREL EXTRA1 fin boucle grel sinon EXTRA1

EXTRA1(LCHIN,…)

boucle sur LCHIN : champ_in si TYPE(champ_in)=”CARTE” EXCART(champ_in) si TYPE(champ_in)=”CHAM_ELEM EXCHML(champ_in) si TYPE(champ_in)=”CHAM_NO” EXCHNO(champ_in) si TYPE(champ_in)=”RESUELEM EXRESL(champ_in) fin si fin boucle sur LCHIN

EXCART (champ_in,…)

EXCAR1

EXCAR1(champ_in,…)

boucle sur les éléments du GREL : iel TRIGD ! récupération de la grandeur portée ! par la maille ima associée à l’élément iel fin boucle iel

EXCHNO    (champ_in,...)

boucle sur les éléments du GREL : iel boucle sur les noeuds de la maille associée à iel : ino TRIGD ! récupération de la grandeur portée ! par le noeud ino de l’élément iel fin boucle ino fin boucle iel

EXCHML (champ_in,…)

boucle sur les éléments du GREL : iel JACOPO ! recopie du « bout » du champ global dans le champ local fin boucle iel

EXRESL (idem EXCHML)

2.3. Organigramme simplifié de la routine ALRSLT#

ALRSLT    (l_champ_out,...)

boucle sur les champs de l_champ_out : chout DETRSD(chout) ! destruction du champ si type(chout)=”CHAM_ELEM” ALCHML(chout) si type(chout)=”RESUELEM” ALRESL(chout) fin si fin boucle chout

! Mise à jour du COMMON CAII07