Programming rules ======================= While the developer has free choice in the use and naming of his work parameters in the dedicated data structure (sd_nl), it is however still mandatory to respect the following rules in order to allow the archiving and calculation recovery processes to work correctly with the new non-linearity. *The sd_nl parameter MX_LEVEL must be incremented in the routine preparing dtmprep_noli*_newf* data. This makes it possible to avoid data overwriting when combining multiple nonlinearities. *The sd_dtm parameter NB_NONL should also be incremented in dtmprep_noli*_newf*. This makes it possible to globally activate the calculation of nonlinear forces and the archiving of associated internal variables. *The parameter NL_TYPE of the sd_nl must be saved with the integer value describing the nonlinearity processed in dtmprep_noli*_newf*. This value is set in the nldef.h file (e.g. NL_CHOC = 1, NL_BUCKLING = 2, etc.). Parameter NL_TYPE is required in dtmforc in order to properly dispatch to the dtmforc*_newf* routine. The use of an integer makes it possible to optimize this very repetitive step in the integration loop. * The internal variables (real) are concatenated for all nonlinearities and stored under the global parameter INTERNAL_VARS of the sd_nl. In order not to overwrite the variables of the other nonlinearities, it is necessary to retrieve the backup index generated and stored automatically under the parameter INTERNAL_VARS_INDEX. In practice: call nlget (sd_nl, _ INTERNAL_VARS, vr= **twent**) call nlget (sd_nl, _ INTERNAL_VARS_INDEX, vi= **vindx**) start = **vindx** (nl_ind) **vint** (start+0) = value1 **vint** (start+1) = value2 **vint** (start+2) = value3