149 {
151
152 auto t_w = getFTensor0IntegrationWeight();
153 auto t_normal = getFTensor1Normal();
154 auto t_row_base = row_data.getFTensor0N();
155 auto t_coords = getFTensor1CoordsAtGaussPts();
156
157 for (int gg = 0; gg != nbIntegrationPts; ++gg) {
158
159 auto t_mat = getFTensor1FromPtr<U_FIELD_DIM>(&locMat(0, 0));
160
161 const double r = t_coords(0);
163
164 int rr = 0;
165 for (; rr != nbRows; ++rr) {
166
167 auto t_col_base = col_data.getFTensor0N(gg, 0);
168 const double a =
alpha * t_row_base;
169
170 for (
int cc = 0; cc != nbCols /
U_FIELD_DIM; ++cc) {
171 t_mat(
i) += (
a * t_col_base) * t_normal(
i);
172 ++t_col_base;
173 ++t_mat;
174 }
175 ++t_row_base;
176 }
177
178 for (; rr < nbRowBaseFunctions; ++rr)
179 ++t_row_base;
180
181 ++t_w;
182 ++t_coords;
183 }
184
186 };
#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