3. Contenu des OJB#

3.1. Objet .REFA#

.REFA    S V K24 dim=20

.REFA(1) = nom du sd_maillage sous-jacent.

.REFA(2) = nom du sd_nume_ddl.


.REFA(3) = “ “ / “ELIMF” / “ELIML”

“ “ : Il n’existe pas de charges cinématiques.

“ELIMF”: Il existe des charges cinématiques.

Une partie du .VALMa été copiée dans .CCVA

.VALMa été partiellement remplacé par une matrice unité (sur les ddls éliminés)

“ELIML” : Il existe des charges cinématiques.

.CCVA n’a pas encore été créé

.VALM n’a pas encore été recopié dans .CCVA

voir mtmchc.f pour les détails


.REFA(4) = nom de l’OPTION de calcul (ou bien la chaine: “&&MELANGE”).

.REFA(5) = “ “

.REFA(6) = “ “

.REFA(7) = “ “ / nomsolv

nomsolv : nom du solveur à utiliser (par défaut) lors des résolutions.

.REFA(8) = “ “ / “ASSE” / “DECT” / “DECP”

“ “ ou “ASSE” : matrice dans son état initial (non factorisée)

“DECT” : matrice entièrement factorisée

“DEPT” : matrice partiellement factorisée (possible uniquement si LDLT)

.REFA(9) = “MS” / “MR”

“MS” : matrice symétrique

“MR” : matrice non-symétrique

.REFA(10) = / “NOEU”: les ddls de la matrice sont portés par des nœuds

/ “GENE”: les ddls de la matrice sont des ddls généralisés.

.REFA(11) = “MPI_COMPLET” / “MPI_INCOMPLET” / “MATR_DISTR”

“MPI_COMPLET” : Les objets .VALM (et .CCVA) sont « complets »

“MPI_INCOMPLET” : Les objets .VALM (et .CCVA) sont « incomplets » du fait d’un calcul MPI distribué. Chaque processeur n’assemble que les éléments finis qui lui sont affectés.

“MATR_DISTR” : Si MATR_DISTRIBUEE=”OUI”

Cette option dimensionne au plus juste la matrice assemblée en fonction du nombre d’inconnues présentes sur le processeur courant.

Remarque :

si “ MPI_INCOMPLET” , les objets .VALM et .CCVA sont alloués à leur taille normale, mais ils sont partiellement remplis de « 0 » . si “ MATR_DISTR” , l’objet .VALM est cette fois d’une taille plus petite que dans le cas “MPI_INCOMPLET” .

.REFA(17) = “ “ / “XFEM_PRECOND”

“ “ : Aucun pré-conditionneur XFEM n’a été appliqué à la matrice. La résolution se poursuit sans traitement particulier, relatif au pré-conditionnement XFEM.

“XFEM_PRECOND” : La matrice a été modifiée à l’aide du pré-conditionneur XFEM. Il faut prendre en compte cette modification dans la suite du calcul.

Remarque :

Si la matrice est modifiée par le pré-conditionneur XFEM, cela implique, qu’il y a au moins un objet pré-conditionneur stocké en mémoire. Cet objet est utile pour la suite du calcul (pour la modification du second membre et de la solution).

.REFA(18) = “ “ / “&&XFEM_PC_1”

“ “ : Aucun pré-conditionneur XFEM n’est stocké.

“&&XFEM_PC_1” : Le pré-conditionneur XFEM est stocké dans un emplacement «JEVEU» fixe .

Concernant le format de stockage de l’objet «JEVEU», la matrice de pré-conditionnement est stockée dans une nouvelle sd_matr_asse. On génère un nouvel .VALM (non-symétrique) et un nouveau NUME_DDL respectant la numérotation des équations de la matrice initiale. La gestion de l’objet pré-conditionneur XFEM s’effectue comme une «sd_matr_asse» classique, décrite dans ce document.

Remarque :

Même si l’adresse du pré-conditionneur est stockée dans le . REFA de la matrice originale, il n’existe pas de chaînage des adresses «sd_matr_asse». En effet, l’adresse du pré-conditionneur est fixe et on n’a pas besoin de connaître l’adresse de la matr_asse pour tester l’existence d’un pré-conditionneur, ce qui simplifie la gestion en mémoire de ces deux objets interdépendants.

