v0.15.0
Loading...
Searching...
No Matches
Poisson2DHomogeneousOperators::OpDomainRhsVectorF Struct Reference

#include "tutorials/scl-1/src/poisson_2d_homogeneous.hpp"

Inheritance diagram for Poisson2DHomogeneousOperators::OpDomainRhsVectorF:
[legend]
Collaboration diagram for Poisson2DHomogeneousOperators::OpDomainRhsVectorF:
[legend]

Public Member Functions

 OpDomainRhsVectorF (std::string field_name, ScalarFunc source_term_function)
 
MoFEMErrorCode iNtegrate (EntitiesFieldData::EntData &data)
 

Private Attributes

ScalarFunc sourceTermFunc
 

Detailed Description

Examples
poisson_2d_homogeneous.cpp.

Definition at line 94 of file poisson_2d_homogeneous.hpp.

Constructor & Destructor Documentation

◆ OpDomainRhsVectorF()

Poisson2DHomogeneousOperators::OpDomainRhsVectorF::OpDomainRhsVectorF ( std::string field_name,
ScalarFunc source_term_function )
inline
Examples
poisson_2d_homogeneous.hpp.

Definition at line 96 of file poisson_2d_homogeneous.hpp.

97 : AssemblyDomainEleOp(field_name, field_name, DomainEleOp::OPROW),
98 sourceTermFunc(source_term_function) {}
constexpr auto field_name
FormsIntegrators< DomainEleOp >::Assembly< A >::OpBase AssemblyDomainEleOp

Member Function Documentation

◆ iNtegrate()

MoFEMErrorCode Poisson2DHomogeneousOperators::OpDomainRhsVectorF::iNtegrate ( EntitiesFieldData::EntData & data)
inline
Examples
poisson_2d_homogeneous.hpp.

Definition at line 100 of file poisson_2d_homogeneous.hpp.

100 {
102
103 const int nb_dofs = data.getIndices().size();
104
105 this->locF.resize(nb_dofs, false);
106 this->locF.clear();
107
108 // get element area
109 const double area = getMeasure();
110
111 // get number of integration points
112 const int nb_integration_points = getGaussPts().size2();
113 // get integration weights
114 auto t_w = getFTensor0IntegrationWeight();
115 auto t_coords = getFTensor1CoordsAtGaussPts();
116
117 // get base function
118 auto t_base = data.getFTensor0N();
119
120 // START THE LOOP OVER INTEGRATION POINTS TO CALCULATE LOCAL VECTOR
121 for (int gg = 0; gg != nb_integration_points; gg++) {
122 const double a = t_w * area;
123
124 // get source term at the integration point coordinates
125 double body_source =
126 sourceTermFunc(t_coords(0), t_coords(1), t_coords(2));
127 for (int rr = 0; rr != nb_dofs; rr++) {
128 this->locF[rr] += t_base * body_source * a;
129
130 // move to the next base function
131 ++t_base;
132 }
133
134 // move to the weight of the next integration point
135 ++t_w;
136 // move to the coordinates of the next integration point
137 ++t_coords;
138 }
139
141 }
constexpr double a
#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::Tensor0< FTensor::PackPtr< double *, 1 > > getFTensor0N(const FieldApproximationBase base)
Get base function as Tensor0.
const VectorInt & getIndices() const
Get global indices of dofs on entity.

Member Data Documentation

◆ sourceTermFunc

ScalarFunc Poisson2DHomogeneousOperators::OpDomainRhsVectorF::sourceTermFunc
private
Examples
poisson_2d_homogeneous.hpp.

Definition at line 144 of file poisson_2d_homogeneous.hpp.


The documentation for this struct was generated from the following file: