Bembel
LinearForm.hpp
1 // This file is part of Bembel, the higher order C++ boundary element library.
2 //
3 // Copyright (C) 2022 see <http://www.bembel.eu>
4 //
5 // It was written as part of a cooperation of J. Doelz, H. Harbrecht, S. Kurz,
6 // M. Multerer, S. Schoeps, and F. Wolf at Technische Universitaet Darmstadt,
7 // Universitaet Basel, and Universita della Svizzera italiana, Lugano. This
8 // source code is subject to the GNU General Public License version 3 and
9 // provided WITHOUT ANY WARRANTY, see <http://www.bembel.eu> for further
10 // information.
11 #ifndef BEMBEL_SRC_LINEARFORM_LINEARFORM_HPP_
12 #define BEMBEL_SRC_LINEARFORM_LINEARFORM_HPP_
13 
14 namespace Bembel {
24 template <typename Derived>
26  enum { YOU_DID_NOT_SPECIFY_LINEARFORM_TRAITS = 1 };
27 };
28 
37 template <typename Derived, typename Scalar>
39  // Constructors
40  LinearFormBase() {}
41 
42  // the user has to provide the implementation of this function, which
43  // tells
44  // is able to evaluate the integrand of the Galerkin formulation in a
45  // pair
46  // of quadrature points represented as a
47  // Surface point [xi; w; Chi(xi); dsChi(xi); dtChi(xi)]
48  template <class T>
49  void evaluateIntegrand(
50  const T &super_space, const SurfacePoint &p,
51  Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic> *intval) const {
52  static_cast<const Derived *>(this)->evaluateLinearForm_impl(super_space, p,
53  intval);
54  return;
55  }
56  // pointer to the derived object
57  Derived &derived() { return *static_cast<Derived *>(this); }
58  // const pointer to the derived object
59  const Derived &derived() const { return *static_cast<const Derived *>(this); }
60 };
61 } // namespace Bembel
62 #endif // BEMBEL_SRC_LINEARFORM_LINEARFORM_HPP_
Eigen::Matrix< double, 12, 1 > SurfacePoint
typedef of SurfacePoint
Routines for the evalutation of pointwise errors.
Definition: AnsatzSpace.hpp:14
This class provides a blueprint for the class that needs to be specialized for assembly of the right ...
Definition: LinearForm.hpp:38
This class needs to be specialized, such that key traits for user defined LinearForms are available.
Definition: LinearForm.hpp:25