10 namespace Constitutive
74 , mPlaneState(planeState)
75 , mK1((mK - 1.) / (2. * mK * (1 - 2 * mNu)))
76 , mK2(3. / (mK * (1. + mNu) * (1. + mNu)))
92 v[1] = -nu * strain[0];
93 v[2] = -nu * strain[0];
119 v[2] = nu / (nu - 1.) * (strain[0] + strain[1]);
125 throw Exception(__PRETTY_FUNCTION__,
"Specify section behavior, either PLANE_STRAIN or PLANE_STRESS");
143 double A = std::sqrt(mK1 * mK1 * I1 * I1 + mK2 * J2);
154 double dJ2dexx = 2. / 3. * strain[0] * (1 + mNu) * (1 + mNu);
155 double dI1dexx = (1 - 2 * mNu);
161 double A = std::sqrt(mK1 * mK1 * I1 * I1 + mK2 * J2);
164 derivative[0] = mK1 * dI1dexx;
166 derivative[0] = mK1 * dI1dexx + 1. / (2 *
A) * (2 * mK1 * mK1 * I1 * dI1dexx + mK2 * dJ2dexx);
181 double A = std::sqrt(mK1 * mK1 * I1 * I1 + mK2 * J2);
195 double dJ2dexx = 1. / 3. * (2 * strain[0] - strain[1]);
196 double dJ2deyy = 1. / 3. * (2 * strain[1] - strain[0]);
197 double dJ2dgxy = 0.5 * strain[2];
199 derivative[0] = mK1 + 1. / (2 *
A) * (2 * mK1 * mK1 * I1 + mK2 * dJ2dexx);
200 derivative[1] = mK1 + 1. / (2 *
A) * (2 * mK1 * mK1 * I1 + mK2 * dJ2deyy);
201 derivative[2] = 1. / (2 *
A) * (mK2 * dJ2dgxy);
207 double dI1dexxeyy = (1 + mNu / (mNu - 1));
210 derivative[0] = dI1dexxeyy * mK1;
211 derivative[1] = dI1dexxeyy * mK1;
216 double strainxy = mNu / (mNu - 1.) * (strain[0] + strain[1]);
217 double dJ2dexx = 1. / 3. * (2. * strain[0] - strain[1] - 2. * strainxy + 2 * mNu / (mNu - 1) * strainxy);
218 double dJ2deyy = 1. / 3. * (2. * strain[1] - strain[0] - 2. * strainxy + 2 * mNu / (mNu - 1) * strainxy);
219 double dJ2dgxy = .5 * strain[2];
221 derivative[0] = dI1dexxeyy * mK1 + 1. / (2. *
A) * (2. * dI1dexxeyy * mK1 * mK1 * I1 + mK2 * dJ2dexx);
222 derivative[1] = dI1dexxeyy * mK1 + 1. / (2. *
A) * (2. * dI1dexxeyy * mK1 * mK1 * I1 + mK2 * dJ2deyy);
223 derivative[2] = 1. / (2. *
A) * (mK2 * dJ2dgxy);
240 double A = std::sqrt(mK1 * mK1 * I1 * I1 + mK2 * J2);
253 double dJ2dexx = 1. / 3. * (2 * strain[0] - strain[1] - strain[2]);
254 double dJ2deyy = 1. / 3. * (2 * strain[1] - strain[0] - strain[2]);
255 double dJ2dezz = 1. / 3. * (2 * strain[2] - strain[0] - strain[1]);
256 double dJ2dgyz = 0.5 * strain[3];
257 double dJ2dgzx = 0.5 * strain[4];
258 double dJ2dgxy = 0.5 * strain[5];
260 derivative[0] = mK1 + 1. / (2 *
A) * (2 * mK1 * mK1 * I1 + mK2 * dJ2dexx);
261 derivative[1] = mK1 + 1. / (2 *
A) * (2 * mK1 * mK1 * I1 + mK2 * dJ2deyy);
262 derivative[2] = mK1 + 1. / (2 *
A) * (2 * mK1 * mK1 * I1 + mK2 * dJ2dezz);
263 derivative[3] = 1. / (2 *
A) * mK2 * dJ2dgyz;
264 derivative[4] = 1. / (2 *
A) * mK2 * dJ2dgzx;
265 derivative[5] = 1. / (2 *
A) * mK2 * dJ2dgxy;
ePlaneState
Definition: ConstitutivePlaneStateEnum.h:4
Engineering strain.
Definition: EngineeringStrain.h:33
Base class for all exceptions thrown in NuTo.
Definition: Exception.h:9
double Value(const NuTo::EngineeringStrain< TDim > &strain) const
Definition: ModifiedMisesStrainNorm.h:137
Equivalent strain (strain norm) based on the modified mises norm.
Definition: ModifiedMisesStrainNorm.h:31
Eigen::Matrix< double, Voigt::Dim(TDim), 1 > Derivative(const NuTo::EngineeringStrain< TDim > &strain) const
double J2(const EngineeringStrain< 3 > &v)
returns J2 - the second deviatoric strain invariant of the characteristic equation Note the minus si...
Definition: EngineeringStrainInvariants.h:59
const double nu
Definition: LinearElasticDamageBenchmark.cpp:7
Common material parameters for softening materials.
Definition: SofteningMaterial.h:12
ModifiedMisesStrainNorm(double nu, double k, ePlaneState planeState=ePlaneState::PLANE_STRAIN)
Constructor.
Definition: ModifiedMisesStrainNorm.h:71
int v
Definition: Quad2DPatchTest.py:9
Definition: Exception.h:6
double I1(const EngineeringStrain< 3 > &v)
returns I1 - the first strain invariant of the characteristic equation
Definition: EngineeringStrainInvariants.h:32
const NuTo::EngineeringStrain< 3 > strain
Definition: LinearElasticDamageBenchmark.cpp:9
int A
Definition: TimeIntegrationResultForce.py:7