4. Algorithme général#

Le processus est standardisé au maximum, pour chaque niveau de boucle:

  • Évaluation de la convergence par appel aux routines nmcvg* ;

  • Action suite à la situation de la boucle par appel aux routines nmact* ;

4.1. Lectures et initialisations globales#

La routine op0070 gère l’algorithme global et se découpe en trois parties:

  • Lecture et initialisations des données;

  • Boucle sur les pas de temps;

  • Post-traitements;

  • Gestion des erreurs globales;

  • Archivage;

Pour la lecture et l’initialisation des données, on se reportera en particulier aux informations relatives à la gestion des SD (§ 2 ). L’ensemble des initialisations faites à ce niveau sera valable pour tout le calcul. La routine principale d’initialisation est nminit. Voici les opérations prévues dans cette routine:

Opérations d’initialisations dans nminit

Routine

Création du profil de la matrice et de la SDNUME

nmnume

Création des variables-chapeaux

nmchap

Création du vecteur des fonctionnalité activées list_func_acti

nmfonc

Création des vecteurs dans les variables-chapeaux

nmcrch

Création de la structure de données pilotage

nmdopi

Duplication NUME_DDLpour SDNUME

nmpro2

Préparation de la carte COMPOR(transformation en CHAM_ELEM_S)

nmdoco

Création de SDDISCet SDOBSE

diinit

Initialisation des variables de commande

nmcrvv

Pré-calcul des MATR_ELEM constants au cours du calcul

nminmc

Pré-calcul des VECT_ELEM et VECT_ASSE constants au cours du calcul

nminvc

Création de la SDCRIT

nmcrcv

Initialisation du calcul par sous-structuration

nmlssv

Création de la SD pour le chargement FORCE_SOL

nmexso

Calcul de l’accélération initiale

accel0

Créationde la SDCONV

nmcrcg

Initialisation de NL_DS_Print

nminim

Pré-calcul des MATR_ASSE constants au cours du calcul

nminma

Réalisation d’une observation initiale

nmobsv

Création de la SD RESULTAT( EVOL_NOLI)

nmnoli

Création de la table des grandeurs (pour ERRE_THM)

cetule

Calcul du second membres initial pour les schémas multi-pas en dynamique

nmihht

L’algorithme général de op0070 est résumé sur l’organigramme ().

_images/1000000000000528000003FC0C11073C27862A61.png

Figure 1: Organigramme général de op0070

4.2. Réalisation d’un pas de temps#

Un pas de temps utilise plusieurs niveaux de boucles imbriqués:

  • Des boucles de point fixe, utilisées exclusivement pour le contact (jusqu’à trois niveaux de boucle);

  • Une boucle sur les itérations de Newton. Un processus de Newton contient une prédiction d’Euler et des corrections de Newton;

L’algorithme général de nmnewt est résumé sur l’organigramme ().

_images/1000000000000528000003FC32EECCD9D0DFCF15.png

Figure 2: Organigramme général de nmnewt

4.2.1. Initialisations du pas#

Chaque pas de temps est initialisé par une série de routines:

  • Les routines nmeraz, nmevr0 s’occupent d’initialiser la gestion des événements;

  • La routine nmdcin vérifie que la découpe du pas de temps est correcte (contrôle du nombre de niveau de découpe d’un pas de temps à l’autre);

La routine la plus importante est la routine nmnpas . Elle réalise les opérations suivantes:

  • Les routines nmimr0 et nminin initialisent l’affichage, en particulier le tableau de convergence (ce qui permet de faire varier la nature de celui-ci d’un pas de temps à l’autre);

  • La routine nmvcre prépare les variables de commande pour le pas de temps courant;

  • On initialise à zéro l’incrément de déplacement cumulé depuis le début du pas de temps (vecteur DEPDEL , voir § 2.4.1.6 ). Attention l’initialisation est spéciale à cause de la prise en compte des grandes rotations;

  • On initialise toutes les données pour la dynamique, en particulier les différents coefficients (voir § 2.4.2.17 ) dans ndnpas;

  • On initialise différentes informations pour Newton-Krylov et le contact (routines cfinit , mmapin et nmnkft);

