12. Recovery, archiving and initial state management#

◇ RESULTAT = evol_noli,

If you want to continue a calculation that has already been executed, the RESULTAT keyword indicates which object is enriched.

12.1. Definition of an initial state#

◇ ETAT_INIT = _F (
     ◆ | DELP = cham_no,
       | EVOL_NOLI = evol_noli,
       | SIGM = map/cham_elem,
       | TRUE = cham_elem,
       | COHE=cham_elem,
     ◇ STRX = cham_elem,
     # If: exists (" EVOL_NOLI ")
          ◇ NUME_ORDRE = int,
          ◇ NUME_DIDI = int,
          ◇ INST = float,
          # If: exists (" INST ")
               ◇ CRITERE =/"ABSOLU ",
                           /"RELATIF" (by default),
               # If: (equal_to (" CRITERE ", 'RELATIF'))
               ◇ PRECISION = float (default: 1e-06),
               # If: (equal_to (" CRITERE ", 'ABSOLU'))
               ◆ PRECISION = float,
),

The ETAT_INIT keyword allows you to define an initial reference state. In the event that the user specified that the concept result is reentrant (by the word RESULTAT), the ETAT_INIT keyword is mandatory. By convention, the initial state of a blank calculation (without rework) is stored at number of order 0.

By default (if nothing is specified) all fields are identically null. The initial state may be defined either by specifying each field of the initial state, or by extraction from a pre-existing evol_noli concept.

If we give a data structure of type EVOL_NOLI from another calculation by the keyword EVOL_NOLI, fields from this data structure are automatically extracted for the initial state.

The extraction of the initial mechanical state in the evol_noli data structure is done from the archive number NUME_ORDRE or archive instant INST.

If NUME_ORDRE or INST are not filled in, the last existing archived number is taken. These extracted fields will be archived at the first moment of the defined time list. under the keyword INCREMENT. If you enter INST, the keywords PRECISION and CRITERE (see [U4.71.00] for detailed syntax) are used to find the correct order number. Indeed, the moments are identified by a serial number (an integer). If the user wants use an instant (a real one) and not a serial number for INST, the PRECISION operand allows you to select this order number.

A - Simple example (by default behavior)

listInst = DEFI_LIST_REEL (DEBUT =0. ,
                          INTERVALLE =_F (JUSQU_A = 10. , NOMBRE =10))),
evolNoli = MECA_NON_LINE (INCREMENT =_F (LIST_INST =listinst,
                         INST_FIN =4. )),
evolNoli = MECA_NON_LINE (reuse=evolnoli,
                         INCREMENT =_F (LIST_INST =listinst),
                         ETAT_INIT =_F (EVOL_NOLI =EvolNoli))

The first MECA_NON_LINE performs the calculation for the times 1, 2, 3 and 4.

The second MECA_NON_LINE: perform the calculation for the times from 5 to 10, the initial state corresponding to time 4.

B - Example to show the value of two different lists of instants

listInst1 = DEFI_LIST_REEL (DEBUT =0. ,
                           INTERVALLE =_F (JUSQU_A = 10., NOMBRE =10)),

evolNoli = MECA_NON_LINE (INCREMENT =_F (LIST_INST =listinst1))

listInst2 = DEFI_LIST_REEL (DEBUT =20. ,
                           INTERVALLE =_F (JUSQU_A = 30., NOMBRE =10))

evolNoli = MECA_NON_LINE (reuse=evolnoli,
                         RESULTAT = Evolnoli,
                         INCREMENT =_F (LIST_INST =listinst2, INST_INIT =20. ),
                         ETAT_INIT =_F (EVOL_NOLI =EvolNoli,))

The first MECA_NON_LINE does the calculation for the times from 1 to 10. The state initial, with order number 0, is empty (all fields are zero).

The second MECA_NON_LINE calculates the times 21 to 30. The initial state corresponds to instant 10 of the first MECA_NON_LINE (last moment calculated in first MECA_NON_LINE). For this second MECA_NON_LINE, this initial state corresponds to The moment 20 (INST_INIT =20.).

