Contenu des OJB =============== Objet .REFA ----------- .. code-block:: text .REFA S V K24 dim=20 .REFA(1) = nom du sd_maillage sous-jacent. .REFA(2) = nom du sd_nume_ddl. .. code-block:: text .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 .. code-block:: text .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. .. code-block:: text Objet .VALM ----------- .. code-block:: text .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 [:external:ref:`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.* Objet .CONL ----------- .. code-block:: text .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. Objet .DIGS ----------- .. code-block:: text .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 Objet .PERM ----------- .. code-block:: text .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. 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 [:external:ref:`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.*