6 #include <amdis/BoundarySubset.hpp> 7 #include <amdis/AssemblerInterface.hpp> 8 #include <amdis/typetree/TreeContainer.hpp> 23 template <
class Gr
idView,
class Container>
26 using Element =
typename GridView::template Codim<0>::Entity;
27 using Intersection =
typename GridView::Intersection;
32 std::shared_ptr<Op> op;
37 template <
class... Nodes>
43 return element_.empty() && boundary_.empty() && intersection_.empty();
47 bool doAssemble()
const 49 return !assembled_ || changing_;
54 return doAssemble() && !empty();
59 void bind(Element
const& elem, Geo
const& geo)
61 for (
auto& op : element_) op->bind(elem,geo);
62 for (
auto& op : intersection_) op->bind(elem,geo);
63 for (
auto& data : boundary_) data.op->bind(elem,geo);
69 for (
auto& op : element_) op->unbind();
70 for (
auto& op : intersection_) op->unbind();
71 for (
auto& data : boundary_) data.op->unbind();
79 element_.emplace_back(FWD(op));
85 intersection_.emplace_back(FWD(op));
91 boundary_.push_back({FWD(op), b});
95 auto& onElement() {
return element_; }
96 auto const& onElement()
const {
return element_; }
98 auto& onIntersection() {
return intersection_; }
99 auto const& onIntersection()
const {
return intersection_; }
101 auto& onBoundary() {
return boundary_; }
102 auto const& onBoundary()
const {
return boundary_; }
115 std::vector<std::shared_ptr<ElementAssembler>> element_;
118 std::vector<std::shared_ptr<IntersectionAssembler>> intersection_;
121 std::vector<DataElement<IntersectionAssembler>> boundary_;
124 bool assembled_ =
false;
127 bool changing_ =
true;
133 template <
class RowNode,
class ColNode>
137 template <
class Node>
142 template <
class RowBasis,
class ColBasis,
class ElementMatrix>
143 using MatrixOperators
144 = TypeTree::TreeMatrix<
146 typename RowBasis::LocalView::TreeCache,
147 typename ColBasis::LocalView::TreeCache>;
149 template <
class Basis,
class ElementVector>
150 using VectorOperators
151 = TypeTree::TreeContainer<
153 typename Basis::LocalView::TreeCache>;
Class defining a subset of a domain boundary.
Definition: BoundarySubset.hpp:22
Data< RowNode, ColNode > MatData
List of operators associated with matrix blocks (RowNode, ColNode)
Definition: OperatorList.hpp:134
Definition: OperatorList.hpp:24
Contains all classes needed for solving linear and non linear equation systems.
Definition: AdaptBase.hpp:6
Definition: OperatorList.hpp:16
Data< Node > VecData
List of operators associated with vector blocks [Node].
Definition: OperatorList.hpp:138
Definition: AssemblerInterface.hpp:13
Abstract base-class of a Assembler.
Definition: AssemblerInterface.hpp:21
Definition: OperatorList.hpp:14
Definition: OperatorList.hpp:15