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