21 #ifndef __MULTI_MESH_DIRICHLET_BC_H 22 #define __MULTI_MESH_DIRICHLET_BC_H 26 #include <dolfin/mesh/SubDomain.h> 32 class MultiMeshFunctionSpace;
33 class GenericFunction;
64 std::shared_ptr<const GenericFunction> g,
65 std::shared_ptr<const SubDomain> sub_domain,
66 std::string method=
"topological",
67 bool check_midpoint=
true,
68 bool exclude_overlapped_boundaries=
true);
86 std::shared_ptr<const GenericFunction> g,
88 std::size_t sub_domain,
90 std::string method=
"topological");
107 {
return _function_space; }
113 std::shared_ptr<DirichletBC>
view(std::size_t part)
const 115 dolfin_assert(part < _bcs.size());
173 class MultiMeshSubDomain :
public SubDomain 178 MultiMeshSubDomain(std::shared_ptr<const SubDomain> sub_domain,
179 std::shared_ptr<const MultiMesh> multimesh,
180 bool exclude_overlapped_boundaries);
183 ~MultiMeshSubDomain();
189 void set_current_part(std::size_t current_part);
194 std::shared_ptr<const SubDomain> _user_sub_domain;
197 std::shared_ptr<const MultiMesh> _multimesh;
200 std::size_t _current_part;
203 bool _exclude_overlapped_boundaries;
208 std::shared_ptr<const MultiMeshFunctionSpace> _function_space;
211 std::vector<std::shared_ptr<DirichletBC>> _bcs;
214 mutable std::shared_ptr<MultiMeshSubDomain> _sub_domain;
217 bool _exclude_overlapped_boundaries;
MultiMeshDirichletBC(std::shared_ptr< const MultiMeshFunctionSpace > V, std::shared_ptr< const GenericFunction > g, std::shared_ptr< const SubDomain > sub_domain, std::string method="topological", bool check_midpoint=true, bool exclude_overlapped_boundaries=true)
Definition: MultiMeshDirichletBC.cpp:35
~MultiMeshDirichletBC()
Destructor.
Definition: MultiMeshDirichletBC.cpp:146
Definition: SubDomain.h:42
Definition: MultiMeshDirichletBC.h:42
void homogenize()
Set value to 0.0.
Definition: MultiMeshDirichletBC.cpp:239
void zero(GenericMatrix &A) const
Definition: MultiMeshDirichletBC.cpp:225
void apply(GenericMatrix &A) const
Definition: MultiMeshDirichletBC.cpp:151
std::shared_ptr< DirichletBC > view(std::size_t part) const
Definition: MultiMeshDirichletBC.h:113
std::shared_ptr< const MultiMeshFunctionSpace > function_space() const
Definition: MultiMeshDirichletBC.h:106
This class defines a common interface for matrices.
Definition: GenericMatrix.h:46
This class defines a common interface for vectors.
Definition: GenericVector.h:47