958 {
960 const int nb_row_dofs = row_data.getIndices().size();
961 const int nb_row_base_functions = row_data.getN().size2();
962
963 if (nb_row_dofs) {
964
968 }
969
970 auto t_disp = getFTensor1FromMat<3>(*
commonDataPtr->mDispPtr);
971
972 const int nb_integration_pts = getGaussPts().size2();
973 auto t_row_val = row_data.getFTensor0N();
974 auto t_w = getFTensor0IntegrationWeight();
975 const double vol = getMeasure();
976 auto t_coords = getFTensor1CoordsAtGaussPts();
977
979 for (int gg = 0; gg != nb_integration_pts; ++gg) {
980 const double a = vol * t_w;
981
982
983
984
985
986
987 auto t_nf = getFTensor1FromArray<3, 3>(locF);
988 int rr = 0;
989 for (;rr != nb_row_dofs / 3; ++rr) {
990 t_nf(
i) +=
a * t_row_val * (t_disp(
i) - bc_disp(
i));
991 ++t_row_val;
992 ++t_nf;
993 }
994 for (; rr < nb_row_base_functions; ++rr)
995 ++t_row_val;
996 ++t_disp;
997 ++t_coords;
998 ++t_w;
999 }
1000 }
1002 }
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#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