u4.55.02 Opérateur RESOUDRE#
Syntaxe#
Détail de la syntaxe
cham_no = RESOUDRE(
◇ reuse = <objet de CHAM_NO>,
◆ MATR = matr_asse_depl_c / matr_asse_depl_r / matr_asse_pres_c / matr_asse_pres_r / matr_asse_temp_c / matr_asse_temp_r,
◆ CHAM_NO = cham_no,
◇ CHAM_CINE = cham_no,
◇ RESI_RELA = float (défaut: 1e-06),
◇ POSTTRAITEMENTS = / "AUTO" (par défaut),
/ "FORCE",
/ "MINI",
/ "SANS",
◇ NMAX_ITER = int (défaut: 0),
◇ MATR_PREC = matr_asse_depl_r / matr_asse_pres_r / matr_asse_temp_r,
◇ ALGORITHME = / "CG",
/ "CR",
/ "FGMRES" (par défaut),
/ "GCR",
/ "GMRES",
◇ TITRE = text,
◇ INFO = / 1,
/ 2,
)
◆ : obligatoire
◇ : optionnel
⟐ : présent par défaut
& : ensemble
/ : un seul parmi
| : plusieurs choix possibles
Généralités#
Cette commande permet de résoudre:
par une méthode directe, le système linéaire \(\mathrm{AX}=B\) , où \(A\) est une matrice préalablement “factorisée” par la commande FACTORISER [U4.51.01.],
par une méthode itérative (GCPC ou PETSC), le système linéaire \({P}^{-1}\mathrm{AX}={P}^{-1}B\) , où \({P}^{-1}\) est une matrice de pré-conditionnement déterminée par la commande FACTORISER [U4.51.01] et \(A\) la matrice assemblée initiale.
La résolution est possible pour des conditions aux limites de Dirichlet (conditions aux limites cinématiques) dualisées ou éliminées [U2.01.02]. Dans ce dernier cas, si le chargement \(\mathrm{X}={\mathrm{X}}_{0}\) sur le «bord» \({\Gamma}_{0}\) est appliqué avec une charge cinématique (opérateur AFFE_CHAR_CINE [U4.44.03]) prise en compte dans la matrice assemblée (opérateur ASSE_MATRICE [U4.61.22]), la «valeur» de ce chargement \(({X}_{0})\) , calculée par l’opérateur CALC_CHAR_CINE [U4.61.03] doit être fournie par le mot clé CHAM_CINE.
Opérandes#
Opérande MATR#
♦ MATR = A,
Nom de la matrice du système à résoudre:
Pour les méthodes directes, on fournit à MATR le concept modifié par l’opérateur FACTORISER; cette matrice peut être réelle ou complexe, symétrique ou non.
Pour les méthodes itératives, on fournit à MATR la matrice initiale. La matrice de pré-conditionnement est à fournir avec le mot-clé MATR_PREC.
Opérande CHAM_NO#
♦ CHAM_NO = B,
Nom du vecteur second membre (en général obtenu par la commande ASSE_VECTEUR).
Opérande CHAM_CINE#
◊ CHAM_CINE = vcine,
Nom du vecteur représentant la «valeur» des conditions aux limites de Dirichlet éliminées (c’est-à-dire appliquées avec une des commandes AFFE_CHAR_CINE ou AFFE_CHAR_CINE_F).
Ce cham_no provient de l’exécution de l’opérateur CALC_CHAR_CINE sur la liste des char_cine (chargements cinématiques) associée à la matrice assemblée A [U2.01.02].
Opérande ALGORITHME#
◊ ALGORITHME = / 'GMRES' [DEFAUT]
/ “CG” / “CR” / “GCR”
Ce mot clé sert à choisir l’algorithme de la méthode itérative PETSC. Les différents algorithmes disponibles sont documentés dans le mot-clé SOLVEUR[U4.50.01].
Opérande MATR_PREC#
◊ MATR_PREC = precond
Matrice de pré-conditionnement, obtenue par l’opérateur FACTORISER [U4.55.01].
Le pré-conditionnement est nécessaire dans les méthodes itératives pour obtenir une bonne convergence avec un minimum d’itérations.
Avec la méthode GCPC, la matrice de pré-conditionnement est une matrice distincte de la matrice du problème (mot clé MATR).
En revanche, avec la méthode PETSC, on utilise la même matrice pour MATR_PREC et MATR, ce qui veut dire que la commande FACTORISER doit être faite «en place» (avec le mot clé reuse). Voir exemple ci-dessous.
Opérande RESI_RELA#
◊ RESI_RELA = / 1.e-6, [DEFAUT]
/ eps , [R]
Ce mot-clé est décrit dans [U4.50.01]
Pour les méthodes itératives GCPC et PETSC, il s’agit du critère de convergence de l’algorithme.
Pour la méthode MUMPS,ce mot-clé permet de vérifier la qualité de la solution.
Opérande NMAX_ITER#
◊ NMAX_ITER = niter
Nombre d’itérations maximum de l’algorithme itératif.
Si niter = 0 alors l’algorithme choisit un nombre d’itérations par défaut.
Opérande TITRE#
◊ TITRE = titr ,
Titre que l’on veut donner au résultat produit [U4.03.01].
Opérande INFO#
◊ INFO =
1: pas d’impression.
2: impressions
Exemples#
Résolution par la méthode directe MULT_FRONT#
Constitution de la matrice assemblée et du second membre :
On a calculé auparavant les termes élémentaires KEL, FEL.
NU =NUME_DDL( MATR_RIGI=KEL ) K =ASSE_MATRICE( MATR_ELEM=KEL, NUME_DDL=NU, ) F =ASSE_VECTEUR( MATR_ELEM=FEL, NUME_DDL=NU, )
Factorisation:
K =FACTORISER( reuse=K, MATR_ASSE=K, METHODE=”MULT_FRONT”,)
Résolution:
U =RESOUDRE( MATR=K, CHAM_NO=F,)
pour l’utilisation des charges cinématiques (avec élimination des degrés de liberté imposés), voir l’exemple donné dans la commande AFFE_CHAR_CINE [U4.44.03].
Résolution par la méthode MUMPS#
NU = NUME_DDL( MATR_RIGI= KEL)
K = ASSE_MATRICE ( MATR_ELEM= KEL, NUME_DDL= NU)
F = ASSE_VECTEUR ( VECT_ELEM= FEL, NUME_DDL= NU )
K = FACTORISER ( reuse= K, MATR_ASSE= K, METHODE= 'MUMPS' )
dep = RESOUDRE ( CHAM_NO = F , MATR= K)
Résolution par la méthode du gradient conjugué pré conditionné#
NU = NUME_DDL( MATR_RIGI= KEL)
K = ASSE_MATRICE ( MATR_ELEM= KEL, NUME_DDL= NU )
F = ASSE_VECTEUR ( VECT_ELEM= FEL, NUME_DDL= NU )
KPREC = FACTORISER ( MATR_ASSE= K, METHODE= 'GCPC',
PRE_COND=”LDLT_INC” )
dep = RESOUDRE ( CHAM_NO = F , MATR= K, MATR_PREC= KPREC,
NMAX_ITER= 1000 , RESI_RELA= 1e-07 )
Résolution par la méthode PETSC#
NU = NUME_DDL( MATR_RIGI= KEL)
K = ASSE_MATRICE ( MATR_ELEM= KEL, NUME_DDL= NU )
F = ASSE_VECTEUR ( VECT_ELEM= FEL, NUME_DDL= NU )
K = FACTORISER ( reuse=K, MATR_ASSE= K, METHODE= 'PETSC')
dep = RESOUDRE ( CHAM_NO = F , MATR= K, MATR_PREC= K,
ALGORITHME=”GMRES”, NMAX_ITER= 1000 , RESI_RELA= 1e-07)