.. _u4.51.03-conv: Réglages de la convergence ========================== .. code-block:: text ⟐ CONVERGENCE = _F( # Si: exists("RESI_REFE_RELA") ◆ | EFFORT_REFE = float, | SIGM_REFE = float, | EPSI_REFE = float, | FLUX_THER_REFE = float, | MOMENT_REFE = float, | FLUX_HYD1_REFE = float, | FLUX_HYD2_REFE = float, | VARI_REFE = float, | DEPL_REFE = float, | LAGR_REFE = float, | PI_REFE = float, ◆ | RESI_REFE_RELA = float, | RESI_GLOB_MAXI = float, | RESI_GLOB_RELA = float, ◇ / RESI_COMP_RELA = float, ◇ ITER_GLOB_MAXI = int (défaut: 10), ◇ ITER_GLOB_ELAS = int (défaut: 25), ◇ ARRET = / "NON", / "OUI" (par défaut), ◇ VERIF = / "AU_MOINS_UN", / "TOUT" (par défaut), ), Le mot-clé facteur CONVERGENCE permet de contrôler les paramètres de convergence du calcul. Quand VERIF="TOUT", tous les critères de convergence activés (RESI_GLOB_RELA, RESI_GLOB_MAXI, RESI_REFE_RELA et RESI_COMP_RELA) sont vérifiés simultanément, quand VERIF="AU_MOINS_UN", un seul des critères activés suffit pour établir la convergence Il convient d'être très prudent dans l'usage de VERIF = "AU_MOINS_UN" car si' l'un des critères est très relâché, cela peut conduire à des **résultats faux** . Critères de convergence standards --------------------------------- Il existe plusieurs critères de convergence: les deux plus courants sont RESI_GLOB_RELA en relatif et RESI_GLOB_MAXI en absolu. Si on ne renseigne rien, alors tout se passe comme si RESI_GLOB_RELA = 1.E-6. Pour RESI_GLOB_MAXI=:math:`\varepsilon_{max}`, l'algorithme continue les itérations globales tant que .. math:: \underset{i=1, \dots , \mathrm{nbddl}}{\max} {F}^{n} > \varepsilon_{max} où :math:`{F}^{n}` est le résidu de l'itération :math:`{n}` (Cf. [:ref:`R5.03.01 `] pour plus de détails). Si cet opérande est absent, le test n'est pas effectué. Pour RESI_GLOB_RELA=:math:`\varepsilon_{rel}`, l'algorithme continue les itérations globales tant que .. math:: \underset{i=1, \dots , \mathrm{nbddl}}{\max} {F}^{n} > \varepsilon_{rel} . {\max} L où :math:`L` est le vecteur du chargement imposé et des réactions d'appuis (Cf. [:ref:`R5.03.01 `] pour plus de détails). Lorsque le chargement et les réactions d'appui deviennent nuls, c'est-à-dire lorsque :math:`L` est nul (par exemple dans le cas d'une décharge totale), RESI_GLOB_RELA est affiché à -1, et on essaie de passer du critère de convergence relatif RESI_GLOB_RELA au critère de convergence absolu RESI_GLOB_MAXI. Cette opération est transparente pour l'utilisateur (message d'alarme émis dans le fichier .mess). Lorsque le vecteur :math:`L` redevient différent de zéro, on repasse automatiquement au critère de convergence relatif RESI_GLOB_RELA. Toutefois, ce mécanisme de basculement ne peut pas fonctionner au premier pas de temps. En effet, pour trouver une valeur de RESI_GLOB_MAXI raisonnable de manière automatique (puisque l'utilisateur ne l'a pas renseigné), on a besoin d'avoir eu au moins un pas convergé sur un mode RESI_GLOB_RELA . Dès lors, si le chargement est nul dès le premier instant, le calcul s'arrête. L'utilisateur doit déjà alors vérifier que le chargement nul est normal du point de vue de la modélisation qu'il réalise, et si tel est le cas, trouver un autre critère de convergence (RESI_GLOB_MAXI par exemple). Si RESI_GLOB_RELA et RESI_GLOB_MAXI sont présents tous les deux, les deux tests sont effectués. Critères de convergence avancés ------------------------------- Le critère RESI_COMP_RELA=:math:`\varepsilon_{cmp}` conduit à estimer la convergence de l'algorithme de Newton en raisonnant composante par composante. Pour cela, on distingue dans le vecteur résidu les sous-vecteurs correspondant à chaque composante :math:`\mathrm{cmp}` (par exemple en THM, :math:`\mathrm{cmp}=\left\lbrace \mathrm{DX},\mathrm{DY},\mathrm{DZ},\mathrm{PRE1},\mathrm{PRE2},\mathrm{TEMP}\right\rbrace` ). On norme ensuite ces sous-vecteurs par la force interne correspondante. Ainsi, l'algorithme continue les itérations globales tant que .. math:: \underset{c=1, \dots ,\mathit{nbcmp}}{max}(\frac{\underset{i=1, \dots ,\mathit{nbddl}}{max}\mid {F}_{i}^{c,n}\mid }{\underset{i=1, \dots ,\mathit{nbddl}}{max}\mid {L}_{i}^{int,c,n}\mid })>\varepsilon_{cmp} où :math:`{F}^{c,n}` est la partie du résidu :math:`{F}^{n}` correspondant à la composante :math:`c` et :math:`{L}^{int,c,n}` le vecteur des forces internes au temps :math:`n` correspondant à cette même composante :math:`c` (Cf. [:ref:`R5.03.01 `] pour plus de détails). Les forces internes au temps :math:`n` sont calculées en début de pas de temps à partir du résultat issu du pas de temps précédent. Pour le premier pas de temps, on passe automatiquement à un critère relatif de type RESI_GLOB_RELA, voir à un critère absolu pour les cas où le chargement est nul. Ce critère n'a d'intérêt que pour des problèmes de type évolutif (THM) où résident de forts contrastes entre les différentes inconnues. Le critère RESI_REFE_RELA=:math:`\varepsilon_{refe}` conduit à estimer la convergence de l'algorithme de Newton de la manière suivante. A partir d'une référence, qui peut être: * Une contrainte SIGM_REFE * Une déformation EPSI_REFE pour des éléments incompressibles, des éléments de grille et de membrane; * Une variable interne VARI_REFE si l'on utilise des lois non locales à gradient de déformation; * Un flux thermique FLUX_THER_REFE dans un cas THM; * Deux flux hydriques FLUX_HYD1_REFE et FLUX_HYD2_REFE dans un cas HHM; * Un déplacement DEPL_REFE si on utilise des éléments de joint avec un comportement de type CZM; * Une force EFFORT_REFE et un moment MOMENT_REFE si on utilise des éléments de structure (discrets, barres, poutres ou câbles); * Une force linéique EFFORT_REFE et un moment linéique MOMENT_REFE si on utilise des éléments de structure 2D (plaques et coques); On calcule une référence de résidu :math:`{F}^{\mathit{ref}}` (un vecteur de même longueur que le vecteur résidu). La convergence sera réalisée si et seulement si: .. math:: \forall i \in [1, \dots, \mathit{nbddl} ] \mid {F}_{i}^{n}\mid < \varepsilon_{refe} \, {F}_{i}^{\mathit{ref}} EFFORT_REFE et MOMENT_REFE n’attendant pas des valeurs de même dimension pour les éléments de structure 1D et 2D, il est fortement déconseillé d’utiliser ce critère de convergence sur un modèle comportant ces deux types d’élément. Gestion des itérations ---------------------- Le mot-clef ITER_GLOB_MAXI donne le nombre d'itérations maximum effectué pour résoudre le problème global à chaque instant. L'augmentation excessive de ce paramètre est généralement le signe d'un problème dans la modélisation ou d'une discrétisation temporelle inadéquate. Ce test est toujours effectué sauf dans le cas du redécoupage du pas de temps par la méthode 'EXTRAPOLE'. Dans le cas de la résolution d'un problème de contact/frottement par la formulation CONTINUE en Newton généralisé, il est souvent nécessaire d'augmenter le nombre d'itérations de Newton au-delà de sa valeur par défaut. Le mot-clef ITER_GLOB_ELAS fixe le Nombre d'itérations maximum effectué avec la matrice élastique lorsqu'on utilise le mot clé PAS_MINI_ELAS du mot clé facteur NEWTON pour résoudre le problème global à chaque instant. On rappelle que PAS_MINI_ELAS permet de passer de la matrice tangente à la matrice élastique lorsque le pas de temps est ou devient (par le redécoupage) inférieur à une certaine valeur précisée sous PAS_MINI_ELAS. Contrairement à ITER_GLOB_MAXI, ce paramètre peut facilement prendre des grandes valeurs (plusieurs centaines) car la convergence sur un problème non-linéaire avec la matrice élastique (très raide) est lente bien qu'assurée du point de vue théorique pour toutes les lois décrivant les matériaux standards généralisés. Gestion de l'arrêt ------------------ Si un des critères de convergence globale choisis n'est pas vérifié après le nombre maximal d'itérations, alors le calcul s'arrête (les résultats précédents sont sauvegardés). Il est néanmoins possible de continuer le calcul en utilisant ARRET='NON'. .. warning:: Cette possibilité est à réserver à des cas très particuliers car elle donne des résultats faux.