225 {
227
234
235 auto t_w = this->getFTensor0IntegrationWeight();
236
237
238 auto t_row_base = row_data.getFTensor1N<3>();
239
248
250
251 auto t_grad = getFTensor2FromMat<DIM, DIM>(*(
matGradPtr));
252
253
254 auto t_flux = getFTensor1FromMat<DIM>(*
fluxVec);
255
256
257 for (size_t gg = 0; gg != AssemblyDomainEleOp::nbIntegrationPts; ++gg) {
258
260 auto t_J = determinantTensor(t_F);
261 CHKERR invertTensor(t_F, t_J, t_F_inv);
262
263 t_right_Cauchy_Green(M, L) =
266
267 const double alpha = this->getMeasure() * t_w;
268
269
270
271 auto t_vec = getFTensor1FromPtr<DIM>(&this->locMat(0, 0));
272
273
274 auto t_coords = AssemblyDomainEleOp::getFTensor1CoordsAtGaussPts();
275
276 auto alpha_resistance_Jinv =
278 t_F_flux(
l) = t_F(
l, L) * t_flux(L);
279
280 t_FtF_Q(M) = t_right_Cauchy_Green(M, L) * t_flux(L);
281
282
283 size_t rr = 0;
284 for (; rr != AssemblyDomainEleOp::nbRows; ++rr) {
285 auto t_col_grad_base = col_data.getFTensor1DiffN<DIM>(gg, 0);
286
287 t_FtF_Finv_Q_row_base(
J,
l) = t_FtF_Q(M) * t_row_base(M) * t_F_inv(
J,
l);
288 t_F_row_base(
l) = t_F(
l, M) * t_row_base(M);
289 t_F_Q_row_base(
l, M) = t_F_flux(
l) * t_row_base(M);
290
291
292
293 for (size_t cc = 0; cc != AssemblyDomainEleOp::nbCols / DIM; ++cc) {
294 t_vec(
l) += alpha_resistance_Jinv *
295 (-t_FtF_Finv_Q_row_base(
J,
l) * t_col_grad_base(
J) +
296 t_F_Q_row_base(
l, M) * t_col_grad_base(M) +
297 t_F_row_base(
l) * t_col_grad_base(L) * t_flux(L));
298 ++t_col_grad_base;
299 ++t_vec;
300 }
301 ++t_row_base;
302 }
303 for (; rr < AssemblyDomainEleOp::nbRowBaseFunctions; ++rr)
304 ++t_row_base;
305
306 ++t_w;
307 ++t_coords;
308 ++t_flux;
309 ++t_grad;
310 }
311
313}
#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()
#define CHKERR
Inline error check.
FTensor::Index< 'i', SPACE_DIM > i
FTensor::Index< 'J', DIM1 > J
FTensor::Index< 'l', 3 > l
FTensor::Index< 'M', 3 > M
FTensor::Index< 'm', 3 > m