v0.14.0
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
MoFEM::OpSourceImpl< 1, FIELD_DIM, GAUSS, SourceFunctionSpecialization::S< OpBase > > Struct Template Reference

#include <src/finite_elements/LinearFormsIntegratorsImpl.hpp>

Inheritance diagram for MoFEM::OpSourceImpl< 1, FIELD_DIM, GAUSS, SourceFunctionSpecialization::S< OpBase > >:
[legend]
Collaboration diagram for MoFEM::OpSourceImpl< 1, FIELD_DIM, GAUSS, SourceFunctionSpecialization::S< OpBase > >:
[legend]

Public Member Functions

 OpSourceImpl (const std::string field_name, TimeFun time_fun, VectorFun< FIELD_DIM > source_fun, boost::shared_ptr< Range > ents_ptr=nullptr)
 Construct a new Op Source Impl object. More...
 
 OpSourceImpl (const std::string field_name, VectorFun< FIELD_DIM > source_fun, boost::shared_ptr< Range > ents_ptr=nullptr)
 Construct a new Op Source Impl object. More...
 

Protected Member Functions

MoFEMErrorCode iNtegrate (EntitiesFieldData::EntData &data)
 

Protected Attributes

VectorFun< FIELD_DIMsourceFun
 

Detailed Description

template<int FIELD_DIM, typename OpBase>
struct MoFEM::OpSourceImpl< 1, FIELD_DIM, GAUSS, SourceFunctionSpecialization::S< OpBase > >

Definition at line 66 of file LinearFormsIntegratorsImpl.hpp.

Constructor & Destructor Documentation

◆ OpSourceImpl() [1/2]

template<int FIELD_DIM, typename OpBase >
MoFEM::OpSourceImpl< 1, FIELD_DIM, GAUSS, SourceFunctionSpecialization::S< OpBase > >::OpSourceImpl ( const std::string  field_name,
TimeFun  time_fun,
VectorFun< FIELD_DIM source_fun,
boost::shared_ptr< Range ents_ptr = nullptr 
)
inline

Construct a new Op Source Impl object.

Parameters
field_name
time_fun
source_fun
ents_ptr

Definition at line 77 of file LinearFormsIntegratorsImpl.hpp.

80  : OpBase(field_name, field_name, OpBase::OPROW, time_fun, ents_ptr) {}

◆ OpSourceImpl() [2/2]

template<int FIELD_DIM, typename OpBase >
MoFEM::OpSourceImpl< 1, FIELD_DIM, GAUSS, SourceFunctionSpecialization::S< OpBase > >::OpSourceImpl ( const std::string  field_name,
VectorFun< FIELD_DIM source_fun,
boost::shared_ptr< Range ents_ptr = nullptr 
)
inline

Construct a new Op Source Impl object.

Parameters
field_name
source_fun
ents_ptr

Definition at line 89 of file LinearFormsIntegratorsImpl.hpp.

91  : OpBase(field_name, field_name, OpBase::OPROW, ents_ptr),
92  sourceFun(source_fun) {}

Member Function Documentation

◆ iNtegrate()

template<int FIELD_DIM, typename OpBase >
MoFEMErrorCode MoFEM::OpSourceImpl< 1, FIELD_DIM, GAUSS, SourceFunctionSpecialization::S< OpBase > >::iNtegrate ( EntitiesFieldData::EntData data)
protected

Definition at line 526 of file LinearFormsIntegratorsImpl.hpp.

526  {
529 
530  // get element volume
531  const double vol = OpBase::getMeasure();
532  // get integration weights
533  auto t_w = OpBase::getFTensor0IntegrationWeight();
534  // get base function gradient on rows
535  auto t_row_base = row_data.getFTensor0N();
536  // get coordinate at integration points
537  auto t_coords = OpBase::getFTensor1CoordsAtGaussPts();
538  // loop over integration points
539  for (int gg = 0; gg != OpBase::nbIntegrationPts; gg++) {
540  // source file
541  auto t_source = sourceFun(t_coords(0), t_coords(1), t_coords(2));
542  // take into account Jacobian
543  const double alpha = t_w * vol;
544  // loop over rows base functions
545  auto t_nf = getFTensor1FromArray<FIELD_DIM, FIELD_DIM>(OpBase::locF);
546  int rr = 0;
547  for (; rr != OpBase::nbRows / FIELD_DIM; ++rr) {
548  t_nf(i) += alpha * t_row_base * t_source(i);
549  ++t_row_base;
550  ++t_nf;
551  }
552  for (; rr < OpBase::nbRowBaseFunctions; ++rr)
553  ++t_row_base;
554  ++t_coords;
555  ++t_w; // move to another integration weight
556  }
558 }

Member Data Documentation

◆ sourceFun

template<int FIELD_DIM, typename OpBase >
VectorFun<FIELD_DIM> MoFEM::OpSourceImpl< 1, FIELD_DIM, GAUSS, SourceFunctionSpecialization::S< OpBase > >::sourceFun
protected

Definition at line 95 of file LinearFormsIntegratorsImpl.hpp.


The documentation for this struct was generated from the following file:
MoFEM::OpBaseImpl::nbIntegrationPts
int nbIntegrationPts
number of integration points
Definition: FormsIntegrators.hpp:238
OpBase
OpBaseImpl< PETSC, EdgeEleOp > OpBase
Definition: radiation.cpp:29
FIELD_DIM
constexpr int FIELD_DIM
Definition: child_and_parent.cpp:15
MoFEM::OpBaseImpl::locF
VectorDouble locF
local entity vector
Definition: FormsIntegrators.hpp:251
MoFEM::OpSourceImpl< 1, FIELD_DIM, GAUSS, SourceFunctionSpecialization::S< OpBase > >::sourceFun
VectorFun< FIELD_DIM > sourceFun
Definition: LinearFormsIntegratorsImpl.hpp:95
i
FTensor::Index< 'i', SPACE_DIM > i
Definition: hcurl_divergence_operator_2d.cpp:27
field_name
constexpr auto field_name
Definition: poisson_2d_homogeneous.cpp:13
FTensor::Index< 'i', FIELD_DIM >
MoFEM::OpBaseImpl::nbRowBaseFunctions
int nbRowBaseFunctions
number or row base functions
Definition: FormsIntegrators.hpp:239
MoFEM::OpBaseImpl::nbRows
int nbRows
number of dofs on rows
Definition: FormsIntegrators.hpp:236
MoFEMFunctionReturn
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:429
MoFEMFunctionBegin
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:359