7. SD champ_elem#
7.1. Case of cham_elem with subpoints (structural elements)#
The number of discretization points (nodes, Gauss points,…) of an elem field on a mesh is determined a priory by the number of points defined in the catalog of the type_elem associated with the mesh. For « structure » elements, we want to be able to store more quantities than points defined in the catalog.
During a non-linear calculation on a shell (for example), the integration chosen for the non-linear behavior requires the state of constraints to be stored at several points in the thickness: the thickness of the shell must be discretized. For this, we will say that each Gauss point positioned on the surface of the element (their number is fixed in the type_elem catalog), is composed of n subpoints representing the discretization of the normal to the element at this point.
In the same way, a non-linear pipe element will be able to discretize its section (circular ring) by cutting it into sectors and layers.
For a given element, all discretization points must have the same number of sub-points.
Attention:
Before creating a cham_elem*with subpoints, you must say for all the elements of the* ligrel the number of subpoints wanted. To do this, we use a cham_elem_s of the magnitude DCEL_I (argument DCELZ from the routine alchml.f ). When you call the elementary calculation routine ( calcul.f ), the passage of this argument is underground: the fiel_elem_s must have the same name as the cham_elem ( OUT ) that it is used to size.
7.2. Case of cham_elem that do not have subpoints#
Computerically, all cham_elem have subpoints. A cham_elem that does not need this concept is in fact a cham_elem for which each discretization point has only one sub-point; the point is then confused with its unique sub-point.
7.3. Cham_elem case of size VARI_R#
The quantity VARI_R is the « reserved » quantity that is used to represent a quantity whose number of components (CMP) is undetermined at the level of type_elem catalogs.
For example, this quantity is used to represent the internal variables of laws of behavior, because each law can have a different number of such variables.
In the size catalog, this size has only one CMP: VARI.
When creating a fiel_elem_ VARI_R, we must say for each of the elements, how many components the quantity VARI_R will have. These components will then be called: “V1”, “V2”,…, “Vn”. To do this, the same mechanism is used as for declaring the number of sub-points (see above).
7.4. Purpose. CELK#
CELK (1) |
name of the ligrel associated with the fiel_elem. |
CELK (2) |
name of the calculation option associated with the fiel_elem. |
CELK (3) |
/”ELNO”: CHAM_ELEM at the nodes /”ELGA”: CHAM_ELEM at Gauss points /”ELEM”: CHAM_ELEM constant by element |
CELK (4) |
nume_layer: layer number (shown on the left) for a CHAM_ELEM calculated on a shell element layer. |
CELK (5) |
layer_level: position in the layer for a CHAM_ELEM calculated on a shell element layer: /” INF “/” MOY “/” SUP “ |
CELK (6) |
Name of the parameter of the option associated with the cham_elem |
CELK (7) |
/” MPI_COMPLET “/” MPI_INCOMPLET” |
CELK (7):
“MPI_INCOMPLET”: the calculation has been distributed (MPI) and the object has been distributed. CELV is not a complete step on all CPUs. Each processor only calculated a subset of the items.
“MPI_COMPLET”: otherwise. That is to say, the calculation was not distributed, or the fiel_elem (MPI_INCOMPLET when created) was « completed » by calling the sdmpic.f utility
7.5. Purpose. CELD#
. CELD: vector of integers. The “DOCU” field of the object. CELD contains: “CHML”
This object is the descriptor of the object containing the values of the fiel_elem (). CELV).
CELD (1) |
gd |
quantity associated with the elem_field. |
CELD (2) |
nb_gr |
number of grelof the associated ligrel. |
CELD (3) |
mxsp |
maximum number of subpoints for ligrel elements |
CELD (4) |
mxcmp |
maximum number of CMP (size VARI_R) for ligrel elements. 0 if size other than VARI_R |
CELD (4+1) |
debu_grel_1 |
address (-1) in. CELDdu start of information concerning the 1st GREL |
|
||
CELD (4+nb_gr) |
debu_grel_n |
address (-1) in. CELDdu start of information about the latest GREL |
then we store the field description end-to-end for each GREL of the ligrel
CELD (debu_grel +1) |
Nel |
Item number of GREL |
CELD (debu_grel +2) |
Modelo |
mode_local associated with the local field (or 0 if field does not exist on GREL) |
CELD (debu_grel +3) |
LGcata |
length of the local field in view of the catalog. i.e. without taking into account the sub-points and multiple components of VARI_R. (= 0 if modelo = 0) |
CELD (debu_grel +4) |
LGgrel |
total length of the segment containing all values in the field on the GREL |
then:do iel = 1, nel |
(if model> 0) |
|
CELD (debu_grel+4+4* (iel-1) +1) |
nbsp |
Number of subpoints for the element iel |
CELD (debu_grel+4+4* (iel-1) +2) |
Ncdyn |
Number of CMP (VARI_R) for the element iel |
CELD (debu_grel+4+4* (iel-1) +3) |
Lgchel |
number of values in the local field for the iel element. lgchel= lgcata nbsp ncdyn |
CELD (debu_grel+4+4* (iel-1) +4) |
Adiel |
address in the object. CELVde the 1st value of the element iel |
7.6. Purpose. CELV#
It is a vector containing end-to-end the values of the local fields of the various elements.
The description of the segment for an element is given by the mode_local defined for the type_elem. This description is possibly supplemented by the data on the number of sub-points and the number of CMPS (VARI_R).
For a field of size (different from VARI_R) that does not have subpoints, all the elements of the same grel having the same type_elem, their local fields all have the same length and the same organization.
We move around the object. CELV thanks to the object. CELD.
The organization of the object can be described. CELV by these definitions:
CELV (ligrel) |
continuation of CELV (GREL) put end to end |
CELV (GREL) |
continuation of CELV (element) put end to end |
CELV (element) |
continuation of CELV (dot) put end to end |
CELV (dot) |
continuation of CELV (sub dot) put end to end |
CELV (sub-dot) |
sequence of CMP (scalar) put end to end |
7.7. Some « formulas » frequently used in programming#
7.7.1. LIGREL#
quantity number associated with CHAM_ELEM:
NUMGD =ZI (JCELD -1+1)
Number of GREL of LIGREL associated with CHAM_ELEM:
NGREL =ZI (JCELD -1+2)
max. number of sub-points of elements in a CHAM_ELEM: (maybe = 0)
MXSP =ZI (JCELD -1+3)
max. number of CMPS (VARI_R) of the elements in a CHAM_ELEM:
(/=0 <=> VARI_R)
MXCDY =ZI (JCELD -1+4)
7.7.2. GREL: IGR#
number of elements in a GREL (IGR):
NEL =ZI (JCELD -1+ZI (JCELD -1+4+ IGR) +1)
local_mode from a GREL (IGR):
IMOLO =ZI (JCELD -1+ZI (JCELD -1+4+ IGR) +2)
cumulative length of the elements of a GREL (IGR):
LGGREL =ZI (JCELD -1+ZI (JCELD -1+4+ IGR) +4)
address (in. CELV) from the beginning of GRELIGR:
DEBUGR =ZI (JCELD -1+ZI (JCELD -1+4+ IGR) +8)
then: ZR (JCELV -1 + DEBUGR) =...
length (CATALOGUE) of an element of a GREL (IGR):
LGCATA =ZI (JCELD -1+ZI (JCELD -1+4+ IGR) +3)
7.7.3. Item IEL of GRELIGR#
address (in. CELV) from the beginning of element IEL from GRELIGR:
ADIEL =ZI (JCELD -1+ZI (JCELD -1+4+ IGR) +4 +4* (IEL -1) +4)
then: ZR (JCELV -1 + ADIEL) =...
length of element IEL of GRELIGR:
LGIEL =ZI (JCELD -1+ZI (JCELD -1+4+ IGR) +4 +4* (IEL -1) +3)
number of sub-points of element IEL of GRELIGR:
NBSPT =ZI (JCELD -1+ZI (JCELD -1+4+ IGR) +4 +4* (IEL -1) +1)
there are no sub-points: NBSPT =0 (or 1; note by JD)
Number of CMPS (VARI_R) of element IEL from GRELIGR:
NCDYN =ZI (JCELD -1+ZI (JCELD -1+4+ IGR) +4 +4* (IEL -1) +2)
0 -> the size is not VARI_R