The use of a non-zero initial state will change the calculation of thermal deformation. If there is a non-zero initial state, then the thermal deformation calculation is pure incremental.

If an initial state whose model is different from the calculation model specified in To the operator, the transition between the two models is automatically carried out:

  • If the calculation model is included in the given model in the initial state, the data from the initial state are simply copied mesh by mesh for all fields

  • If the model given in the initial state is included in the calculation model, we start by copying the values of the initial state for the common cells then complete with the zero value. You have to be careful about the meaning that a null internal variable can have. Initial in the calculation

The keywords DEPL, SIGM and VARI allow (respectively) to give a field of movement, of constraints and initial internal variables.

Other fields are only available in certain models:

  • The STRX keyword gives the field of effort and travel corresponding to the elements of structures

  • The COHE keyword gives the field of cohesive internal variables of the CZM_LIN_MIX law in The case of a calculation XFEM: its particular structure justifies the use of a distinct keyword Of VARI.

If a result given by the EVOL_NOLI keyword is also given, the fields above come overload it.

If one of these fields is not specified, it is taken to be null by default. For example, they can be from the CREA_CHAMP [U4.72.04] command, or have been read in a file with the LIRE_RESU [U7.02.01] command.

The field of constraints and internal variables at Gauss points and the field of displacements is a field with nodes. If the fields are not set to the correct ones supports the conversions can be done automatically. There are no conditions imposed on the fields given by the user. They can very well represent a mechanical state that is not balanced and/or does not respect the law of behavior. If the calculation has difficulty converging in this case, the easiest way is to create artificially a state of zero initial constraints to force the selection of the incremental mode, or to use a purely elastic matrix, which allows a certain convergence at the price a large number of iterations.

In large deformations, the user wishing to use the GDEF_LOG formalism with a initial constraint field (ETAT_INIT) will refer to test case SSNP159b. In fact, for impose an initial constraint field, the user must give as input the tensor of constraint defined in logarithmic space \(T\) (not Cauchy) \(\sigma\)). The components of the latter being stored as variables internal, you must use the VARI keyword.

If the material characteristics are highly dependent on control variables, it is appropriate to be careful when selecting the initial state, at the risk of not converging. In fact, elastic behaviors exist in two versions (see [U4.51.11]). The « pure » elastic version is chosen automatically by the code when there is no initial state, otherwise, we select the incremental version. However, only the latter is effective if there are strong variations in material characteristics. (elastic in this case) in relation to the control variables.

If you simultaneously use a report from a complete result (keyword EVOL_NOLI) and the individual definition of a field (for example constraints), the overload rule applies and the fields given individually replace those present in the data structure given as the initial state.

In the case of differential Dirichlet DIDI loads, NUME_DIDI gives the mechanical condition archiving number (movements) that serves as a reference for the application of these boundary conditions. By default we take the mechanical state defined under NUME_ORDRE or INST.

12.2. Field archiving#

ARCHIVAGE = _F (
     ◆/PAS_ARCH = int,
       /LIST_INST = listr8,
       /INST = float,
     # If: exists (" INST ") or exists (" LIST_INST ")
          ◇ CRITERE =/"ABSOLU ",
                      /"RELATIF" (by default),
          # If: equal_to (" CRITERE ", 'RELATIF')
               ◇ PRECISION = float (default: 1e-06),
          # If: equal_to (" CRITERE ", 'ABSOLU')
               ◆ PRECISION = float,
     ◇ CHAM_EXCLU = text (default: "('RESI_NOEU', 'RESI_RELA_NOEU')"),
),

The keyword factor ARCHIVAGE (only one occurrence) allows you to archive some or all results at all or certain moments of the calculation.

In the absence of this keyword all time steps are archived, including the moments of newly created calculations by automatically redividing the time step. Archiving makes it possible to significantly reduce the size of the databases by selecting the saved moments.

The designation of the moments to be stored is carried out either by a list of moments. (keywords LIST_INST or INST) or by an archiving frequency PAS_ARCH (every PAS_ARCH) no time).

