C.4 Problèmes de convergence ? Symptômes et solutions
C.4 Problèmes de convergence ? Symptômes et solutions
À la différence des calculs d’élasticité linéaire, les calculs non-linéaires peuvent effectuer des itérations apparemment indéfiniment, sans jamais vérifier le critère d’arrêt ; mais ils peuvent aussi s’interrompre brutalement à un incrément de chargement donné (au-delà du premier), avec signalement d’un « pivot nul ».
Examinons les causes de ces types d’échec.
1) Non-convergence des itérations
Ce phénomène est presque toujours une conséquence directe de l’inadéquation de la méthode itérative utilisée : le problème à résoudre ne vérifie certainement pas les conditions mathématiques qui assurent sa convergence (opérateur non-contractant, opérateur non-positif, opérateur non convexe, restrictions insuffisantes de l’intervalle dans lequel on recherche la solution, etc.).
Il peut arriver, il est vrai, que ce phénomène résulte d’une accumulation d’erreurs d’arrondis numériques, imputables à la programmation elle-même du code de calcul ; ce n’est toutefois pas souvent le cas.
L’examen des résidus au fil des itérations peut renseigner sur la nature du problème :
-
les résidus tendent bien vers 0, mais de plus en plus lentement. Ce comportement traduit un maillage inadapté au calcul de l’équilibre : c’est le cas dans les phénomènes de localisation, où les non-linéarités se concentrent dans certaines parties de la structure. Dans ce cas, il vaut mieux reprendre le calcul en réfléchissant à un maillage mieux adapté au mécanisme de la structure.
-
les résidus deviennent de plus en plus grands. C’est l’instabilité caractéristique : il n’existe plus, pour cette structure, d’état d’équilibre à ce niveau de chargement.
Les résidus, à partir d’un certain stade, remontent brutalement à une certaine valeur, puis reprennent leur décroissance, etc. Ce comportement survient lorsque l’algorithme tombe sur plusieurs solutions également viables sans autre précision : il converge vers l’une de ces solutions, puis « rebondit » vers une autre. Autrement dit, sans que l’on en ait conscience, il existe plusieurs équilibres possibles !
2) Arrêt brutal
L’arrêt brutal du programme dans un calcul non-linéaire se signale souvent par un « pivot nul » lors de la résolution d’un système linéaire. Cette expression renvoie au « pivot de Gauss », qui est l’algorithme utilisé (aux variantes près) pour résoudre les systèmes linéaires. On a vu plus haut, en effet, que la plupart des algorithmes itératifs remplacent le problème à résoudre par un système linéaire.
Cette situation correspond à une structure devenue instable : en élastoplasticité ou en endommagement, cela signifie que la structure a perdu toute cohésion, aux arrondis de calcul près ; dans les problèmes de grands déplacements ou de contact, cela traduit l’apparition d’un mécanisme, c’est-à-dire la possibilité d’un mouvement de corps rigide : tous les nœuds d’interface sont glissants, et les appuis fixes sont en nombre insuffisant pour obtenir un équilibre.
Il arrive aussi que le programme s’interrompe pour des raisons n’ayant aucun rapport avec l’état de la structure : débordement d’espace-disque, voire bug de programmation. Le premier cas est simple à écarter.
3) Quand rien ne marche
Si un calcul non-linéaire ne converge pas, et que l’on n’a pas trouvé dans les explications ci-dessus d’indications utiles, il y a lieu de passer attentivement en revue les questions suivantes :
-
l’état initial de votre calcul est-il bien un état d’équilibre élastique ?
-
le maillage est-il adapté à la question posée ? Le pas de maillage est-il suffisamment fin dans les zones où les déformations plastiques se localisent ? Les mailles ne sont-elles pas trop déformées ?
-
votre modèle mélange-t-il des éléments massifs et des éléments de structure (poutres, plaques, voire coques) ? Les zones plastifiées / endommagées de la structure affectent-t-elle des nœuds communs à ces éléments de type RdM ?
-
les éléments finis sont-ils adaptés au problème ? N’y a-t-il pas d’oscillations des contraintes ?