454 {
456
457 const double vol = getMeasure();
458
459 auto t_w = getFTensor0IntegrationWeight();
460
462
463 auto t_coords = getFTensor1CoordsAtGaussPts();
464
465 const double time = getFEMethod()->ts_t;
466
467
468 constexpr double flux_p = -0.03e6;
469 constexpr double flux_c = -0.23e6;
470
471
473
474
475 const double r_cylinder = t_coords(0);
476
477 const double r = std::sqrt(t_coords(
i) * t_coords(
i));
478 const double s = std::abs(t_coords(1)) /
r;
479
480
481 const double alpha = t_w * vol * (2 * M_PI * r_cylinder);
482
483 for (
int rr = 0; rr !=
nbRows; ++rr) {
484 locF[rr] += alpha * t_row_base * (s * flux_p + flux_c) * time;
485 ++t_row_base;
486 }
487 ++t_coords;
488 ++t_w;
489 }
490
492}
#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', 2 > i
summit Index
FTensor::Tensor0< FTensor::PackPtr< double *, 1 > > getFTensor0N(const FieldApproximationBase base)
Get base function as Tensor0.
VectorDouble locF
local entity vector
int nbRows
number of dofs on rows
int nbIntegrationPts
number of integration points