notes
  • the last calculation step is always stored to be able to perform a recovery

  • if we use access by list of moments, then the moments of calculation newly created by automatic redistribution of the time steps will not be archived

  • the initial state is systematically archived under the order number 0 when one is not Not in recomputation

The CHAM_EXCLU keyword allows you to specify the fields that will not be archived, except for last step of time.

12.3. Personalized archiving#

◇ OBSERVATION = _F (
     ◇ TITRE = text,
     ◇ OBSE_ETAT_INIT =/"NON ",
                        /"OUI" (by default),
     ◇ EVAL_CHAM =/"MAX ",
                   /"MAXI_ABS ",
                   /"MIN ",
                   /"MINI_ABS ",
                   /"MOY ",
                   /"VALE" (by default),
     ◆/NOM_CMP = text,
       /NOM_VARI = text,
     ◇ EVAL_CMP =/"FORMULE ",
                  /"VALE" (by default),
     ◇ INST = float,
     ◇ LIST_INST = listr8,
     ◇ PAS_OBSE = int,
     ◇ CRITERE =/"ABSOLU ",
                 /"RELATIF" (by default),
     ◆ NOM_CHAM =/"ACCE ",
                  /"ACCE_ABSOLU ",
                  /"CONT_ELEM ",
                  /"CONT_NOEU ",
                  /"DEPL ",
                  /"DEPL_ABSOLU ",
                  /"EPSI_ELGA ",
                  /"FORC_NODA ",
                  /"SIEF_ELGA ",
                  /"VARI_ELGA ",
                  /"VITE ",
                  /"VITE_ABSOLU ",
     # If: (equal_to (" EVAL_CMP ", 'FORMULE'))
          ◆ FORMULE = formula,
     # If: is_in (" NOM_CHAM ", ('DEPL', '', '', 'VITE', '', '', 'ACCE', '', 'FORC_NODA', '', 'CONT_NOEU', 'DEPL_ABSOLU', '', '', 'VITE_ABSOLU', 'ACCE_ABSOLU') TEMP
          ◆/TOUT = "OUI" (or not specified),
            /NOEUD = no,
            /GROUP_NO = big,
            /GROUP_MA = grma,
            /MAILLE = my,
     # If: is_in (" NOM_CHAM ", ('SIEF_ELGA', '', 'EPSI_ELGA', 'VARI_ELGA'))
          ◆/TOUT = "OUI" (or not specified),
            /GROUP_MA = grma,
            /MAILLE = my,
          ◇ EVAL_ELGA =/"MAX ",
                        /"MIN ",
                        /"VALE" (by default),
          # If: (equal_to (" EVAL_ELGA ", 'VALE'))
               ◆ POINT = int,
               ◇ SOUS_POINT = int,
     # If: (equal_to (" NOM_CHAM ", 'CONT_ELEM'))
          ◆/TOUT = "OUI" (or not specified),
            /GROUP_MA = grma,
            /MAILLE = my,
     # If: (equal_to (" CRITERE ", 'RELATIF'))
          ◇ PRECISION = float (default: 1e-06),
     # If: (equal_to (" CRITERE ", 'ABSOLU'))
          ◆ PRECISION = float,
),

The keyword factor OBSERVATION allows you to post-process certain fields to nodes or elements on parts of the model at times in a list (called observation) generally more refined than the list of archived moments defined in the ARCHIVAGE keyword (where we store all the fields on the whole model). It is mainly used to save storage, but also to evaluate fields on reduced parts of the mesh, without the need for to post-process after the calculation. It is possible, for example, to calculate the norm of constraints, in the sense of von Mises, and to store it in the observation table.

This keyword is repeatable and allows the creation of an observation table with the same name as the concept result of STAT_NON_LINE that can be extracted using the command [RECU_TABLE].

You can only use a maximum of 99 occurrences of the OBSERVATION keyword.

It is possible to name an occurrence of the observation (column NOM_OBSERVATION) by using the TITRE keyword. If not used, column NOM_OBSERVATION contains OBSERVATION_xx with xx varying from 1 to 99.

12.3.1. Selection in the transitory#

