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