Stresses in Tensor Mechanics
The tensor mechanics module include multiple classes for calculating elastic stress, plastic stress, creep stress, and a combination of stress calculation methods.
Elasticity
Elastic materials do not experience permanent deformation, and all elastic strain and elastic stress is recoverable. Elastic stress is related to elastic strain through the elasticity tensor The two simplified elastic stress materials in Tensor Mechanics are:
ComputeLinearElasticStress for small total strain formulations, and
ComputeFiniteStrainElasticStress for incremental and finite strain formulations.
Inelastic Stress Calculations
Tensor Mechanics includes two different algorithm approaches to solving for stresses due to inelastic strains:
User Objects, which perform the stress calculations in both MOOSE code
UserObjects
andMaterials
, andStressUpdate Materials, which calculate the stress within a specific type of MOOSE
Materials
code.
Both approaches are discussed below with application examples.
User Objects Plasticity Models
This approach to modeling plasticity problems uses as stress material to call several UserObjects
, where each user object calculates and returns a specific materials property, e.g. a crystal plasticity lip system strength. The stress material then calculates the current stress state based on the returned material properties.
MultiSurface Plasticity
In MOOSE, multi-surface plasticity is implemented through the ComputeMultiPlasticityStress Material. This assumes that there is exactly one internal parameter per single-surface plasticity model, and that the functions for single-surface plasticity model depend only on its internal parameter: there must not be 2 or more internal parameters per single-surface plasticity model.) In this case where there is no sum on .
The Newton-Raphson procedure attempts to solve three types of equation:
Denoted by
f
in the code. for all active , up to a tolerance specified by theyield_function_tolerance
of the plastic modelDenoted by
epp
in the code. The value is computed as up to a tolerance specified byep_plastic_tolerance
. In the code there is a variabledelta_dp
that is shorthand for , or .Denoted by
ic
in the code. This value is calculated as up to a tolerance specified byinternal_constraint_tolerance
of the plastic model. There is no sum on in this expression.
In addition to these constraints, the Kuhn-Tucker and consistency conditions must also be satisfied. If the above constraints are satisfied, then these last conditions amount to: if (up to a tolerance), then ; otherwise .
Crystal Plasticity
The UserObject
based crystal plasticity system is designed to facilitate the implementation of different constitutive laws in a modular way. Both phenomenological constitutive models and dislocation-based constitutive models can be implemented through this system. This system consists of one material class FiniteStrainUObasedCP and four userobject classes:
Hyperelastic Viscoplastic
The Hyperelastic Viscoplastic model is based on the multiplicative decomposition of the total deformation () gradient into an elastic () and viscoplastic () component. The viscoplastic component of deformation is evolved in the intermediate configuration following where and are the flow rate and flow directions, respectively, and, is the number of flow rates. This representation allows different flow rates and directions to be superimposed to obtain an effective viscoplastic deformation of the material.
The integration of the model is performed using a combination of Material and DiscreteElementUserObject classes. In the material class, FiniteStrainHyperElasticViscoPlastic the following residual equations are set for every flow rate. The flow rates and directions are also calculated using UserObjects. The material class declares properties associated with each of the UserObjects and calls the functions in the UserObjects to perform the update as described above. The available base classes of UserObjects are as follows:
HEVPFlowRateUOBase
HEVPInternalVarRateUOBase
HEVPInternalVarUOBase
HEVPStrengthUOBase
StressUpdate Materials
A set of plasticity and creep material models have been developed with the StressUpdateBase
class, which allows for iterations within the material itself. These iterative materials are designated by StressUpdate
at the end of the class name. The advantage of the stress update materials is the ability to combine multiple inelastic stress calculations, such as creep and plasticity. These classes can use a variety of approaches to determine the inelastic strain increment and the inelastic stress at each step. An common approach used in the StressUpdate
classes is the Radial Return von Mises, or J2, algorithm: the Stress Update Radial Return Mapping Algorithm discusses the general algorithm to return the stress state to the yield surface.
The stress update materials are not called by MOOSE directly but instead only by other materials using the computeProperties
method. Separating the call to the stress update materials from MOOSE allows us to iteratively call the update materials as is required to achieve convergence.
For isotropic materials the radial return approach offers distinct advantages:
Faster simulation run times: The isotropic material iteration algorithm uses single variable
Reals
to compute and converge the inelastic strain instead of inverting the fullRank-4
elasticity tensor required in more complicated anisotropic algorithms.Easy to understand: The return mapping algorithm implemented in RadialReturnStressUpdate is the classical radial return method based on the von Mises yield criterion.
Applicable to a variety of models: The radial return method provides the flexibility to include creep, plasticity, and damage within a single simulation. The ComputeMultipleInelasticStress class calls each individual creep and plasticity model to iterate separately over the inelastic strain increment before checking for the convergence of the combined total radial return stress increment required to return the stress state to the yield surface.
The stress update materials each individually calculate, using the Newton Method, the amount of effective inelastic strain required to return the stress state to the yield surface. where the change in the iterative effective inelastic strain is defined as the yield surface over the derivative of the yield surface with respect to the inelastic strain increment. In the case of isotropic linear hardening plasticity, with the hardening function r = hp, the effective plastic strain increment has the form: where is the isotropic shear modulus, and is the scalar von Mises trial stress.
When more than one stress update material is included in the simulation ComputeMultipleInelasticStress will iterate over the change in the calculated stress until the return stress has reached a stable value.
Some Identities involving the Stress Tensor
Denote the stress tensor by . Assume it is symmetric. A useful quantity, called the "mean stress", is Another useful quantity is the traceless part of , which is called the deviatoric stress, denoted by : In many calculations it is useful to use the invariants of , which are Clearly , and often the square-root of is written as: Alternative forms for are All scalar functions of the stress tensor can be written in terms of its invariants. For instance,