588 {
593 double *w_ptr = &(OP::getGaussPts()(DIM, 0));
594
598
599 auto t_stress = getFTensor2SymmetricFromMat<3>(
commonDataPtr->stressMatrix);
600
601 const auto vol = OP::getMeasure();
602 auto t_w = OP::getFTensor0IntegrationWeight();
603 for (int gg = 0; gg != OP::nbIntegrationPts; gg++) {
604 double alpha = vol * t_w;
605 for (int bb = 0; bb != OP::nbRows; ++bb) {
606 OP::locF[bb] += alpha * (t_stress(
i,
j) * t_diff(
i,
j));
607 ++t_diff;
608 }
609 ++t_w;
610 ++t_stress;
611 }
613}
#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
FTensor::Index< 'j', 3 > j
static FTensor::Tensor2_symmetric< FTensor::PackPtr< double *, 6 >, 3 > getFTensor2SymmetricDiffBase(DataForcesAndSourcesCore::EntData &data, MatrixDouble &storage, const bool b_bar, const int nb_integration_pts, double *w_ptr, FTensor::Number< 2 >)
MatrixDouble baseStorage
Store tensorial base functions.