SDT-nlsim
Contents  
Functions  
 ![]() ![]() |
One is interested in solving equations of the general form
(1.1) |
with
Estimation of the non-linear forces can, in a very general fashion, be decomposed in three steps: observation of strains, evaluation of constitutive law at a material point to compute stresses, application of stresses on the model as detailed below.
(1.2) |
where strains may represent quantities dependent on the model displacement (relative motion, mechanical strain, ...), but also possibly internal states of the non-linearity if those are included in the definition of q. For HBM solutions qNL will be assumed to be part of q but for transient simulations this may not be optimal.
Strategies for the construction of the observation matrix c will be discussed for point to point connection in section 1.2.1, surfaces in section 1.2.2, volumes in section 1.2.3.
For time domain, generalized strains є (noted .unl in the code) are obtained by computing
(1.3) |
In a similar fashion, if the NL.vnl field exists strain rates are obtained using
(1.4) |
In the implementation, the strain vector may have NE components ei, and strains at NG material points (Gauss or physical points) may be stored as a single vector to allow vectorization of non-linearities of a given kind, thus leading to ei,gk components.
For HBM computations NT times will be evaluated and stored as columns. The internal storage in field NL.unl is thus of the form
(1.5) |
(1.6) |
The generic representation of non-linearities should verify classical assumptions on objectivity and on the validity of constitutive relations, which is compatible with the idea that generalized strains are defined at a material point.
The definition of a non-linear constitutive relation giving a definition of generalized stresses snl which has the same (NE × NC) × NT size as unl and is thus stored NL.unl field to allow overwrite. This allows memory optimization even though the output result is a force and not a strain). When internal states are present, the strain field NL.unl may not be efficiently used to store stresses, it is then possible to store stresses in field NL.snl of size (NS × NG)× NT) with NS the number of stress components.
(1.7) |
In the proposed framework,
Many iterative schemes need derivatives of the non-linear forces with respect to strains (stiffness)
(1.8) |
or strain rates (damping matrix)
(1.9) |
See nl_spring NLJacobianUpdate for low level documentation and nl_solve TgtMdl for global calls. The derivatives at each integration point (often named Gauss point in the documentation) ∂ snl/∂ unl correspond to the material stiffness matrix called dd or Lambda in different parts of SDT. Since the b and c matrices combine all gauss points, the assembled matrix containing one block for each gauss point, is sometimes stored in a ddg field when individually modifying the gauss points is of interest (topology optimization applications for example).
When splitting of Jacobians is of interest xxx.