24 #ifndef SET_MATRIX4_ISOTROPIC_H
25 #define SET_MATRIX4_ISOTROPIC_H
48 Scalar operator () (
const int i,
const int j,
const int k,
const int l)
const
51 if (i==k && j==l) ret += mu;
52 if (i==l && j==k) ret += mu;
53 if (i==j && k==l) ret += lambda;
63 os <<
"lambda = " << lambda <<
" mu = " << mu;
86 inv.
lambda = lambda / (2*mu*(3*lambda + 2*mu));
105 AMREX_GPU_HOST_DEVICE
void operator /= (
const Set::Scalar &alpha) {lambda /= alpha; mu /= alpha;}
109 return std::sqrt(lambda*lambda + mu*mu);
114 if (std::isnan(lambda))
return true;
115 if (std::isnan(mu))
return true;
119 AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE
124 #if AMREX_SPACEDIM == 2
127 ret(0,1) = a.
mu*(b(0,1) + b(1,0)); ret(1,0) = ret(0,1);
129 #elif AMREX_SPACEDIM == 3
133 ret(1,2) = a.
mu*(b(1,2) + b(2,1)); ret(2,1) = ret(1,2);
134 ret(2,0) = a.
mu*(b(2,0) + b(0,2)); ret(0,2) = ret(2,0);
135 ret(0,1) = a.
mu*(b(0,1) + b(1,0)); ret(1,0) = ret(0,1);
140 AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE
145 AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE
150 for (
int i = 0; i < AMREX_SPACEDIM; i++)
151 for (
int j=0; j < AMREX_SPACEDIM; j++)
152 ret(i) += a.
mu*(b(i,j,j) + b(j,i,j)) + a.
lambda*b(j,j,i);
157 AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE
165 AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE
173 AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE
179 AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE
182 if (a.
mu != b.
mu)
return false;
186 AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE
195 AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE