SD carte ======== 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. Objet .NOMA ----------- Nom du maillage associé à la carte. Objet .DESC ----------- .. code-block:: text '.DESC' S V I DIM = 3 + (2+n_ec)*n_gd_max Le champ ‘DOCU’ de l’objet .DESCcontient : ‘CART’ .. csv-table:: "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 : .. csv-table:: "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 : .. csv-table:: "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 :* .. code-block:: text 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).* 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. .. code-block:: text izone ---> nom_ligrel Objet .LIMA ----------- C’est une famille contiguë numérotée de vecteurs d’entiers. .. code-block:: text 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. 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 : .. code-block:: text 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.*