191 {
193
197
201
204
205 auto t_F = getFTensor2FromPtr<DIM, DIM>(
207 auto t_P = getFTensor2FromPtr<DIM, DIM>(
209
211
216
218
221
224
226 auto p_c10 = mkparam(this->
C10);
227 auto p_K = mkparam(this->
K);
228
229 ta_F(
i,
J) <<= t_F(
i,
J);
230
233 }
234
236 I1 = ta_F(
i,
I) * ta_F(
i,
I);
237 if constexpr (DIM == 2) {
238
239 I1 += 1.;
240 }
242
243
244
245
246
247
248
249
250
251
252 const auto jacobian_to_minus_two_thirds = pow(det_aF, -2. / 3.);
254 2. * p_c10 * jacobian_to_minus_two_thirds *
255 (ta_F(
i,
I) - (I1 / 3.) * ta_invF(
I,
i)) +
256 p_K * det_aF * (det_aF - 1.) * ta_invF(
I,
i);
257
258 ta_P(
i,
I) >>= t_P(
i,
I);
259
260 trace_off();
261
263 }
#define FTENSOR_INDEX(DIM, I)
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define CHKERR
Inline error check.
FTensor::Index< 'i', SPACE_DIM > i
FTensor::Index< 'J', DIM1 > J
FTensor::Index< 'j', 3 > j
UBlasMatrix< double > MatrixDouble
static MoFEMErrorCode invertTensor(FTensor::Tensor2< T1, DIM, DIM > &t, T2 &det, FTensor::Tensor2< T3, DIM, DIM > &inv_t)
static auto determinantTensor(FTensor::Tensor2< T, DIM, DIM > &t)
Calculate the determinant of a tensor of rank DIM.
constexpr IntegrationType I
static bool useDeformationGradient
boost::shared_ptr< MatOpsData > matOpsDataPtr