11 #ifndef BEMBEL_SRC_LINEAROPERATOR_LINEAROPERATORBASE_HPP_
12 #define BEMBEL_SRC_LINEAROPERATOR_LINEAROPERATORBASE_HPP_
23 template <
typename Derived>
32 void evaluateIntegrand(
35 Eigen::Dynamic, Eigen::Dynamic> *intval)
const {
36 static_cast<const Derived *
>(
this)->evaluateIntegrand_impl(super_space, p1,
46 getFunctionSpaceVectorDimension<LinearOperatorTraits<Derived>::Form>() *
52 return static_cast<const Derived *
>(
this)->evaluateFMMInterpolation_impl(
56 int get_FarfieldQuadratureDegree(
int ansatz_degree)
const {
74 (distance * (1 << level) < 1) ? -(level * log(2.)) : log(distance);
83 (alpha + ansatz_degree) * level * log(2.) -
86 double denominator = (level + 2) * log(2.) + distance_log;
88 return 0.5 * numerator / denominator;
91 Derived &derived() {
return *
static_cast<Derived *
>(
this); }
93 const Derived &derived()
const {
return *
static_cast<const Derived *
>(
this); }
Eigen::Matrix< double, 12, 1 > SurfacePoint
typedef of SurfacePoint
Routines for the evalutation of pointwise errors.
constexpr int getFunctionSpaceVectorDimension()
linear operator base class. this serves as a common interface for existing linear operators.
int getNearfieldQuadratureDegree(int ansatz_degree, double distance, int level) const
Compute quadrature degree for numerical integretation close to the singularity based on distance,...
struct containing specifications on the linear operator has to be specialized or derived for any part...