Par ailleurs, comme le pré-conditionneur XFEM n’est effectif qu’en calcul séquentiel, l’application réciproque de l’adresse d’un pré-conditionneur vers la matr_asse originale n’est pas construite pour le moment.

.REFA(19) = matred / “ “

Nom de la matrice «réduite» obtenue en supprimant les équations de Lagrange (fonctionnalité SOLVEUR / ELIM_LAGR=”OUI”).On parle aussi de matrice «fille»

.REFA(20) = matmere / “ “

Nom de la matrice «mère» de la matrice si celle-ci a été obtenue en supprimant les équations de Lagrange de matmere (fonctionnalité SOLVEUR / ELIM_LAGR=”OUI”).

DOCU(“.REFA”) = / “ASSE” matrice initiale,

/ “DECT” matrice complètement factorisée,

/ “DECP” matrice partiellement factorisée.


3.2. Objet .VALM#

.VALM    XD V R/C NUM()

Cet objet contient les valeurs des termes non nuls de la matrice (au format Morse). Il y a 1 (ou 2) élément(s) dans cette collection (2 si la matrice est non symétrique).

Le 1er élément de la collection contient la partie supérieure de la matrice,

Le 2ème contient la partie inférieure.

Remarques :

** Pour les matrices non-symétriques, la diagonale est donc stockée 2 fois;*

On convient de n’utiliser que la diagonale stockée dans la partie supérieure (VALM(1));

** L’arrangement des termes de la matrice dans les blocs est expliqué dans la documentation*

de la sd_stockage [D4.06.07];

** Même si la matrice n’est pas symétrique, son profil (mapping des termes non nuls) reste symétrique. Un seul profil s’applique donc sur ses deux parties supérieure et inférieure.*

3.3. Objet .CONL#

.CONL S V R dim=neq

neq est le nombre d’équations du système

Cet objet facultatif n’est présent que si il existe au moins un ddl de type “LAGR” :

V(ieq) = csi ieq correspond à un DDL nommé “LAGR”,

1.sinon.

c est le coefficient de conditionnement des ddls de Lagrange.

3.4. Objet .DIGS#

.DIGS    S V R/C dim=2*neq

neq est le nombre d’équations du système

Cet objet n’est présent que si la matrice a été factorisée par “LDLT” ou “MULT_FRONT”

DIGS(1:neq) : valeurs de la diagonale de la matrice initiale

DIGS(neq+1:2*neq) : valeurs de la diagonale de la matrice factorisée

3.5. Objet .PERM#

.PERM    S V I dim=neq

neq est le nombre d’équations du système

Cet objet n’est présent que si la matrice est le résultat du pré-conditionnement par “GCPC” + “LDLT_INC” d’une autre matrice. Il sert à établir la correspondance entre la numérotation des équations dans la matrice initiale et sa matrice de pré-conditionnement. En effet, la matrice de pré-conditionnement a été renumérotée avec l’algorithme “RCMK” (Reverse CUTHILL - Mc KEE)

Soit: B=FACTORISER(MATR_ASSE=A, METHODE=”GCPC”, PRE_COND=”LDLT_INC”)

PERM(ieq_A) : ieq_B

où ieq_A et ieq_B sont les numéros d’équations dans les matrices A et B.

Cet objet a le même contenu que l’objet .M2LC de la sd_stockage.

3.6. Objets .UALF, .VALF, .WALF#

Ces collections contiennent les termes de la matrice factorisée.

.UALF contient la matrice factorisée avec LDLT:

symétrique : collection de taille nblocs

non-symétrique : collection de taille 2*nblocs

.VALF contient la matrice factorisée avec MULT_FRONT de la partie supérieure

.WALF contient la matrice factorisée avec MULT_FRONT de la partie inférieure

Remarques :

** L’arrangement des termes de la matrice dans les blocs est expliqué dans la documentation*

de la sd_stockage [D4.06.07];

** Pour le stockage LDLT (* .UALF ), le nombre de blocs est doublé en cas d’une matrice non symétrique. Les nblocs premiers correspondent aux valeurs associées à la partie supérieure de la matrice tandis que les derniers nblocs correspondent à la partie inférieure de la matrice.

** Même si la matrice n’est pas symétrique, son profil (mapping des termes non nuls) reste symétrique. Un seul profil s’applique donc sur ses deux parties supérieure et inférieure.*