Code_Aster ®
Version
7.4

Titre :

Opérateur RESO_GRAD


Date :
15/02/05
Auteur(s) :
X. DESROCHES Clé
:
U4.55.04-G Page
: 1/6

Organisme(s) : EDF-R&D/AMA















Manuel d'Utilisation
Fascicule U4.5- : Méthodes de résolution
Document : U4.55.04





Opérateur RESO_GRAD






1 But

Résoudre un système linéaire par la méthode du gradient conjugué pré-contionné. Le
préconditionnement s'obtient auparavant par l'opérateur FACT_GRAD [U4.55.03] et est nécessaire
pour obtenir une convergence satisfaisante en un minimum d'itérations.

Opérateur parfois réentrant (dans le cas où on reprend une solution déjà obtenue par RESO_GRAD).

Produit une structure de données de type cham_no_*.


Manuel d'Utilisation
Fascicule U4.5- : Méthodes de résolution
HT-66/05/004/A

Code_Aster ®
Version
7.4

Titre :

Opérateur RESO_GRAD


Date :
15/02/05
Auteur(s) :
X. DESROCHES Clé
:
U4.55.04-G Page
: 2/6


2 Syntaxe


S [cham_no_*] = RESO_GRAD





( reuse
= S,







MATR_ASSE
=
A,
/
[matr_asse_DEPL_R]
/
[matr_asse_TEMP_R]
/
[matr_asse_PRES_R]







CHAM_NO
=
b,
/
[cham_no_DEPL_R]
/
[cham_no_TEMP_R]
/
[cham_no_PRES_R]






CHAM_CINE
=
vcine,
/
[cham_no_DEPL_R]
/
[cham_no_TEMP_R]
/
[cham_no_PRES_R]






MATR_FACT
=
precond,
/
[matr_asse_DEPL_R]
/
[matr_asse_TEMP_R]
/
[matr_asse_PRES_R]






REPRISE
=
/ 'OUI'
,
/
'NON'
,
[DEFAUT]






RESI_RELA
=
/
1.E-6
,
[DEFAUT]
/
resi ,
[R]






NMAX_ITER
=
/
niter
,
[I]
/
0
,
[DEFAUT]






INFO
=
/ 1 ,









/ 2 ,





)





Si CHAM_NO :
[cham_no_DEPL_R]
alors (*)
DEPL_R





[cham_no_TEMP_R]



TEMP_R





[cham_no_PRES_R]



PRES_R

Manuel d'Utilisation
Fascicule U4.5- : Méthodes de résolution
HT-66/05/004/A

Code_Aster ®
Version
7.4

Titre :

Opérateur RESO_GRAD


Date :
15/02/05
Auteur(s) :
X. DESROCHES Clé
:
U4.55.04-G Page
: 3/6


3 Opérandes

3.1 Opérande
MATR_ASSE

MATR_ASSE
= A

Nom de la matrice assemblée du système à résoudre.

3.2 Opérande
CHAM_NO

CHAM_NO
=
b

Nom du cham_no second membre du système.

3.3 Opérande
CHAM_CINE

CHAM_CINE
= vcine

