LoAdSG
IntegratorHelm< F, N > Class Template Referenceabstract

Integrator for the Helmholtz operator with variable coefficients. More...

#include <helmIntegrator.h>

Inheritance diagram for IntegratorHelm< F, N >:

Classes

class  HelmholtzTerm
 Class for describing a Helmholtz term. More...
 

Public Member Functions

 IntegratorHelm (const F &c, double epsilon, size_t depth_min=0, size_t depth_max=std::numeric_limits< size_t >::max(), double gamma=std::numeric_limits< double >::max())
 Constructor.
 
double stencil_integration (double p_left[N], double p_right[N], BasisFunctionType u[N], BasisFunctionType v[N]) const
 Performs the integration of the FEM function defined by p_left, p_right, u and u with the additional variable coefficient passed to the constructor.
 
virtual double stencil_integration (double p_left[DIM], double p_right[DIM], BasisFunctionType u[DIM], BasisFunctionType v[DIM]) const=0
 

Private Attributes

m_variable_coefficient
 The variable coefficient.
 
double m_epsilon
 Refinement criterion on the hierarchical surplus.
 
size_t m_depth_min
 Minimum recursion depth.
 
size_t m_depth_max
 Maximum recursion depth.
 
double m_gamma
 Value to replace infinte values with.
 

Detailed Description

template<typename F, size_t N>
class IntegratorHelm< F, N >

Integrator for the Helmholtz operator with variable coefficients.

Template Parameters
FFunctor type for the variable coefficient
NNumber of dimensions
Note
Object of type F need to be copyable and implement an operator() ( const std::array<double, N>& )

Constructor & Destructor Documentation

◆ IntegratorHelm()

template<typename F , size_t N>
IntegratorHelm< F, N >::IntegratorHelm ( const F &  c,
double  epsilon,
size_t  depth_min = 0,
size_t  depth_max = std::numeric_limits<size_t>::max(),
double  gamma = std::numeric_limits<double>::max() 
)
inline

Constructor.

Parameters
[in]cThe variable coefficient scalar field
[in]epsilonRefinement criterion of the hierarchical surplus
[in]depth_maxUpper limit for the recursion depth (Neccessary for discontinious functions)
[in]depth_minLower limit for the recursion depth (Might be useful for functions with small curvature in the domain's center)
[in]gammaValue by which an infinte value is replaced (For singularities inside of the domain)

Member Function Documentation

◆ stencil_integration() [1/2]

virtual double InterfaceLocalStiffnessMatrices< DIM >::stencil_integration ( double  p_left[DIM],
double  p_right[DIM],
BasisFunctionType  u[DIM],
BasisFunctionType  v[DIM] 
) const
pure virtualinherited
Parameters
p_leftcoordinate of left boundary of cell
p_rightcoordinate of right boundary of cell
u,vvector describing type of basis function
Returns
a(u,v) with respect to the integration on the cell

◆ stencil_integration() [2/2]

template<typename F , size_t N>
double IntegratorHelm< F, N >::stencil_integration ( double  p_left[N],
double  p_right[N],
BasisFunctionType  u[N],
BasisFunctionType  v[N] 
) const
inline

Performs the integration of the FEM function defined by p_left, p_right, u and u with the additional variable coefficient passed to the constructor.

Parameters
[in]p_leftFirst point of the rectilinear boundary
[in]p_rightSecond point of the rectilinear boundary
[in]uFirst set of base functions used in the bilinear form
[in]vSecond set of base functions used in the bilinear form
Returns
The integral over the tensor product of (u * v) multiplied by the variable coefficient passed to the constructor on the domain spanned by p_left and p_right

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