Integrate local entity vector.
677 {
679
681
683
684 double vol = getVolume();
685
686 auto t_w = getFTensor0IntegrationWeight();
687
689
691
693
695
696 auto t_coords = getFTensor1CoordsAtGaussPts();
697
699
700 const double alpha = vol * t_w;
701 const double source_term =
704 grad_term(
i) = (alpha *
A(t_u)) * t_grad(
i);
705
708
709 for (
int rr = 0; rr !=
nbRows; rr++) {
710
711 t_a += t_v_grad(
i) * grad_term(
i) + t_v * source_term;
712 ++t_a;
713 ++t_v;
714 ++t_v_grad;
715 }
716 ++t_w;
717 ++t_u;
718 ++t_grad;
719 ++t_coords;
720 }
722 }
#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::Tensor1< FTensor::PackPtr< T *, S >, Tensor_Dim > getFTensor1FromMat(ublas::matrix< T, L, A > &data)
Get tensor rank 1 (vector) form data matrix.
static auto getFTensor0FromVec(ublas::vector< T, A > &data)
Get tensor rank 0 (scalar) form data vector.
FTensor::Tensor1< FTensor::PackPtr< double *, Tensor_Dim >, Tensor_Dim > getFTensor1DiffN(const FieldApproximationBase base)
Get derivatives of base functions.
FTensor::Tensor0< FTensor::PackPtr< double *, 1 > > getFTensor0N(const FieldApproximationBase base)
Get base function as Tensor0.
FTensor::Index< 'i', 3 > i