925 {
927
928 const double vol = getMeasure();
929 auto t_grad_h = getFTensor1FromMat<SPACE_DIM>(*
gradHPtr);
930 auto t_coords = getFTensor1CoordsAtGaussPts();
931
932 auto t_row_base = row_data.getFTensor0N();
933 auto t_w = getFTensor0IntegrationWeight();
934
935 for (int gg = 0; gg != nbIntegrationPts; gg++) {
936
937 const auto r = t_coords(0);
939 auto t_mat = getFTensor1FromPtr<U_FIELD_DIM>(&locMat(0, 0));
941
942 int rr = 0;
943 for (; rr != nbRows; ++rr) {
944 t_row(
i) = (alpha * t_row_base) * t_grad_h(
i);
945 auto t_col_base = col_data.getFTensor0N(gg, 0);
946 for (
int cc = 0; cc != nbCols /
U_FIELD_DIM; ++cc) {
947 t_mat(
i) += t_row(
i) * t_col_base;
948 ++t_mat;
949 ++t_col_base;
950 }
951 ++t_row_base;
952 }
953
954 for (; rr < nbRowBaseFunctions; ++rr)
955 ++t_row_base;
956
957 ++t_grad_h;
958 ++t_w;
959 ++t_coords;
960 }
961
963 }
#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()
constexpr int U_FIELD_DIM
FTensor::Index< 'i', SPACE_DIM > i