@marshallrdavey should help me with this (he is quite good at the algebra).
Boyce pointed out that its typically, in 2D, easier to just use 3D models - this means some invariants need to be modified. For example, in 2D we should do I1 = tr(F^T F) + 1, so that we treat F as if it were 3x3 and the last row and column are 0 0 1.
Some notes from files on my laptop:
for (unsigned int qp_n = 0; qp_n < stresses.size(); ++qp_n)
{
const auto &J = me_values.get_det_FF()[qp_n];
const auto &FF = me_values.get_FF()[qp_n];
const auto &I1 = me_values.get_first_invariant()[qp_n];
const auto &FF_inv_T = me_values.get_FF_inv_T()[qp_n];
// TODO make sure this is right in true 2D
//
// This should really use J^(-2/3) since Mike's model is based on
// the modified invariants that do J^{-1/3} F in place of F for
// the modified first invariant (only the deviatoric component).
//
// TODO double check that PP always equals the top left 2x2 of the
// plane stress 3D version.
// TODO use the 3D invariants: e.g., I1 / 3.0
stresses[qp_n] = mu_s / J * (FF - (I1 / 2.0) * FF_inv_T);
}
@marshallrdavey should help me with this (he is quite good at the algebra).
Boyce pointed out that its typically, in 2D, easier to just use 3D models - this means some invariants need to be modified. For example, in 2D we should do
I1 = tr(F^T F) + 1
, so that we treatF
as if it were 3x3 and the last row and column are0 0 1
.Some notes from files on my laptop: