I would like to use Mathematica to solve some solid mechanics problems, which will include an implementation of a different model than the ones that Mathematica offers. The way how to write custom material laws is shown in this example on hypoelastic materials. The module in the example gives the Cauchy stress tensor, which is then used to construct a PDE. It is possible to use a different stress tensor like Kirchhoff, 1st or 2nd Piola-Kirchhoff stress tensors?
1 Answer
Yes, you can change those. But let's step back a little. First we have differentiate between Hypoelastic material models and Hyperelastic material models. Although the names are somewhat similar these material laws are for different things. A Hypoelastic material model assumes a linear stress-strain relation ship and for that the differences between PK1, PK2 and Cauchy stress are minimal. So there is no need to use different ones.
Now, Hyperelastic material models are a whole different ball of wax. Here, indeed the different stresses play a role. Quoting from this section:
The First Piola-Kirchhoff stress is used for the equilibrium equation, because we want to express things in the initial configuration.
The Second Piola-Kirchhoff stress is commonly used for the constitutive equation, because the PK2 is compatible with the Green-Lagrange strain and the right Cauchy tensor.
The Cauchy stress is used to express the stress in the deformed object, if that is of interest.
You have the parameter "EquilibriumStressMeasure"
(defaults to PK1), "ConstitutiveStressMeasure"
(defaults to PK2) and the "OutputStressMeasure"
(defaults to Cauchy) that you can set and change. The conversion between these stress measures happens automatically.
"ConstitutiveStressMeasure"
defines what stress measure is used in your material law; that's probably what you are looking for. Sometimes one want to see the different "OutputStressMeasure"
, but ultimately the Cauchy stress measure is what you want.
See examples of their usage in the section on the St. Venant-Kirchhoff model.
-
$\begingroup$ Thank you for your answer. Is there a list of supported stresses? Is it possible to use a Kirchhoff stress? I tried it and it does not seem supported. $\endgroup$– lemurmanCommented Jul 20, 2022 at 14:58
-
$\begingroup$ @lemurman, PK1,PK2 and Cauchy are build in. You could in principal convert it yourself $\endgroup$– user21Commented Jul 20, 2022 at 19:30
-
$\begingroup$ @lemurman, I just added code for the conversion to Kirchhoff stress, this will be available in version 13.2. $\endgroup$– user21Commented Aug 15, 2022 at 12:23