To create the list of observations to be made on the transitory, LIST_INST, INST and PAS_OBSE have the same meaning as the operands of the same name used for define an archive list. PAS_OBSE playing the same role as PAS_ARCH in ARCHIVAGE.

The OBSE_ETAT_INIT operand specifies whether to observe the fields at the initial moment because the initial moment cannot be managed by the list of moments.

The parameters PRECISION and CRITERE allow you to manage the precision of the selection of the moments for observation.

12.3.2. Selecting values#

NOM_CHAM allows you to define the field to be post-processed as well as its components given by name (NOM_CMP) or, for internal variables, the name of the variables (instead of V1, V2,…). You can only define a maximum of 20 components per occurrence of the factor OBSERVATION keyword. You can post-process the fields output by default by the operator or request the output of others fields (for now, only EPSI_ELGA).

For other fields, an evolution request must be made.

The selection for NOM_VARI only works for VARI_ELGA fields.

12.3.3. Selection in space#

The keywords TOUT, GROUP_NO and GROUP_MA define the geometric support of post-treatment:

  • for fields with nodes (“DEPL”, “VITE”, “”, “”, “ACCE”, “DEPL_ABSOLU”, “VITE_ABSOLU”, “ACCE_ABSOLU”, “CONT_NOEU”, “FORC_NODA”), we extract the list of nodes

  • for fields at Gauss points (“SIEF_ELGA”, “VARI_ELGA”), we extract the list of cells.

Be careful not to use TOUT =” OUI “on large meshes!

12.3.4. Observation of a field ELGA#

For a field ELGA, we start by choosing the components or the formula between the components with the EVAL_CMP keyword:

  • If EVAL_CMP =” VALE “, we simply extract the list of components given by NOM_CMP or NOM_VARI.

  • If EVAL_CMP =” FORMULE “, we evaluate the formula given by the simple keyword FORMULE.

If we apply a formula to the components, we will therefore have a value and therefore an observation, otherwise, we will have as many observations as there are components in list NOM_CMP or NOM_VARI.

Once the components or the formula on the components have been evaluated, using the keyword EVAL_ELGA, we can:

  • Extract these values on integration points and sub-points with EVAL_ELGA =” VALE “. In this case, the integration point and sub-point must be explicitly specified by POINT and SOUS_POINT. Integration sub-points appear for structural elements (beams, plates, shells, pipes, etc.).

  • Ask to extract the maximum EVAL_ELGA =” MAX “or the minimum EVAL_ELGA =” MIN” on all points and sub-points of a mesh.

If we explicitly ask for a point and a sub-point, we will have as many achievements as points requested, multiplied by the number of components requested. On the other hand, if we ask The maximum or the minimum, there will be only one observation per component requested.

Once the components (or the formula on the components) have been evaluated, as well as the point/sub-point For extraction, you can use the keyword EVAL_CHAM:

  • Extract these values on all meshes with EVAL_CHAM =” VALE “.

  • Ask to extract the maximum EVAL_CHAM =” MAX “, the minimum EVAL_CHAM =” MIN” or the average EVAL_CHAM =” MOY “

  • Ask to extract the absolute minimum value EVAL_CHAM =” MINI_ABS “such as MINI_ABS (-1,3,4, -12, -0.1) = 0.1

  • Ask to extract the maximum absolute value EVAL_CHAM =” MAXI_ABS “such as MAXI_ABS (-1,3,4, -12, -0.1) = 12

Here is an example to extract the maximum from the trace of the stress tensor on the GROUP_MA =” TOTO “:

trace = FORMULE (VALE ='0.333* (SIXX + SIYY + SIZZ) ', NOM_PARA =(' SIXX ',' SIYY ',' SIZZ ',));

OBSERVATION =_F (NOM_CHAM = 'SIEF_ELGA',
                 GROUP_MA = 'TOTO',
                 EVAL_CHAM = 'MAX',
                 NOM_CMP = ('SIXX', 'SIYY', 'SIZZ',),
                 EVAL_CMP = 'FORMULE',
                 FORMULE = trace,
                 EVAL_ELGA = 'MAX')

12.3.5. Observation of a field NOEU#

