6. Work objects#
The CALCUL routine allocates JEVEUX work objects (base VOLATILE) that we will describe below. All of these objects have names beginning with “&& CALCUL “.
6.1. & CALCUL. OBJETS_TRAV OJB S V K24#
This object contains the names of all work objects created by CALCUL. It is used to « clean up » (destroy) at the end of routine CALCUL. This object is created by routine DEBCAL. The address of this JEVEUX object is stored in COMMON CAII05.
6.2. Local fields#
Object JEVEUX (and the associated memory area) where the information extracted from a global field if « IN » (or calculated by a TE000I routine if « OUT « ) is stored as a « local field ». This information is « arranged » according to the description given in the type_element catalog (local_mode of the parameter associated with the field).
Local fields are JEVEUX vectors whose names are of the form “& CALCUL “//parameter_name, for example:
“& CALCUL. PGEOMER “, “& CALCUL. PCACOQU “,…
Notes:
• We continue to use the « local » vocabulary although since 1993, the « local » field contains (put end to end) information concerning all the finite elements of GRELcourant.
• When a routine TE00IJ **does for example:*
CALL JEVECH (“PGEOMER”, “L”, “IAD)
the address IADrendue is the address of the object “& CALCUL. PGEOMER “ offset by what is needed for us to reach information about the current element.
The organization of these objects is as follows:
1st CMP |
of the 1st size |
of the 1st element |
2nd CMP |
of the 1st size |
of the 1st element |
3rd CMP |
of the 1st size |
of the 1st element |
1st CMP |
of the 2nd size |
of the 1st element |
2nd CMP |
of the 2nd size |
of the 1st element |
|
||
1st CMP |
of the 1st size |
of the 2nd element |
2nd CMP |
of the 1st size |
of the 2nd element |
|
There we find end-to-end the various elements of GREL (which have the same type_element and therefore the same local_mode).
example for a local geometry field at the nodes of a GREL of TRIA3:
DX |
Node:1 |
of the 1st element |
DY |
Node:1 |
of the 1st element |
DX |
Node:2 |
of the 1st element |
DY |
Node:2 |
of the 1st element |
DX |
Node:3 |
of the 1st element |
DY |
Node:3 |
of the 1st element |
DX |
Node:1 |
of the 2nd element |
DY |
Node:1 |
of the 2nd element |
|
Local fields of work for conversions:
For conversions, CALCUL needs « buffer » memory areas. These memory areas have the same organization as the local fields above. It is necessary to allocate 2 for each scalar type associated with the magnitudes of the fields of the calculation: I, R, C, K8,…
Their names are:
& CALCUL. ORIGINAL .C & CALCUL. CONVERTI .C
& CALCUL. ORIGINAL .I & CALCUL. CONVERTI .I
& CALCUL. ORIGINAL .K8 & CALCUL. CONVERTI .K8
& CALCUL. ORIGINAL .K16 & CALCUL. CONVERTI .K16
& CALCUL. ORIGINAL .K24 & CALCUL. CONVERTI .K24
& CALCUL. ORIGINAL .R & CALCUL. CONVERTI .R
For the conversion of a local field to a real type (for example), the conversion will use the local field as input: & CALCUL. ORIGINAL .R and out: && CALCUL. CONVERTI .R
These local « buffer » fields are allocated to the maximum length of the « ordinary » local fields.
6.3. Objects & CALCUL. NOM_ & INEL and & CALCUL. IAD_ & INEL#
& CALCUL. NOM_ & INEL
This object contains the names of objects related to the initialization of the type_element of current GREL: objects “& INEL. XXX “.
& CALCUL. IAD_ & INEL
This object contains the addresses of objects related to the initialization of the current GREL element_type: “& INEL objects. XXX “.
6.4. Objects & CALCUL. TYPE_SCA & CALCUL. IA_CHLOC and & CALCUL. MODELO#
& CALCUL. TYPE_SCA |
S V K8 |
dim=nb_para |
|
& CALCUL. IA_CHLOC |
S V I |
dim=7*nb_para |
|
& CALCUL. MODELO |
SVI |
dim=nb_para |
Let nb_para be the number of parameters (« in » and « out ») of the calculation option and ipar the number of such a parameter.
& CALCUL. TYPE_SCA (ipar) |
scalar type (I, R, C,…) of the quantity associated with the ipar parameter |
& CALCUL. IA_CHLOC (7* (ipar-1) +1) |
address of the local field associated with ipar |
& CALCUL. IA_CHLOC (7* (ipar-1) +2) |
length of the local field associated with ipar |
& CALCUL. IA_CHLOC (7* (ipar-1) +3) |
local mode expected for the parameter |
& CALCUL. IA_CHLOC (7* (ipar-1) +4) |
useful length of the local field for 1 element. (takes into account ICOEF) |
& CALCUL. IA_CHLOC (7* (ipar-1) +5) |
local field type: 1: CARTE 2: CHAM_NO 3: CHAM_ELEM 4: VECTEUR 2ND MEMBRE 5: MATRICE |
& CALCUL. IA_CHLOC (7* (ipar-1) +6) |
number of discretization points for the local field: 1 for a CARTE nb_no for a CHAM_NO nb_pg for a CHAM_ELEM nb_no for a VECTEUR O for a MATRICE |
& CALCUL. IA_CHLOC (7* (ipar-1) +7) |
value of the “multiplier” coefficient (ICOEF) for the CHAM_ELEMà dynamic size (Zxxxxx local modes) |
& CALCUL. MODELO (ipar) |
mode_local associated with the ipar parameter |
6.5. Objects & CALCUL. LCHIN_EXI, & CALCUL. LCHIN_K8 and & CALCUL. LCHIN_I#
& CALCUL. LCHIN_EXI |
S V L |
dim= nb_in |
|
& CALCUL. LCHIN_K8 |
S V K8 |
dim= 11*nb_in |
|
& CALCUL. LCHIN_I |
SVI |
dim= 2*nb_in |
Let nb_in be the number of fields « in » and iin =1, nb_in
& CALCUL. LCHIN_EXI (iin) |
. FALSE.: field doesn’t exist |
& CALCUL. LCHIN_K8 (2* (iin-1) +1) |
field type: “CHNO”, “CART”, “CHML”, OR “RESL” |
& CALCUL. LCHIN_K8 (2* (iin-1) +2) |
scalar field type: “C, “R”, “I”, “K8”,… |
& CALCUL. LCHIN_I (11* (iin-1) +1) |
IGD: quantity associated with the field |
& CALCUL. LCHIN_I (11* (iin-1) +2) |
NEC: number of coded integers |
& CALCUL. LCHIN_I (11* (iin-1) +3) |
NCMPMX: max. number of CMPS for IGD |
& CALCUL. LCHIN_I (11* (iin-1) +4) |
IADESC: address of CHIN//”. DESC “ |
& CALCUL. LCHIN_I (11* (iin-1) +5) |
IAVALE: address of CHIN//”. VALE “ |
& CALCUL. LCHIN_I (11* (iin-1) +6) |
IAPTMA: address of CHIN//”. PTMA “(if CARTE) |
& CALCUL. LCHIN_I (11* (iin-1) +7) |
IAPTMS: address of CHIN//”. PTMS “(if CARTE) |
& CALCUL. LCHIN_I (11* (iin-1) +8) |
IAPRN1: address of. PRNO ($ MAILLA) (if CHAM_NO) |
& CALCUL. LCHIN_I (11* (iin-1) +9) |
IAPRN2: address of. PRNO (LIGREL) (if CHAM_NO) |
& CALCUL. LCHIN_I (11* (iin-1) +10) |
IANUEQ: address of. NUEQ (if CHAM_NO) |
& CALCUL. LCHIN_I (11* (iin-1) +11) |
1: IANUEQest valid 0: otherwise |
6.6. Objects & CALCUL. LCHOU_K8 and & CALCUL. LCHOU_I#
& CALCUL. LCHOU_K8 |
S V K8 |
dim= 2*nb_out |
|
& CALCUL. LCHOU_I |
SVI |
dim= 2*nb_out |
Let nb_out be the number of « out » fields and iout =1, nb_out
& CALCUL. LCHOU_K8 (2* (iout-1) +1) |
field type: “CHML” (CHAM_ELEM) or “RESL” (RESUELEM) |
& CALCUL. LCHOU_K8 (2* (iout-1) +2) |
scalar field type: “C, “R” |
& CALCUL. LCHOU_I (2* (iout-1) +1) |
IADESC: address of CHOUT//”. DESC “ |
& CALCUL. LCHOU_I (2* (iout-1) +2) |
IAVALE: address of CHOUT//”. VALE “ (if CHAM_ELEM) |
6.7. Objects & CALCUL. SCALAIRE and & CALCUL. IA_CONVERS#
& CALCUL. SCALAIRE |
S V K8 |
dim= nb_scale |
|
& CALCUL. IA_CONVERS |
S V I |
dim= 2*nb_scal + 1 |
Let nb_scal be the number of scalar types: I, R, C,…
& CALCUL. SCALAIRE (i) |
ithpossible scalar type of the “in” fields of the field: SCAL (i) |
& CALCUL. IA_CONVERS (1) |
nb_scal |
& CALCUL. IA_CONVERS (2* (i-1) +2) |
address in ZRou ZCou… of the object: “& CALCUL. ORIGINAL. “ //SCAL (i) |
& CALCUL. IA_CONVERS (2* (i-1) +3) |
address in ZRou ZCou… of the object: “& CALCUL. CONVERTI. “ //SCAL (i) |
6.8. Objects & CALCUL. TECAEL_K24 and & CALCUL. TECAEL_I#
& CALCUL. TECAEL_K24 |
S V K24 |
|
& CALCUL. TECAEL_I |
S V I |
Let nb_no be the number of nodes in the mesh associated with the current element.
& CALCUL. TECAEL_K24 (1) |
mesh name |
& CALCUL. TECAEL_K24 (2) |
name of LIGREL |
& CALCUL. TECAEL_K24 (3) |
mesh name |
& CALCUL. TECAEL_K24 (3+1) |
name of the 1st knot of the stitch |
& CALCUL. TECAEL_K24 (3+2) |
name of the 2nd knot in the stitch |
|
… |
& CALCUL. TECAEL_I (1) |
mesh number |
& CALCUL. TECAEL_I (2) |
number of knots in the mesh (nb_no) |
& CALCUL. TECAEL_I (2+1) |
number of the 1st knot of the stitch |
& CALCUL. TECAEL_I (2+2) |
number of the 2nd knot of the stitch |
|
… |
6.9. Objects & CALCUL. NOMOP and & CALCUL. NOMTE#
& CALCUL. NOMOP |
S V K16 |
|
& CALCUL. NOMTE |
S V K16 |
& CALCUL. NOMOP (iopt) |
name of the iopt number option |
& CALCUL. NOMTE (ite) |
name of the type_element of number ite |