4.2.2. Prédiction d’Euler#

La prédiction d’Euler est une estimation de l’incrément de déplacement en linéarisant le problème par rapport au temps. Il existe plusieurs méthodes et plusieurs types de matrice utilisables. Le calcul proprement dit est réalisé dans la routine nmpred (et ses -jolies- filles), au moyen des principes établis dans le § 5 .

4.2.3. Mise à jour des champs#

La mise à jour des champs est réalisée dans la routine nmdepl. Cette mise à jour consiste à modifier les vecteurs solutions (déplacements, vitesses et accélérations), en prenant en compte éventuellement:

  • La recherche linéaire sans pilotage;

  • La recherche de \(\eta\) pour le pilotage avec ou sans recherche linéaire;

  • Le contact (formulation discrète) ou les liaisons unilatérales;

Voici les phases:

  1. Recalcul des efforts extérieurs, routine nmfext;

  2. Conversion des incréments de solution DEPSO1 et DEPSO2 (voir § 2.4.1.6 ), issus de la résolution du système linéaire, vers les incréments en déplacement/vitesse/accélération (prise en compte des coefficients de changement de schéma), via la routine nmincr;

  3. Calcul recherche linéaire et pilotage, routines nmreli, nmpich et nmrepl;

  4. Mise à jour de la direction de descente (prise en compte des coefficients issus de la recherche linéaire et du pilotage), routine nmpild;

  5. Modification des déplacements par le contact et les liaisons unilatérales , par la routine nmcoun;

  1. Actualisation des champs de solutions dans nmmajc;

La phase 4.2.3 consiste à mettre à jour les champs «plus» (DEPPLU, VITPLU, ACCPLU) et les champs cumulés (DEPDEL, VITDEL, ACCDEL), en prenant en compte les éventuelles grandes rotations (mise à jour des quaternions) et de l’endommagement aux nœuds.

4.2.4. Forces de correction#

Puisque les déplacements ont été modifiés (voir § 4.2.3 ), il est nécessaire de ré-évaluer les forces variables: soit les forces extérieures de type «suiveuse», soit les forces intérieures et les réactions de contact/frottement, soit les forces liées à la dynamique (inertie, amortissement). L’ensemble est réalisé dans la routine nmfcor.

4.2.5. Estimation de la convergence#

L’estimation de la convergence de Newton est un moment critique, qui va conditionner la justesse du calcul. L’ensemble de l’estimation est réalisé dans la routine nmconv . Cette routine s’occupe du calcul des résidus (nmresi), de l’estimation de leur convergence (nmcore). C’est donc dans cette routine qu’on va traiter la boucle <RESI> sur les résidus d’équilibre. Mais on doit aussi prendre en compte le nombre d’itérations de Newton, le cas de la convergence du contact (formulations discrète ou continue), de la méthode de De Borst ou de la méthode IMPLEX.

Remarque:

Il convient d’être très prudent dans la modification de cette routine.

4.2.6. Correction de Newton#

Si le processus n’a pas convergé, on procède au calcul d’une correction de Newton. On réalise donc le calcul d’un système linéaire (voir § 5 ) dans la routine nmdesc (comme direction de desc ente).

4.2.7. Boucle sur les points fixes#

Il existe trois boucles dite «de point fixe» entre la boucle sur les pas de temps et la boucle sur les itérations de Newton. Ces boucles sont utilisés pour le contact:

  1. Boucle de point fixe sur la géométrie;

  2. Boucle de point fixe sur les seuils de frottement;

  3. Boucle de point fixe sur les statuts de contact;

Ces trois boucles sont gérées par le duo de routine nmible/nmtble, via le passage de la variable NIVEAU, qui indique dans quel type de boucle de point fixe on se trouve actuellement.