We start by choosing the components or the formula between the components using the keyword EVAL_CMP:

  • If EVAL_CMP =” VALE “, we simply extract the list of components given by NOM_CMP

  • If EVAL_CMP =” FORMULE “, we evaluate the formula given by the simple keyword FORMULE.

If we apply a formula to the components, we will therefore have a value and therefore an observation, otherwise, we will have as many observations as there are components in list NOM_CMP.

Once the components (or the formula on the components) have been evaluated, we can, using the keyword EVAL_CHAMP:

  • Extract these values on all nodes with EVAL_CHAM =” VALE “.

  • Ask to extract the maximum EVAL_CHAM = “MAX”, the minimum EVAL_CHAM = “MIN” or the average EVAL_CHAM = “MOY”.

  • Ask to extract the absolute minimum value EVAL_CHAM =” MINI_ABS “such as MINI_ABS (-1,3,4, -12, -0.1) = 0.1

  • Ask to extract the maximum absolute value EVAL_CHAM =” MAXI_ABS “such as MAXI_ABS (-1,3,4, -12, -0.1) = 12

Here is an example to extract the maximum of the DX component from the displacement on GROUP_NO =” TOTO “:

OBSERVATION = _F (NOM_CHAM = 'DEPL',
                   GROUP_NO = 'TOTO',
                   EVAL_CHAM = 'MAX',
                   NOM_CMP = ('DX',),
                 )

12.3.6. Observation of a field ELEM#

We start by choosing the components or the formula between the components by EVAL_CMP:

  • If EVAL_CMP =” VALE “, we simply extract the list of components given by NOM_CMP

  • If EVAL_CMP =” FORMULE “, we evaluate the formula given by the simple keyword FORMULE

If we apply a formula to the components, we will therefore have a value and therefore an observation, otherwise, we will have as many observations as there are components in list NOM_CMP.

Once the components (or the formula on the components) have been evaluated, as well as the extraction point/sub-point, you can, by the keyword EVAL_CHAMP:

  • Extract these values on all meshes with EVAL_CHAM =” VALE “.

  • Ask to extract the maximum EVAL_CHAM = “MAX”, the minimum EVAL_CHAM = “MIN” or the average EVAL_CHAM = “MOY”.

  • Ask to extract the absolute minimum value EVAL_CHAM =” MINI_ABS “such as MINI_ABS (-1,3,4, -12, -0.1) = 0.1

  • Ask to extract the maximum absolute value EVAL_CHAM =” MAXI_ABS “such as MAXI_ABS (-1,3,4, -12, -0.1) = 12

12.3.7. Contents of the output values#

The table will contain a maximum of 16 columns.

NOM_OBSERVATION

K80

Name given automatically or by the TITRE keyword

TYPE_OBJET

K16

The table only contains real values so R

NOM_SD

K24

“”

NUME_REUSE

I

Index of reuse of the table in case of REUSE

NUME_OBSE

I

Observation serial number

INST

R

Instant of observation

NOM_CHAM

K16

Observed field name

EVAL_CHAM

K8

Field evaluation type

NOM_CMP

K8

Observed component name

NOM_VARI

K16

Name of the observed internal variable

EVAL_CMP

K8

Component Assessment Type

NOEUD

K8

Node where the observation is carried out (node field)

MAILLE

K8

Mesh where the observation is carried out (mesh field)

EVAL_ELGA

K8

Type of field evaluation at Gauss points

POINT

I

Integration point where the observation is carried out (mesh fields)

SOUS_POINT

I

Integration sub-point where the observation is carried out (mesh fields)

VALE

R

Value

NUME_GLOBAL_NOEUD

I

Number of the node where the observation is carried out (node field) in the global numbering (attention this numbering starts at zero). This column is only added when using distributed parallelism,

The NUME_REUSE parameter is used when enriching the result data structure. Indeed, if the recovery overwrites old order numbers in the data structure, result (see keyword ETAT_INIT), this is not the case for the values in the observation table, which is not never changed retroactively. So we can have two different values for the same moment in the table, the distinction will then be made on NUME_REUSE.