47 std::map<dealii::types::boundary_id, std::shared_ptr<dealii::Function<dim>>> dirichlet_bc;
49 std::map<dealii::types::boundary_id, std::shared_ptr<dealii::Function<dim>>> neumann_bc;
52 inline DEAL_II_ALWAYS_INLINE
54 get_boundary_type(dealii::types::boundary_id
const & boundary_id)
const
56 if(this->dirichlet_bc.find(boundary_id) != this->dirichlet_bc.end())
57 return BoundaryType::Dirichlet;
58 else if(this->neumann_bc.find(boundary_id) != this->neumann_bc.end())
59 return BoundaryType::Neumann;
61 AssertThrow(
false, dealii::ExcMessage(
"Boundary type of face is invalid or not implemented."));
63 return BoundaryType::Undefined;
66 inline DEAL_II_ALWAYS_INLINE
68 verify_boundary_conditions(
69 dealii::types::boundary_id
const boundary_id,
70 std::set<dealii::types::boundary_id>
const & periodic_boundary_ids)
const
72 unsigned int counter = 0;
73 if(dirichlet_bc.find(boundary_id) != dirichlet_bc.end())
76 if(neumann_bc.find(boundary_id) != neumann_bc.end())
79 if(periodic_boundary_ids.find(boundary_id) != periodic_boundary_ids.end())
82 AssertThrow(counter == 1,
83 dealii::ExcMessage(
"Boundary face with non-unique boundary type found."));