4. SD carte#

4.1. Généralités#

Une carte est un champ discrétisé par maille. Chaque maille peut être “affectée” d’une grandeur (au plus). Les cartes sont en général des SD crées à partir des données de l’utilisateur. Sa structure est faite pour stocker (avec le moins de volume possible) les informations concernant l’affectation des grandeurs sur des “morceaux” du maillage.

Remarque :

La structure choisie est économique en espace mais elle ne répond pas rapidement à la question : quelle grandeur est affectée sur la maille M1 ? Pour répondre à cette question, il faut “étendre” la carte (cela créer des objets temporaires plus volumineux) ; c’est l’objet de la routine ETENCA appelée par CALCUL *. Une carte est donc une liste ordonnée de couples (grandeur, zone_affectée). L’ordre des couples est important car il sert à prendre en compte le principe de surcharge des affectations : la dernière affectation prime sur les précédentes.*

Une zone_affectée peut être :

  • l’ensemble des mailles du maillage (TOUT: ‘OUI’),

  • l’ensemble des mailles tardives d’un ligrel,

  • un GROUP_MA du maillage,

  • une liste de mailles du maillage,

  • une liste de mailles tardives d’un ligrel.

4.2. Objet .NOMA#

Nom du maillage associé à la carte.

4.3. Objet .DESC#

'.DESC' S V I DIM = 3 + (2+n_ec)*n_gd_max

Le champ ‘DOCU’ de l’objet .DESCcontient : ‘CART’

DESC(1)

gd(numéro de la grandeur associée à la carte)

DESC(2)

n_gd_max(majorant du nombre de zone_affectée)

DESC(3)

n_gd_edit(nombre réel de zone_affectée) n_gd_editpeut être = 0

DESC(3+1)

code_1er_zone(”code” de la première zone_affectée)

DESC(3+2)

numéro de la 1ère zone_affectée

DESC(3+2*n_gd_max-1)

code_der_ent(code de la dernière zone_affectée)

DESC(3+2*n_gd_max)

numéro de la dernière zone_affectée

Attention :

il faut n_gd_max=1pour une carte constante sur toutes les mailles tardives (par exemple CHTIMEdans me2mme.f)

Le “code” d’une zone_affectée peut valoir :

1

l’ensemble des mailles du maillage (TOUT: ‘OUI‘),

-1

l’ensemble des mailles tardives d’un ligrel,

2

un GROUP_MAdumaillage,

3

une liste de mailles dumaillage,

-3

une liste de mailles tardives d’unligrel.

Si code=1 (ou -1):

le numéro de la zone_affectée correspondante ne sert à rien.

Si code=2:

le numéro de la zone_affectée correspondante est le numéro du group_ma

dans la collection mailla.GROUPEMA

Si code=3 (ou -3):

le numéro de la zone_affectée correspondante est le numéro de l’objet de la collection .LIMA

qui contient les numéros des mailles composant la zone_affectée.

Vient ensuite dans l’objet .DESC une suite de descripteur_grandeur décrivant les différentes grandeurs affectées.

Soit n_ec le nombre d’entier_codé nécessaires à décrire les CMPS de la grandeur gd :

DESC(3+2*n_gd_max+1 )

début du premier descripteur_grandeur

DESC(3+2*n_gd_max +(n_gd_max-1)*n_ec +1)

début du dernier descripteur_grandeur

Remarque :

Pour un champ constant (1 seule grandeur affectée à toutes les mailles du maillage). On a alors :

DESC(2) = 1

DESC(3) = 1

DESC(4) = 1

DESC(5) = peu importe

DESC(6) = début du descripteur_grandeur de la zone_affectée (TOUT : 'OUI'

Dans ce cas . LIMA et . NOLI ne sont pas alloués (économie de place).

4.4. Objet .NOLI#

Cet objet n’est présent que si la carte concerne des mailles tardives.

C’est un vecteur de K24 de dimension nb_gd_max. En face de izone on trouve, si cette zone_affectée est une liste de mailles tardives, le nom du ligrel ou sont définies ces mailles.

izone ---> nom_ligrel

4.5. Objet .LIMA#

C’est une famille contiguë numérotée de vecteurs d’entiers.

LIMA(izone) : V(I)

V contient les numéros des mailles constituant la zone_affectée.

Les numéros de mailles de la liste sont des numéros relatifs au ligrel référencé dans .NOLI(izone).

si un numéro de maille est > 0 , c’est une maille du maillage associé à la carte.

si un numéro de maille est < 0 , c’est une maille du supplémentaire du ligrel.

4.6. Objet .VALE#

C’est un vecteur de scalaires dimensionné à nb_gd_max * nb_cmp_max, si nb_cmp_max est le nombre de CMPS dans la catalogue pour la grandeur associée à la carte.

La grandeur associée à la zone_affectée izone commence dans .VALE à l’indice :

izone --> .VALE( (izone-1)*nb_cmp_max + 1 )

Attention :

Seules les CMPS affectées sont stockées (consécutivement et dans l’ordre du catalogue) dans l’objet . VALE Par exemple, pour une carte de DEPL_R , si la 1ère zone est affectée par : ( DX=2 *. et* DZ=4 *.)*

VALE(1) = 2.

VALE(2) = 4.