321 {
323
324 const double vol = getMeasure();
325 auto t_u = getFTensor1FromMat<U_FIELD_DIM>(*
uPtr);
326 auto t_grad_u = getFTensor2FromMat<U_FIELD_DIM, SPACE_DIM>(*
gradUPtr);
327 auto t_h = getFTensor0FromVec(*
hPtr);
328 auto t_coords = getFTensor1CoordsAtGaussPts();
329
330 auto t_row_base = row_data.getFTensor0N();
331 auto t_row_diff_base = row_data.getFTensor1DiffN<
SPACE_DIM>();
332
333 auto t_w = getFTensor0IntegrationWeight();
334
335 auto get_mat = [&](const int rr) {
336 return getFTensor2FromArray<SPACE_DIM, SPACE_DIM, SPACE_DIM>(locMat, rr);
337 };
338
339 auto ts_a = getTSa();
341
342 for (int gg = 0; gg != nbIntegrationPts; gg++) {
343
344 const double r = t_coords(0);
348
350 const double beta1 = beta0 * ts_a;
352
353 int rr = 0;
355
357 auto t_col_base = col_data.getFTensor0N(gg, 0);
358 auto t_col_diff_base = col_data.getFTensor1DiffN<
SPACE_DIM>(gg, 0);
359
361
362
363
364 t_d_stress(
l,
j,
k) = t_D(
i,
j,
k,
l) * (
alpha * t_row_diff_base(
i));
365
366 for (
int cc = 0; cc != nbCols /
U_FIELD_DIM; ++cc) {
367
368 const double bb = t_row_base * t_col_base;
369
370 t_mat(
i,
j) += (beta1 * bb) *
t_kd(
i,
j);
371 t_mat(
i,
j) += (beta0 * bb) * t_grad_u(
i,
j);
373 (beta0 * t_row_base) *
t_kd(
i,
j) * (t_col_diff_base(
k) * t_u(
k));
374 t_mat(
i,
j) += t_d_stress(
i,
j,
k) * t_col_diff_base(
k);
375
376
378 t_mat(0, 0) += (bb * (
alpha / t_coords(0))) * (2 *
mu);
379 }
380
381 ++t_mat;
382 ++t_col_base;
383 ++t_col_diff_base;
384 }
385
386 ++t_row_base;
387 ++t_row_diff_base;
388 }
389
390 for (; rr < nbRowBaseFunctions; ++rr) {
391 ++t_row_diff_base;
392 ++t_row_base;
393 }
394
395 ++t_u;
396 ++t_grad_u;
397 ++t_h;
398
399 ++t_coords;
400 ++t_w;
401 }
402
404 }
Kronecker Delta class symmetric.
#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
constexpr CoordinateTypes coord_type
select coordinate system <CARTESIAN, CYLINDRICAL>;
constexpr double rho_diff
FTensor::Index< 'i', SPACE_DIM > i
FTensor::Index< 'l', 3 > l
FTensor::Index< 'j', 3 > j
FTensor::Index< 'k', 3 > k
const double r
rate factor