2. Definition of the non-zero internal variables field#

2.1. Problem#

We want to create an initial internal variables field for the STAT_NON_LINE command. This field should not be null everywhere. More specifically, we want to:

STAT_NON_LINE:

COMPORTEMENT =( _F (GROUP_MA =” MASSIF “, RELATION =” CJS “),

_F (GROUP_MA =” BETON “, RELATION =” ENDO_LOCAL “),),

for the behavior relationship “CJS” (16 internal variables), we want to assign:

V1 = 1.0 and V9 = 9.0

for the behavior relationship “ENDO_LOCAL” (2 internal variables), we want to assign:

V2 = 2.0

2.2. 1st method#

The operator to use is CREA_CHAMP/OPERATION =” AFFE “. It allows you to assign (by mesh or GROUP_MA) the values you want. The difficulty comes from the fact that the quantity associated with the internal variables (VARI_R) is different from the others: we do not know a priory what its components are. Moreover, the name of its components reflects this ignorance: “V1”, “V2”,…

Depending on what behavior the user chooses in STAT_NON_LINE, the number of internal variables changes. In our example, the “CJS” behavior requires 16 variables while “ENDO_LOCAL” only uses 2.

The assignment operation is carried out in the following way:

VAIN1 = CREA_CHAMP (OPERATION =” AFFE “, TYPE_CHAM =” ELGA_VARI_R”,

MODELE =MO, PROL_ZERO =” OUI “,

AFFE =(

_F (GROUP_MA = “BETON”, NOM_CMP = “V2”, VALE = 2. ),

_F (GROUP_MA = “MASSIF”,

NOM_CMP = (“V1”, “V9”, “V16”,),

VALE = (1., 9., 0.,)),

)

)

Important notes:

  • The keyword PROL_ZERO =” OUI “allows you to only affect non-zero components. But as the command does not know the number of internal variables carried by the cells, it is based on the highest assigned number.

In the example above, on the “MASSIF” group, it is important to assign “V16” (here to 0.) so that the field has 16 components.

  • It is important for the non-linear calculation that will follow that the field of internal variables be consistent with the behaviors that we will choose. I

Here, the cells in the group “ BETON “must have 2 internal variables (and only 2) and those in the group “ MASSIF “must have 16.

Attention:

If the model has other types of behavior (for which you do not want to step initialize the field with non-zero values), you must also explicitly assign null values to them. This disadvantage (having to know TOUS the behaviors used and their number of internal variables) can be overcome with the 2nd method below (but it’s more complicated) .

2.3. 2nd method#

This (more complicated) method makes it possible to explicitly assign only meshes that have non-zero components.

The problem is getting a field containing the right number of internal variables for each mesh based on the behavior that will be assigned to it in STAT_NON_LINE. To solve this problem, we will perform a fictional non-linear calculation (with real behaviors). The internal variables field produced will then be a good field « model ».

So we will do:

  1. fictional nonlinear calculation => UBID

  2. extracting the internal variables field (VBID) from the UBID result

  3. Assigning non-zero values to field VAIN2

  4. setting VBID to zero + overloading VAIN2 values to produce the result VAIN22

2.3.1. Fictitious nonlinear calculus#

BETON = DEFI_MATERIAU (ELAS =_F (E = 20000., NU = 0. ),

ECRO_LINE =_F (SY = 6., D_ SIGM_EPSI = -10000.))

MASSIF = DEFI_MATERIAU (ELAS =_F (E = 35.E3, NU = 0.15),

CJS =_F (BETA_CJS = -0.55, GAMMA_CJS = 0.82, PA = -100.0,

RM = 0.289, N_ CJS = 0.6, KP = 0.6, KP = 25.5E3, RC = 0.265, A_ CJS = 0.25,))

CHMAT = AFFE_MATERIAU (MAILLAGE =MA, AFFE =(

_F (GROUP_MA = “MASSIF”, MATER = MASSIF),

_F (GROUP_MA = “BETON”, MATER = BETON),))

TEMPS1 = DEFI_LIST_REEL (VALE =( 0.,1.))

CHAR_U1 = AFFE_CHAR_MECA (MODELE =MO,

DDL_IMPO =_F (NOEUD = (“N1”, “N2”, “N3”,), DX=0. , DY=0. , DZ=0.))

UBID = STAT_NON_LINE (MODELE =MO, CHAM_MATER = CHMAT,

EXCIT = _F (CHARGE = CHAR_U1,),

COMPORTEMENT =( _F (GROUP_MA =” MASSIF “, RELATION =” CJS “),

_F (GROUP_MA =” BETON “, RELATION =” ENDO_LOCAL “),),

NEWTON =_F (MATRICE = “ELASTIQUE”),

CONVERGENCE =_F (ARRET = “NON”, # to continue without convergence

ITER_GLOB_MAXI = 1, ITER_INTE_MAXI = 1),

INCREMENT =_F (LIST_INST = TEMPS1),

)

2.3.2. Retrieving the « model » internal variables field#

VABID = CREA_CHAMP (OPERATION =” EXTR “, TYPE_CHAM =” ELGA_VARI_R”, INFO =1,

NOM_CHAM =” VARI_ELGA “, RESULTAT = UBID, NUME_ORDRE =1,)

Note:

VABIDn is not rubbish.

2.3.3. Assigning non-zero values in a NEUT_R map#

VAIN2 = CREA_CHAMP (OPERATION =” AFFE “, TYPE_CHAM =” CART_NEUT_R”, MODELE =MO,

AFFE =(

_F (GROUP_MA = “BETON”, NOM_CMP = (“X2”,), VALE = (2.,)), = (2.,)),

_F (GROUP_MA = “MASSIF”, NOM_CMP = (“X1”, “X9”,), VALE = (1.,9.,))),

)

)

2.3.4. Setting the « model » internal variables field to zero and overloading non-zero values#

VAIN22 = CREA_CHAMP (OPERATION =” ASSE “, TYPE_CHAM =” ELGA_VARI_R”, MODELE =MO,

# zeroing:

ASSE =( _F (TOUT = = = “OUI”, CHAM_GD = “, = VABID, CUMUL =” OUI”, COEF_R =0. ),

# overloading non-zero values:

_F (GROUP_MA = “BETON”, CHAM_GD = VAIN2, =, CUMUL =” OUI “, COEF_R =1. ,

NOM_CMP =( “X2”,), NOM_CMP_RESU =( “V2”,),),),

_F (GROUP_MA = “MASSIF”, CHAM_GD = VAIN2, =, CUMUL =” OUI “, COEF_R =1. ,

NOM_CMP =( “X1”, “X3”), NOM_CMP_RESU =( “V1”, “V9”,),),),

)

)

Note;

For zeroing and overloading non-zero values, we use the keywords CUMUL =” OUI “and * COEF_R =0.