Organigrammes ============= 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. .. code-block:: text CALCUL (...) .. code-block:: text 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 .. code-block:: text DEBCAL ! "Prologue" de la routine CALCUL : ! mise dans des COMMON d'adresses JEVEUX ! "extension" des CARTES IN [:ref:`§2 <§2>`] ! vérifications diverses .. code-block:: text ALRSLT ! Allocations des champs globaux résultats (OUT) ALCHLO ! Allocation des champs locaux .. code-block:: text 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 .. code-block:: text MONTEE ! Pour les volumes finis si calcul parallèle distribué : SDMPIC! Communication MPI Organigrammes simplifiés de la routine EXTRAI --------------------------------------------- .. code-block:: text 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 .. code-block:: text 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) Organigramme simplifié de la routine ALRSLT ------------------------------------------- .. code-block:: text 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