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)