### Structural Material class - Example

The structural (or mechanical) constitutive model should generally support several so-called material models, corresponding to various modeling assumptions (plane-stress, plane-strain, or 1D-behavior, for example). The concept of multiple material modes is generally supported by Material, which provides the services for testing the model capabilities. It is generally assumed, that results obtained from constitutive model services are formed according to material mode. This mode is attribute of each integration point, which is compulsory parameter of all material services. For computational convenience, the so-called full and reduced formats of stress/strains vectors are introduced, corresponding to material modes. The full format includes all components, even if they are zero due to stress/strain mode nature. In the reduced format, only generally nonzero components are stored. (Full format should be used only if absolutely necessary, to avoid wasting of space. For example, it is used by output routines to print results in general form). Methods for converting vectors between full and reduced format are provided. If possible, all computations should be performed in reduced space.

The convention used to construct reduced strain/stress vectors is generally as follows. If in a particular mode a particular stress component is zero, the corresponding strain is not computed and not stored in reduced vector, and in full vector there is zero value on corresponding position. On the other hand, if zero strain component is imposed, then this condition must be taken into account in geometrical relations (at element level), and corresponding components are included in stress/strain reduced vectors.

Generally, the following major tasks are declared by StructuralMaterial or inherited from Material class:

• Computing the real stress vector (tensor) at an integration point for a given strain increment and updating its temporary state corresponding to the local equilibrium, but not necessarily to the global equilibrium (see giveRealStressVector). The parameters include the total strain vector and the corresponding integration point. The total strain is defined as strain computed directly from the displacement field at a given time. The stress independent parts (temperature, eigen strains) should be subtracted and the corresponding load-history variables (stored in the corresponding status) can be used. The temporary history variables in the status should be updated according to the newly reached state. The temporary history variables are moved into equilibrium history variables just after the global structure equilibrium has been reached by the iteration process.
• Updating the integration point state (final state), when the global equilibrium has been reached.
• Returning material stiffness and/or flexibility matrices for a given material mode. The general methods computing the response for the specific material mode are provided, based on converting 3D stiffness or compliance matrix to that corresponding to the specific material mode. But, if it is possible to compute stiffness or compliance matrix directly for the specific mode, then these general methods should be overloaded.
• Storing/restoring integration point state to/from a stream.
• Requesting internal variables, their types and properties (giveIPValue, giveIPValueSize, giveIPValueType, and giveIntVarCompFullIndx services).
• Returning material properties.

Structural material services should not be called directly by elements. Instead, the elements should pass their requests to the corresponding cross section model, that performs all necessary integration over its volume and invokes corresponding material model services.

The StructuralMaterial class comes with definition of associated material status - StructuralMaterialStatus. This is only an abstract class. For every instance of StructuralMaterial class there should be a specialized derived class, which maintains all history variables. It only adds attributes common to all ``structural analysis'' material models - the strain and stress vectors (both the temporary-like, corresponding to the local equilibrium and non-temporary ones, corresponding to the global equilibrium). The corresponding services for accessing, setting, initializing, and updating these attributes are provided.

Borek Patzak 2018-01-02