4. Introduction of a new non-linear law#
A temporary data structure sd_nl has been created in order to be able to store all the parameters required for the calculation.
Several utilities are available:
nlinivec: allows you to initialize a vector to zero
nlsav: allows you to store the calculation parameters in the sd_nl data structure
nlget: allows you to retrieve information stored in sd_nl
togene: projection of a vector on a reduced basis
tophys: expansion of a generalized vector on a physical basis
tophys_ms: expansion on a physical basis taking into account the training movement (multi-support calculation)
To introduce a new non-linear law, the developer therefore only needs to write the data preparation routine: dtmprep_noli_newf.F90 and the one that calculates and archives the internal variables: dtmforc_newf.F90 (not forgetting to write the dtmprep_noli interface files_newf.h and dtmforc_newf.h).
For example, to define the effort-displacement relationship (RELA_EFFO_DEPL), we only need DTMPrep_Noli_Rede.F90 and DTMForC_Rede.F90. It can be used as inspiration for the writing of a new law.
We then update:
*the nldef.h file for the definition of non-linearity — associate an integer with the type of nonlinearity (NL_* NEWF *) and define the number of internal variables to be stored in advance (NBVARINT*_ NEWF *),
the nlinc.h file for defining the calculation parameters (in case it is necessary to add new parameters to the sd_nl),
the dyna_vibra.capy order catalog (keyword COMPORTEMENT/RELATION).