33#ifndef MODEL_SOLID_AFFINE_J2_H_
34#define MODEL_SOLID_AFFINE_J2_H_
57 Set::Matrix sig_dev = sigma - sigma.trace() * Set::Matrix::Identity() / 3.0;
60 Set::Scalar J2 = sqrt(1.5 * (sig_dev.transpose() * sig_dev).trace());
63 F0 +=
ddw.Inverse() * dsigp;
67 Set::Matrix eps_dev = eps - eps.trace() * Set::Matrix::Identity() / (double)AMREX_SPACEDIM;
69 Set::Matrix zeta_trial = sig_dev + 2.0*m_mu*eps_dev;
71 if (f_trial <= 0.0)
return;
75 alpha =
alpha + sqrt(1.0 - 1.0/(
double)AMREX_SPACEDIM)*dGamma;
92 ret.
F0 = Set::Matrix::Zero();
112 #define OP_VARS X(ddw) X(F0) X(sigma0) X(hardening) X(ratecoeff)
133 if (
i==0)
return name +
".epsp_xx";
134 if (
i==1)
return name +
".epsp_xy";
135 if (
i==2)
return name +
".epsp_yx";
136 if (
i==3)
return name +
".epsp_yy";
139 if (
i==0)
return name +
".epsp_xx";
140 if (
i==1)
return name +
".epsp_xy";
141 if (
i==2)
return name +
".epsp_xz";
142 if (
i==3)
return name +
".epsp_yx";
143 if (
i==4)
return name +
".epsp_yy";
144 if (
i==5)
return name +
".epsp_yz";
145 if (
i==6)
return name +
".epsp_zx";
146 if (
i==7)
return name +
".epsp_zy";
147 if (
i==8)
return name +
".epsp_zz";
156 for (amrex::MFIter
mfi(
a_dst, amrex::TilingIfNotGPU());
mfi.isValid(); ++
mfi)
158 const amrex::Box&
bx =
mfi.growntilebox(amrex::IntVect(
a_nghost));
161 amrex::Array4<const Model::Solid::Affine::J2>
const &
src = ((*this)[
a_lev])->
array(
mfi);
162 amrex::Array4<Set::Scalar>
const &
dst =
a_dst.array(
mfi);
#define pp_query_default(...)
Set::Matrix4< AMREX_SPACEDIM, SYM > ddw
static void Parse(Isotropic &value, IO::ParmParse &pp)
Set::Matrix DW(const Set::Matrix &F) const override
void Advance(Set::Scalar dt, Set::Matrix eps, Set::Matrix, Set::Scalar) override
static void Parse(J2 &value, IO::ParmParse &pp)
std::string Name(int) const
void Copy(int, amrex::MultiFab &, int, int) const
Eigen::Matrix< amrex::Real, AMREX_SPACEDIM, 1 > Vector
Eigen::Matrix< amrex::Real, AMREX_SPACEDIM, AMREX_SPACEDIM > Matrix