6. Réglages des solveurs non-linéaires#
◇ METHODE =/ "MODELE_REDUIT",
/ "NEWTON" (par défaut),
/ "NEWTON_KRYLOV",
/ "RASPEN",
Le mot-clef METHODE permet de choisir la méthode de résolution du problème incrémental non linéaire.
6.1. Méthodes de Newton#
Quand on choisit “NEWTON”, on utilise l’algorithme de Newton-Raphson pour résoudre le problème (voir [R5.03.01]).
Avec “NEWTON_KRYLOV”, on utilise une version inexacte de l’algorithme de Newton-Raphson ; la précision des résolutions de systèmes linéaires par une méthode itérative est adaptée au cours de chaque pas de chargement.
6.2. Modèle réduit#
Pour METHODE=”MODELE_REDUIT”, on utilise une méthode de réduction de modèle pour faire le calcul non-linéaire (voir [R5.01.05]). Il est nécessaire d’avoir construit une base réduire préalablement (commande [DEFI_BASE_REDUITE]).
Les mots-clefs MATRICE, PREDICTION, REAC_ITER et REAC_INCR ont la même signification et le même usage que dans le mot-clef facteur NEWTON.
Il est nécessaire de fournir une base empirique dans le mot-clef BASE_PRIMAL construite sur les températures (grâce à l’opérateur [DEFI_BASE_REDUITE]). Cette base doit avoir été construite sur le même modèle et le même maillage que le calcul THER_NON_LINE.
La réduction de modèle n’est pas compatible avec les fonctionnalités suivantes:
La recherche linéaire;
Les conditions limites dualisées ([AFFE_CHAR_THER], il faut utiliser [AFFE_CHAR_CINE]).
Il est possible d’activer l’hyper-réduction qui utilise une méthode de type DEIM avec DOMAINE_REDUIT = “OUI”. Dans ce cas, le calcul est réduit sur une zone du maillage restreinte (appelée RID) et construite à l’aide de l’opérateur [DEFI_DOMAINE_REDUIT]. Il faut donner le groupe de noeuds sur lequel est défini l’interface à l’aide du mot-clef GROUP_NO_INTERF.
6.3. Méthode RASPEN#
La méthode RASPEN est fondée sur une méthode de décomposition de domaine non-linéaire. Elle est uniquement utilisable dans le contexte HPC. Elle s’appuie sur 2 niveaux de solveurs non-linéaires :
un niveau local, où un problème non-linéaire est résolu sur chaque sous-domaine, sans communication avec ses voisins et donc de manière parallèle et asynchrone ;
un niveau global, qui exploite les résolutions locales précédentes pour faciliter la résolution du problème considéré.
Comme pour la méthode SNES, le paramétrage se fait par une liste d’options transmises sous forme de chaines de caractères par le mot-clé OPTION_PETSC du mot-clé facteur SOLVEUR. Les options qui concernent le solveur local sont préfixées par lsnes_ tandis que les options qui concernent le solveur global sont préfixées par gsnes_.
On peut commodemment définir ces options comme suit :
myOptions = (
# local snes
"-prefix_push lsnes_ "
+ "-snes_monitor -snes_linesearch_type basic -snes_rtol 1.e-8 -snes_atol 1.e-50 -snes_max_it 5 "
+ "-ksp_type preonly -pc_type lu -pc_factor_mat_solver_type mumps "
+ "-prefix_pop "
# global snes
+ "-prefix_push gsnes_ "
+ "-snes_linesearch_type basic -ksp_monitor -ksp_rtol 1.e-7 -ksp_atol 1.e-50 -snes_max_it 20 "
+ "-prefix_pop "
)
La première ligne exprime le fait que l’on va paramétrer le solveur non-linéaire local à chaque sous-domaine appelé « lsnes » (« l » pour local, « snes » pour Scalable Nonlinear Equations Solvers). Ensuite, on exprime que l’on veut monitorer le solveur non linéaire local qui est par défaut la méthode de Newton ; on précise que la recherche linéaire n’est pas utilisée (basic signifie que l’on utilise un pas de 1.) et on donne les critères de convergence relatif et absolu ainsi que le nombre maximal d’itérations. Ensuite on exprime que l’on souhaite utiliser le solveur MUMPS pour résoudre les problèmes linéarisés. On fait ensuite de même pour le solveur non-linéaire global appelé « gsnes ».
Pour toute précision, le lecteur est renvoyé vers [bib2]. Son usage est réservé aux utilisateurs avancés.