AMDiS  0.1
The Adaptive Multi-Dimensional Simulation Toolbox
AssemblerInterface.hpp
1 #pragma once
2 
3 #include <type_traits>
4 
5 #include <dune/common/dynmatrix.hh>
6 #include <dune/common/dynvector.hh>
7 
8 #include <amdis/ContextGeometry.hpp>
9 
10 namespace AMDiS
11 {
12  template <class LC, class C>
14  {
15  using LocalContext = LC;
16  using ElementContainer = C;
17  };
18 
20  template <class Traits, class... Nodes>
22  {
23  using LocalContext = typename Traits::LocalContext;
24  using ContextType = Impl::ContextTypes<LocalContext>;
25 
26  public:
28  using Element = typename ContextType::Entity;
30  using Geometry = typename Element::Geometry;
31 
32  static constexpr int numNodes = sizeof...(Nodes);
33  static_assert( numNodes == 1 || numNodes == 2,
34  "VectorAssembler gets 1 Node, MatrixAssembler gets 2 Nodes!");
35 
36  public:
38  virtual ~AssemblerInterface() = default;
39 
41  virtual void bind(Element const& element, Geometry const& geometry) = 0;
42 
44  virtual void unbind() = 0;
45 
47  virtual void assemble(typename Traits::LocalContext const& localContext,
48  Nodes const&... nodes,
49  typename Traits::ElementContainer& elementMatrixVector) = 0;
50  };
51 
52 } // end namespace AMDiS
typename Element::Geometry Geometry
The geometry of the Element.
Definition: AssemblerInterface.hpp:30
Contains all classes needed for solving linear and non linear equation systems.
Definition: AdaptBase.hpp:6
Definition: AssemblerInterface.hpp:13
Abstract base-class of a Assembler.
Definition: AssemblerInterface.hpp:21
typename ContextType::Entity Element
The codim=0 grid entity.
Definition: AssemblerInterface.hpp:28