527 {
529
538
539 const auto nb_integration_pts = row_data.getN().size1();
540 const auto nb_row_base_functions = row_data.getN().size2();
541
542 auto t_w = this->getFTensor0IntegrationWeight();
543
544 auto t_row_base = row_data.getFTensor0N();
545
546 auto t_logC_dC =
548 auto t_C_dF =
550
551
552 auto t_plastic_strain_rate = getFTensor2SymmetricFromMat<DIM>(
554
555
556 auto t_D =
558
559
560 auto t_coords = AssemblyDomainEleOp::getFTensor1CoordsAtGaussPts();
561
562 for (auto gg = 0; gg != nb_integration_pts; ++gg) {
563 auto t_vec = getFTensor1FromPtr<DIM>(&this->locMat(0, 0));
564 double alpha = this->getMeasure() * t_w;
565
566 auto rr = 0;
567 for (; rr != AssemblyDomainEleOp::nbRows; ++rr) {
568 auto t_col_grad_base = col_data.getFTensor1DiffN<DIM>(gg, 0);
569 for (auto cc = 0; cc != AssemblyDomainEleOp::nbCols / DIM; cc++) {
570#ifdef HENCKY_SMALL_STRAIN
571
573 0.5 * alpha * t_row_base *
575 (t_plastic_strain_rate(
i,
j) * t_D(
i,
j,
k,
l) *
576 t_logC_dC(
k,
l, o, p) * t_C_dF(o, p,
m,
n)) *
578#else
579
581 0.5 * alpha * t_row_base *
583 (t_plastic_strain_rate(
i,
j) * t_D(
i,
j,
k,
l) *
584 t_logC_dC(
k,
l, o, p) * t_C_dF(o, p,
m,
n)) *
586#endif
587 ++t_col_grad_base;
588 ++t_vec;
589 }
590
591 ++t_row_base;
592 }
593 for (; rr != nb_row_base_functions; ++rr)
594 ++t_row_base;
595
596 ++t_w;
597 ++t_plastic_strain_rate;
598 ++t_D;
599 ++t_coords;
600 ++t_logC_dC;
601 ++t_C_dF;
602 }
603
605}
#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()
FTensor::Index< 'i', SPACE_DIM > i
const double n
refractive index of diffusive medium
FTensor::Index< 'l', 3 > l
FTensor::Index< 'j', 3 > j
FTensor::Index< 'k', 3 > k
FTensor::Index< 'm', 3 > m