Nom du vecteur représentant la "valeur" des conditions limites de type degré de liberté imposé
traduites sous forme de chargement cinématique (c'est-à-dire par utilisation de la commande
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 (chargement cinématique) associée à la matrice assemblée A.
Cf. [U4.61.03].

3.4 Opérande
MATR_FACT

MATR_FACT
= precond

Matrice de pré-conditionnement, obtenue par l'opérateur FACT_GRAD [U4.55.03]. Le
pré-conditionnement est nécessaire pour obtenir une bonne convergence en un minimum
d'itérations.

3.5 Opérande
REPRISE

REPRISE
=

Indique si l'on est ou non en reprise d'un calcul précédent qui n'aurait pas convergé
suffisamment :

le calcul est initialisé par :

x(0) = 0
vecteur nul si REPRISE = 'NON'

x(0) = S
le cham_no solution 'S' si REPRISE = 'OUI' ; dans ce cas, il faut
indiquer reuse = S.

La valeur par défaut est 'NON'.

3.6 Opérande
RESI_RELA

RESI_RELA
=

Critère de convergence de l'algorithme ; c'est un critère relatif sur le résidu :
rm resi
b
rm est le résidu à l'itération m
b
est le second membre et la norme euclidienne.
La valeur par défaut est 1.E-6.
Manuel d'Utilisation
Fascicule U4.5- : Méthodes de résolution
HT-66/05/004/A

Code_Aster ®
Version
7.4

Titre :

Opérateur RESO_GRAD


Date :
15/02/05
Auteur(s) :
X. DESROCHES Clé
:
U4.55.04-G Page
: 4/6


3.7 Opérande
NMAX_ITER

NMAX_ITER
= niter

Nombre d'itérations maximum de l'algorithme.

Si NITER = 0 alors le nombre maximum d'itérations est calculé comme suit :

niter = nequ/2 où nequ est le nombre d'équations du système.

La valeur par défaut est 0.


3.8 Opérande
INFO

INFO
=

Paramètre d'impression :

1 = rien,
2 =
on imprime le n° de l'itération à laquelle on a atteint le critère de
convergence et la norme du résidu avec un message de convergence.


Manuel d'Utilisation
Fascicule U4.5- : Méthodes de résolution
HT-66/05/004/A

Code_Aster ®
Version
7.4

Titre :

Opérateur RESO_GRAD


Date :
15/02/05
Auteur(s) :
X. DESROCHES Clé
:
U4.55.04-G Page
: 5/6


4
Algorithme du gradient conjugué par LDLT

Soient :

A : la matrice du système à inverser,

C : la matrice de préconditionnement, où D = diag (A),

b : le vecteur second membre du système.


4.1 Initialisation

( )


x o = vecteur nul
si REPRISE : 'NON'

cham_no produit
si REPRISE : 'OUI'

(o)
(o)
r
= Ax
- b

0 = 0.


4.2
Corps de l'algorithme

rm
Pour m = 0 à niter et tant que
resi faire
b

~(m)
(m)
soit résoudre Cr
= r
C
LDLT
=
incomplet,

~(m)
(m)
soit résoudre Dr
=r
D = diag(A)

(m) ~(m)
m = (r , r )

(0)
~(0)
si m = 0 p
= r


(m)
(m)
m
(m -
~

)1
si m > 0 p
= r
+
p


m - 1

(m)
(m)
(r , p )
( )
m =
(

m)
(m)
(p , A.p )

(m+ )1
(m)
(m)
(m)
x
= x
-
p
itéré m + 1

(m+ )1
(m)
(m)
(m)
r
= r
-
Ap
résidu m + 1

Fin pour m
Manuel d'Utilisation
Fascicule U4.5- : Méthodes de résolution
HT-66/05/004/A

Code_Aster ®
Version
7.4

Titre :

Opérateur RESO_GRAD


Date :
15/02/05
Auteur(s) :
X. DESROCHES Clé
:
U4.55.04-G Page
: 6/6


5 Exemple
d'utilisation

nu
= NUME_DDL( MATR_RIGI= mel, METHODE= `GCPC' , RENUM= `SANS',)
matas = ASSE_MATRICE ( MATR_ELEM= mel, NUME_DDL= nu







)
vecas = ASSE_VECTEUR ( VECT_ELEM= vel, NUME_DDL= nu







)
kmatas
= FACT_GRAD
( MATR_ASSE=
matas







)
dep
= RESO_GRAD
( CHAM_NO = vecas , MATR_ASSE=
matas,
MATR_FACT=
kmatas,
NMAX_ITER=
1000
,
RESI_RELA=
1e-07







)



6 Bibliographie

[1]
G.V. PAOLINI & G. RADICATI di BROZOLO - Data structures to vectorize C.G. algorithms for
general sparsity patterns, Bit 29, pp 617-718 (1989).
[2]
J.P. GREGOIRE : Implantation et optimisation de l'algorithme du gradient conjugué
[R6.01.02].

Manuel d'Utilisation
Fascicule U4.5- : Méthodes de résolution
HT-66/05/004/A

Document Outline