1018 {
1020 const int nb_row_dofs = row_data.getIndices().size();
1021 const int nb_row_base_functions = row_data.getN().size2();
1022
1023 if (nb_row_dofs) {
1024
1028 }
1029
1030 auto t_coords = getFTensor1CoordsAtGaussPts();
1031
1032 const int nb_integration_pts = getGaussPts().size2();
1033 auto t_row_val = row_data.getFTensor0N();
1034 auto t_w = getFTensor0IntegrationWeight();
1035 const double vol = getMeasure();
1037 auto t_omega = getFTensor1FromArray<3, 3>(
sourceVec);
1038 auto t_cen_coords = getFTensor1FromArray<3, 3>(*
centerCoords);
1040
1042
1043 for (int gg = 0; gg != nb_integration_pts; ++gg) {
1044 const double a = vol * t_w;
1045 c_dist(
i) = t_cen_coords(
i) - t_coords(
i);
1046 rot_disp(
i) = c_dist(
i) - rot(
j,
i) * c_dist(
j);
1047
1048 auto t_nf = getFTensor1FromArray<3, 3>(locF);
1049 int rr = 0;
1050 for (; rr != nb_row_dofs / 3; ++rr) {
1051 t_nf(
i) -=
a * t_row_val * rot_disp(
i);
1052 ++t_row_val;
1053 ++t_nf;
1054 }
1055 for (; rr < nb_row_base_functions; ++rr)
1056 ++t_row_val;
1057
1058 ++t_coords;
1059 ++t_w;
1060 }
1061 }
1063 }
#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
FTensor::Index< 'j', 3 > j