1 #ifndef MODEL_SOLID_FINITE_PSEUDOLINEAR_CUBIC_H_
2 #define MODEL_SOLID_FINITE_PSEUDOLINEAR_CUBIC_H_
13 namespace PseudoLinear
27 Set::Matrix E = 0.5 * (
F.transpose() *
F - Set::Matrix::Identity());
28 return 0.5 * (E * (CC*E).transpose()).trace();
37 for (
int i = 0; i < AMREX_SPACEDIM; i++)
38 for (
int J = 0; J < AMREX_SPACEDIM; J++)
39 for (
int A = 0; A < AMREX_SPACEDIM; A++)
40 for (
int R = 0; R < AMREX_SPACEDIM; R++)
41 for (
int S = 0; S < AMREX_SPACEDIM; S++)
43 dw(i,J) += 0.5 *
F(i,A)*CC(J,A,R,S) * (C(R,S) - ((R==S) ? 1.0 : 0.0));
56 for (
int i = 0; i < AMREX_SPACEDIM; i++)
57 for (
int J = 0; J < AMREX_SPACEDIM; J++)
58 for (
int k = 0; k < AMREX_SPACEDIM; k++)
59 for (
int L = 0; L < AMREX_SPACEDIM; L++)
62 for (
int A = 0; A < AMREX_SPACEDIM; A++)
63 for (
int B = 0; B < AMREX_SPACEDIM; B++)
65 ddw(i,J,k,L) += 0.5*I(i,k)*CC(J,L,A,B) * (C(A,B) - I(A,B));
66 ddw(i,J,k,L) +=
F(i,A)*
F(k,B)*CC(A,J,B,L);
73 virtual void Print(std::ostream &out)
const override
76 out <<
"C11=" <<
C11 <<
" C12=" <<
C12 <<
" C44=" <<
C44 <<
77 " q=" <<
q.w() <<
" + " <<
q.x() <<
"i + " <<
q.y() <<
"j + " <<
q.z() <<
"k";
107 ret.
q = Set::Quaternion::UnitRandom();
133 R = Eigen::AngleAxisd(phi2, Eigen::Vector3d::UnitX()) *
134 Eigen::AngleAxisd(Phi, Eigen::Vector3d::UnitZ()) *
135 Eigen::AngleAxisd(phi1, Eigen::Vector3d::UnitX());
139 #define OP_CLASS Cubic
140 #define OP_VARS X(C11) X(C12) X(C44) X(q)