4. SD card#
4.1. Generalities#
A map is a field discretized by mesh. Each mesh can be « assigned » by one size (at most). Cards are generally SDs created from user data. Its structure is designed to store (with as little volume as possible) information concerning the assignment of quantities to « pieces » of the mesh.
Note:
The structure chosen is space-saving but it does not quickly answer the question: what size is affected on the M1 mesh? To answer this question, you need to « extend » the map (this creates larger temporary objects); this is the object of the routine ETENCA called by CALCUL. A map is therefore an ordered list of pairs (magnitude, affected_zone). The order of the couples is important because it serves to take into account the principle of overloading assignments: the last assignment takes precedence over the previous ones.
An affected_area can be:
all the meshes of the mesh (TOUT: “OUI”),
all the late stitches of a Ligrel,
a GROUP_MA of the mesh,
a list of mesh cells,
a list of late stitches from a Ligrel.
4.2. Purpose. NOMA#
The name of the mesh associated with the map.
4.3. Purpose. DESC#
'. DESC 'S V I DIM = 3 + (2+n_ec) *n_gd_max
The “DOCU” field of the object. DESCcontient: “CART”
Attention:
you need n_gd_max=1 for a constant map on all late stitches (for example CHTIMEdans me2mme.f)
The « code » of an assigned_area can be:
1 |
the set of mesh cells (TOUT: “OUI”), |
-1 |
the set of late stitches of a Ligrel, |
2 |
a GROUP_MAdumaillage, |
3 |
a list of mesh stitches, |
-3 |
a list of late stitches from Unligrel. |
If code=1 (or -1):
the number of the corresponding assigned_area is useless.
If code=2:
the number of the corresponding affected_zone is the number of the group_ma
in the Mailla collection. GROUPEMA
If code=3 (or -3):
The number of the corresponding assigned_area is the number of the object in the collection. LIMA
which contains the numbers of the cells composing the affected_area.
Next comes into the object. DESC a series of descriptor_quantity describing the various quantities affected.
Let N_ec be the number of coded_integers needed to describe the CMPS of the quantity gd:
DESC (3+2*n_gd_max+1) |
start of the first descriptor_quantity |
|
… |
DESC (3+2*n_gd_max + (n_gd_max-1)*n_ec +1) |
start of the last descriptor_quantity |
Note:
For a constant field (1 single quantity assigned to all mesh cells). We then have:
DESC (2) = 1
DESC (3) = 1
DESC (4) = 1
DESC (5) = whatever
DESC (6) = start of the descriptor_size of the affected_area (TOUT: 'OUI'
In this case . LIMA and . NOLI are not allocated (space saving) .
4.4. Purpose. NOLI#
This object is only present if the card involves late stitches.
It is a K24 vector with the dimension nb_gd_max. Opposite izone, if this affected_zone is a list of late meshes, we find the name of the ligrel where these meshes are defined.
izone ---> ligrel_name
4.5. Purpose. LIMA#
It is a contiguous numbered family of integer vectors.
LIMA (zone): V (I)
V contains the numbers of the cells constituting the affected_area.
The mesh numbers in the list are numbers relating to the ligrel referenced in. NOLI (izone).
If a mesh number is > 0, it is a mesh of the mesh associated with the map.
If a mesh number is < 0, it is an extra mesh of the ligrel.
4.6. Purpose. VALE#
It is a vector of scalars sized to nb_gd_max * nb_cmp_max, if nb_cmp_max is the number of CMPS in the catalog for the quantity associated with the map.
The quantity associated with the affected area_zone izone starts in. VALE to the index:
izone -->. VALE ((izone-1) *nb_cmp_max+1)
Attention:
Only the CMPS affected are stored (consecutively and in catalog order) in the object. VALE For example, for a map of DEPL_R , if the 1st zone is affected by: ( DX=2. and DZ=4. and DZ=4. )
VALE (1) = 2.
VALE (2) = 4.