6. L’objet STOCKAGE#

Les matrices creuses de Code_Aster ont toutes une structure symétrique:si a(i,j) existe, alors a(j,i) existe également.

Pour une matrice symétrique creuse, on ne stocke que sa partie “supérieure” (a(i,j) pour j≥i). La structure de données STOCKAGE décrit comment sont stockés les termes non nuls de la partie supérieure de matrice.

Pour une matrice non symétrique, on stocke la partie supérieure et la partie inférieure. Comme ces 2 parties ont la même structure (à une transposition près), le stockage de la partie supérieure suffit.

Remarque :

Bien que théoriquement, les termes non nuls d’une matrice puissent être disposés de façon quelconque, Le remplissage des matrices de Code_Aster est tel que tous les DDLs portés par un nœud sont connectés à tous les DDLs portés par les autres nœuds jouxtant ce nœud via un élément fini. La matrice est donc formée de petits rectangles pleins correspondant à la connectivité des nœuds du modèle. En particulier, il existe des petits blocs sur toute la diagonale de la matrice.

6.1. L’objet STOC_LIGN_CIEL#

Pour le stockage en ligne de ciel, les objets sont les suivants:

STOC_LCIEL(K19) ::=record

♦ .SCBL OJB S V I ♦ .SCDI OJB S V I ♦ .SCDE OJB S V I ♦ .SCHC OJB S V I ♦ .SCIB OJB S V I ◊ .M2LC OJB S V I ◊ .LC2M OJB S V I

.SCDE

S V I dim=4

(1) (2) (3) (4)

nombre d’équations neq taille des blocs de la matrice t_bloc nombre de blocs nécessaire au stockage des valeurs de la matrice n_bloc hauteur maximum des colonnes de la matrice

.SCHC

S V I dim=neq

hauteur de la ièmecolonne

.SCDI

S V I dim=neq

adresse du terme diagonal de la ièmecolonne dans son bloc

.SCBL

S V I dim=n_bloc+1

(1) (K+1)

0numéro de la dernière colonne du bloc K remarque: une colonne ne peut appartenir qu’à un seul bloc

.SCIB

S V I dim=neq

numéro du bloc qui contient la ièmecolonne de la matrice

.M2LC

S V I dim=neq

ieq_m

ieq_lc: donne la correspondance entre la numérotation du stockage «Morse» (ieq_m) et la numérotation du stockage «ligne de ciel» (ieq_lc)

.LC2M

S V I dim=neq

ieq_lc

ieq_m: donne la correspondance entre la numérotation du stockage «ligne de ciel» (ieq_lc) et la numérotation du stockage «Morse» (ieq_m)

Exemple :

_images/10000000000000B4000000B3344270AB926A7FFB.gif
SCDI(1) = 1 SCDI(6) = 17

SCDI(2) = 3 SCDI(7) = 22

SCDI(3) = 4 SCDI(8) = 6

SCDI(4) = 6 SCDI(9) = 11

SCDI(5) = 11 SCDI(10) = 17


SCHC(1) = 1 SCHC(6) = 6

SCHC(2) = 2 SCHC(7) = 5

SCHC(3) = 1 SCHC(8) = 6

SCHC(4) = 2 SCHC(9) = 5

SCHC(5) = 5 SCHC(10) = 6


SCBL(1) = 0 SCIB(1 à 7) = 1

SCBL(2) = 7 SCIB(7 à 10) = 2

SCBL(3) = 10

6.2. L’objet STOC_MORSE#

Pour le stockage morse, les objets sont les suivants:

STOC_MORSE(K19) ::=record

♦ .SMDI OJB S V I ♦ .SMDE OJB S V I ♦ .SMHC OJB S V I

.SMDE

S V I dim=3

(1) (2) (3)

nombre d’équations neq nombre de termes stockés dans la demi-matrice n_termes nombre de bloc 1

.SMHC

S V I dim=n_termes

numéro de ligne du ièmeterme stocké

.SMDI

S V I dim=neq

adresse du terme diagonal de la ièmecolonne dans le bloc Il faut donc que tous les termes diagonaux soient stockés dans la matrice

Exemple :

_images/10000000000000D3000000A31111E24FEC3BCC9B.gif
SMDI(1) = 1 SMDI(6) = 13

SMDI(2) = 3 SMDI(7) = 18

SMDI(3) = 4 SMDI(8) = 24

SMDI(4) = 6 SMDI(9) = 27

SMDI(5) = 9 SMDI(10) = 31


SMHC(1) = 1

SMHC(2) = 1

SMHC(3) = 2

SMHC(4) = 3

SMHC(5) = 3

SMHC(6) = 4

SMHC(7) = 1

SMHC(8) = 2

SMHC(9) = 5

...

SMHC(28) = 5

SMHC(29) = 6

SMHC(30) = 9

SMHC(31) = 10

6.3. L’objet MULT_FRONT#

Pour le stockage MULT_FRONT., les objets sont les suivants:

MULT_FRONT (K19) ::=record

♦ .ADNT OJB S V I4 ♦ .GLOB OJB S V I4 ♦ .LOCL OJB S V I4 ♦ .PNTI OJB S V I4

Soit lgind, la somme du nombre des voisins des super-nœuds.

♦.GLOB        OJB S V I4 dim=lgind

Ce vecteur donne l’ensemble des voisins des super-nœuds

♦.LOCL        OJB S V I4 dim=lgind

Ce vecteur établit pour les numéros de lignes des super-nœuds, la correspondance entre la numérotation locale du fils et la numérotation locale du père.

♦ .ADNT        OJB S V I4 dim=matr_init

La dimension matr_init est la taille de la matrice initiale (morse). C’est le vecteur des adresses des termes initiaux dans la matrice factorisée.

♦ .PNTI        OJB S V I4 dim= 19*neq+10

Cumul dans un même vecteur d’une suite de tables de travail.