414 {
416
417 const double vol = getMeasure();
418
419 auto t_w = getFTensor0IntegrationWeight();
420
422
424
425 auto t_coords = getFTensor1CoordsAtGaussPts();
426
427
429
430
431 const double r_cylinder = t_coords(0);
432
433
434 const double alpha = t_w * vol *
Beta * (2 * M_PI * r_cylinder);
435
436 for (
int rr = 0; rr !=
nbRows; ++rr) {
437 if (std::abs(t_coords(0)) > std::numeric_limits<double>::epsilon()) {
438 locF[rr] += alpha * t_row_base *
439 (std::pow(static_cast<double>(t_val), 4) -
441 }
442 ++t_row_base;
443 }
444 ++t_coords;
445 ++t_val;
446 ++t_w;
447 }
448
450}
#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()
static auto getFTensor0FromVec(ublas::vector< T, A > &data)
Get tensor rank 0 (scalar) form data vector.
constexpr double T_ambient
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