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.* L'objet STOC_LIGN_CIEL ---------------------- Pour le stockage en ligne de ciel, les objets sont les suivants: .. code-block:: text 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) | nombre d’équations neq | | | (2) | taille des blocs de la matrice t_bloc | | | (3) | nombre de blocs nécessaire au stockage des valeurs de la matrice n_bloc | | | (4) | hauteur maximum des colonnes de la matrice | +-------+--------------------+-------------------------------------------------------------------------------------------------------------------------------------------+ | .SCHC | S V I dim=neq | +-------+--------------------+-------------------------------------------------------------------------------------------------------------------------------------------+ | | (i) | hauteur de la ièmecolonne | +-------+--------------------+-------------------------------------------------------------------------------------------------------------------------------------------+ | .SCDI | S V I dim=neq | +-------+--------------------+-------------------------------------------------------------------------------------------------------------------------------------------+ | | (i) | adresse du terme diagonal de la ièmecolonne dans son bloc | +-------+--------------------+-------------------------------------------------------------------------------------------------------------------------------------------+ | .SCBL | S V I dim=n_bloc+1 | +-------+--------------------+-------------------------------------------------------------------------------------------------------------------------------------------+ | | (1) | 0numéro de la dernière colonne du bloc K | | | (K+1) | remarque: une colonne ne peut appartenir qu’à un seul bloc | +-------+--------------------+-------------------------------------------------------------------------------------------------------------------------------------------+ | .SCIB | S V I dim=neq | +-------+--------------------+-------------------------------------------------------------------------------------------------------------------------------------------+ | | (i) | 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 : .. image:: images/10000000000000B4000000B3344270AB926A7FFB.gif :width: 1.8752in :height: 1.8646in .. _RefImage_10000000000000B4000000B3344270AB926A7FFB.gif: .. code-block:: text 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 L'objet STOC_MORSE ------------------ Pour le stockage morse, les objets sont les suivants: .. code-block:: text 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) | nombre d’équations neq | | | (2) | nombre de termes stockés dans la demi-matrice n_termes | | | (3) | nombre de bloc 1 | +-------+--------------------+----------------------------------------------------------------------------+ | .SMHC | S V I dim=n_termes | +-------+--------------------+----------------------------------------------------------------------------+ | | (i) | numéro de ligne du ièmeterme stocké | +-------+--------------------+----------------------------------------------------------------------------+ | .SMDI | S V I dim=neq | +-------+--------------------+----------------------------------------------------------------------------+ | | (i) | 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 : .. image:: images/10000000000000D3000000A31111E24FEC3BCC9B.gif :width: 2.198in :height: 1.698in .. _RefImage_10000000000000D3000000A31111E24FEC3BCC9B.gif: .. code-block:: text 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 L'objet MULT_FRONT ------------------ Pour le stockage MULT_FRONT., les objets sont les suivants: .. code-block:: text 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. .. code-block:: text ♦.GLOB OJB S V I4 dim=lgind Ce vecteur donne l’ensemble des voisins des super-nœuds .. code-block:: text ♦.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. .. code-block:: text ♦ .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. .. code-block:: text ♦ .PNTI OJB S V I4 dim= 19*neq+10 Cumul dans un même vecteur d’une suite de tables de travail.