11 #ifndef BEMBEL_SRC_POTENTIAL_POTENTIAL_HPP_
12 #define BEMBEL_SRC_POTENTIAL_POTENTIAL_HPP_
14 #include <Eigen/Dense>
16 #include "../LinearOperator/DifferentialFormEnum.hpp"
17 #include "../LinearOperator/LinearOperatorTraits.hpp"
18 #include "../util/Macros.hpp"
27 template <
typename Derived>
29 enum { YOU_DID_NOT_SPECIFY_POTENTIAL_TRAITS = 1 };
35 template <
typename S,
typename T>
37 enum { RETURN_TYPE_ONLY_SPECIFIED_FOR_DOUBLE_OR_COMPLEX_DOUBLE = 1 };
45 typedef double Scalar;
53 typedef std::complex<double> Scalar;
61 typedef std::complex<double> Scalar;
69 typedef std::complex<double> Scalar;
80 template <
typename Derived,
typename LinOp>
102 const Eigen::VectorXd &point,
const SurfacePoint &p)
const {
103 return static_cast<const Derived *
>(
this)->evaluatePotential_impl(
104 ansatz_space, coeff, point, p);
107 Derived &derived() {
return *
static_cast<Derived *
>(
this); }
109 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()
struct containing specifications on the linear operator has to be specialized or derived for any part...
functional base class. this serves as a common interface for existing functionals.
Base case for specifying the return type of the potential.
struct containing specifications on the functional has to be specialized or derived for any particula...