7 #include <dune/common/concept.hh> 8 #include <dune/functions/functionspacebases/concepts.hh> 9 #include <dune/functions/functionspacebases/subspacebasis.hh> 11 #include <amdis/Boundary.hpp> 12 #include <amdis/BoundaryCondition.hpp> 13 #include <amdis/BoundarySubset.hpp> 14 #include <amdis/common/Concepts.hpp> 15 #include <amdis/common/TypeTraits.hpp> 16 #include <amdis/typetree/RangeType.hpp> 17 #include <amdis/typetree/TreePath.hpp> 38 template <
class SubBasis,
class ValueGr
idFct>
42 using GridView =
typename SubBasis::GridView;
43 using Intersection =
typename GridView::Intersection;
45 using Domain =
typename GridView::template Codim<0>::Geometry::GlobalCoordinate;
46 using Range = TYPEOF(std::declval<ValueGridFct>()(std::declval<Domain>()));
50 template <
class Values,
53 : basis_(
std::move(basis))
54 , boundarySubset_(
std::move(boundarySubset))
55 , values_(FWD(values))
59 template <
class Basis,
class TP,
class Values,
60 REQUIRES(Concepts::GlobalBasis<Basis>)>
64 std::move(boundarySubset), FWD(values))
68 template <
class Basis,
class Values,
69 REQUIRES(Concepts::GlobalBasis<Basis>)>
72 std::move(boundarySubset), FWD(values))
88 template <
class Mat,
class Sol,
class Rhs>
89 void apply(Mat& matrix, Sol& solution, Rhs& rhs);
96 std::vector<bool> dirichletNodes_;
102 template <
class B,
class TP,
class Values>
108 template <
class B,
class TP,
class Values,
109 REQUIRES(Concepts::GlobalBasis<B>)>
114 template <
class B,
class Values,
115 REQUIRES(Concepts::GlobalBasis<B>)>
121 #include "DirichletBC.inc.hpp"
DirichletBC(SubBasis basis, BoundarySubset< Intersection > boundarySubset, Values &&values)
Constructor accepting subspacebases.
Definition: DirichletBC.hpp:52
constexpr bool Functor
A Functor is a function F with signature Signature.
Definition: Concepts.hpp:134
Definition: AdaptiveGrid.hpp:373
Definition: FieldMatVec.hpp:12
Implements a boundary condition of Dirichlet-type.
Definition: DirichletBC.hpp:39
Contains all classes needed for solving linear and non linear equation systems.
Definition: AdaptBase.hpp:6
DirichletBC(Basis const &basis, TP const &treePath, BoundarySubset< Intersection > boundarySubset, Values &&values)
Make a DirichletBC from a basis with treepath arguments.
Definition: DirichletBC.hpp:61
void init()
Definition: DirichletBC.inc.hpp:14
void apply(Mat &matrix, Sol &solution, Rhs &rhs)
Apply dirichlet BC to matrix and vector.
Definition: DirichletBC.inc.hpp:38
DirichletBC(Basis const &basis, BoundarySubset< Intersection > boundarySubset, Values &&values)
Make a DirichletBC from a global basis.
Definition: DirichletBC.hpp:70