The Hooke
stress potential describes the linear elastic
part of the behaviour of an isotropic or orthotropic material.
This stress potential relies on the fact that the behaviour is based on the strain split hypothesis.
The elastic strain must be defined as the first integration variable.
The associated variable must be called eel
and its glossary
name must be ElasticStrain
. This is automatically the case
with the @Implicit
dsl.
The total strain increment \(\Delta\,\underline{\epsilon}^{\mathrm{to}}\) is automatically substracted to the equation associated with the elastic (\(f_{\underline{\epsilon}^{\mathrm{el}}}\)), which is equivalent to the following statement:
-= deto feel
If the elastic behaviour is orthotropic, the stiffness tensor must be
available available (using the keyword
@RequireStiffnessTensor
) or computed by the behaviour
(using the keyword @ComputeStiffnessTensor
). If those
keywords are not explicitly used, the stress potential will
automatically sets the attribute requireStiffnessTensor
to
true
which has the same effect than the
@RequireStiffnessTensor
keyword.
Thus, two cases arise:
@RequireStiffnessTensor
) or computed by the behaviour
(@ComputeStiffnessTensor
).At \(t+\theta\,dt\), the stress are computed using:
\[ {\left.\sigma\right|_{t+\theta\,\Delta\,t}}=\underline{\mathbf{D}}\,\colon\,{\left.\underline{\epsilon}^{\mathrm{el}}\right|_{t+\theta\,\Delta\,t}} \]
If the stiffness tensor is avaible using the
@RequireStiffnessTensor
, the final stress \({\left.\sigma\right|_{t+\Delta\,t}}\) is
computed using the following formula :
\[ {\left.\sigma\right|_{t+\Delta\,t}}=\underline{\mathbf{D}}\,\colon\,{\left.\underline{\epsilon}^{\mathrm{el}}\right|_{t+\Delta\,t}} \]
If the stiffness tensor is computed using
@ComputeStiffnessTensor
, the final \({\left.\sigma\right|_{t+\Delta\,t}}\)
stress is computed using:
\[ {\left.\sigma\right|_{t+\Delta\,t}}={\left.\underline{\mathbf{D}}\right|_{t+\Delta\,t}}\,\colon\,{\left.\underline{\epsilon}^{\mathrm{el}}\right|_{t+\Delta\,t}} \]
In this case, the elastic behaviour of the material is isotropic. The computation of the stress requires the definition of the first Lamé coefficient and the shear modulus (second Lamé coefficient).
The Lamé coefficients are derived from the Young modulus and Poisson ratio. They can be defined using:
@ElasticMaterialProperties
keyword. In this case,
the Implicit
dsl already automatically computes the
following variables (See the documentation of the
@ElasticMaterialProperties
keyword):
young
: the Young modulus at \(t+\theta\,dt\)nu
: the Poisson ratio modulus at \(t+\theta\,dt\)lambda
: the first Lamé coefficient at \(t+\theta\,dt\)mu
: the second Lamé coefficient at \(t+\theta\,dt\)young_tdt
: the Young modulus at \(t+dt\)nu_tdt
: the Poisson ratio modulus at \(t+dt\)lambda_tdt
: the first Lamé coefficient at \(t+dt\)mu_tdt
: the second Lamé coefficient at \(t+dt\)young
and the nu
and the glossary
names associated with those variables must be respectively
YoungModulus
and PoissonRatio
. The Lamé
coefficients will be computed and stored in a data structure used
internally by the stress potential.If the material properties are not defined using one of those two ways, the appropriate material properties will be automatically defined by the stress potential.
At \(t+\theta\,dt\), the stress are computed using the following formula: \[ {\left.\sigma\right|_{t+\theta\,\Delta\,t}}=\lambda\,{\mathrm{tr}{\left({\left.\underline{\epsilon}^{\mathrm{el}}\right|_{t+\theta\,\Delta\,t}}\right)}}+2\,\mu\,{\left.\underline{\epsilon}^{\mathrm{el}}\right|_{t+\theta\,\Delta\,t}} \] where \(\lambda\) and \(\mu\) are respectively the values of the first and second Lamé coefficients at \(t+\theta\,dt\)
The final stress \({\left.\sigma\right|_{t+\Delta\,t}}\) is computed using the following formula :
\[ {\left.\sigma\right|_{t+\Delta\,t}}={\left.\lambda\right|_{t+\Delta\,t}}\,{\mathrm{tr}{\left({\left.\underline{\epsilon}^{\mathrm{el}}\right|_{t+\Delta\,t}}\right)}}+2\,{\left.\mu\right|_{t+\Delta\,t}}\,{\left.\underline{\epsilon}^{\mathrm{el}}\right|_{t+\Delta\,t}} \]
If the user has explicitly specified that the axisymmetric
generalised plane stress modelling hypothesis must be supported by the
behaviour using the @ModellingHypothesis
keyword or the
@ModellingHypotheses
keyword, this support is performed by
automatically introducing an additional state variable: the axial
strain. The associated variable is etozz
, although this
variable shall not be used by the end user. The glossary name of this
variable is AxialStrain
.
The introduction of the variable modify the strain split equation like this: \[ feel(2) += detozz; \] where \(detozz\) is the increment of the axial strain. The associated jacobian term is added if necessary.
The plane stress condition is enforced by adding an additional equation to the implicit system ensuring that: \[ {\left.\sigma_{zz}\right|_{t+\Delta\,t}}=0 \]
This equation is appropriately normalised using one of the elastic properties. The associated jacobian term are added if necessary.
If the user has explicitly specified that the axisymmetric
generalised plane stress modelling hypothesis must be supported by the
behaviour using the @ModellingHypothesis
keyword or the
@ModellingHypotheses
keyword, this support is performed by
automatically introducing an additional state variable, the axial strain
and an additional external state variable, the axial stress.
The variable associated to the axial strain is etozz
,
although this variable shall not be used by the end user. The glossary
name of this variable is AxialStrain
.
The variable associated to the axial stress is sigzz
,
although this variable shall not be used by the end user. The glossary
name of this variable is AxialStress
.
The introduction of the variable modify the strain split equation as follows:
(1) += detozz; feel
where \(\epsilon^{\mathrm{to}}_{zz}\) is the increment of the axial strain. The associated jacobian term is added if necessary.
The plane stress condition is enforced by adding an additional equation to the implicit system ensuring that: \[ {\left.\sigma_{zz}\right|_{t+\Delta\,t}}-\sigma^{zz}-d\sigma^{zz}=0 \]
where \(\sigma^{zz}\) is the value of the axial stress at the beginning of the time step and \(d\sigma^{zz}\) is the value of the increment of the axial stress.
This equation is appropriately normalised using one of the elastic properties. The associated jacobian terms are added if necessary.
The elastic and secant operator are equal to the elastic stiffness matrix at the end of the time step. How this elastic stiffness matrix is obtained depends on the many cases described before.
The consistent tangent operator is computed by multiplying the elastic stiffness matrix at the end of the time step by a partial invert of the jacobian matrix. This procedure is discussed in depth in the MFront manuals.
The Hooke
stress potential automatically defines the
computeElasticPrediction
method which computes a prediction
of the stress under the assumption that all states variables are equal
to their values at the beginning of the time step except the elastic
strain which are assumed to be equal to \({\left.\underline{\epsilon}^{\mathrm{el}}\right|_{t}}+\Delta\,\underline{\epsilon}^{\mathrm{to}}\).
The Hooke
stress potential supports the following
options:
young_modulus
young_modulus1
young_modulus2
young_modulus3
poisson_ratio
poisson_ratio12
poisson_ratio23
poisson_ratio13
shear_modulus12
shear_modulus23
shear_modulus13
thermal_expansion
thermal_expansion1
thermal_expansion2
thermal_expansion3
thermal_expansion_reference_temperature
plane_stress_support
generic_tangent_operator
generic_prediction_operator