47 std::map<dealii::types::boundary_id, std::shared_ptr<dealii::Function<dim>>> dirichlet_bc;
48 std::map<dealii::types::boundary_id, std::shared_ptr<dealii::Function<dim>>> neumann_bc;
51 inline DEAL_II_ALWAYS_INLINE
53 get_boundary_type(dealii::types::boundary_id
const & boundary_id)
const
55 if(this->dirichlet_bc.find(boundary_id) != this->dirichlet_bc.end())
56 return BoundaryType::Dirichlet;
57 else if(this->neumann_bc.find(boundary_id) != this->neumann_bc.end())
58 return BoundaryType::Neumann;
60 AssertThrow(
false, dealii::ExcMessage(
"Boundary type of face is invalid or not implemented."));
62 return BoundaryType::Undefined;
65 inline DEAL_II_ALWAYS_INLINE
67 verify_boundary_conditions(
68 dealii::types::boundary_id
const boundary_id,
69 std::set<dealii::types::boundary_id>
const & periodic_boundary_ids)
const
71 unsigned int counter = 0;
72 if(this->dirichlet_bc.find(boundary_id) != this->dirichlet_bc.end())
75 if(this->neumann_bc.find(boundary_id) != this->neumann_bc.end())
78 if(periodic_boundary_ids.find(boundary_id) != periodic_boundary_ids.end())
81 AssertThrow(counter == 1,
82 dealii::ExcMessage(
"Boundary face with non-unique boundary type found."));
89 std::map<dealii::types::boundary_id, EnergyBoundaryVariable> boundary_variable;
92 inline DEAL_II_ALWAYS_INLINE
93 EnergyBoundaryVariable
94 get_boundary_variable(dealii::types::boundary_id
const & boundary_id)
const
96 EnergyBoundaryVariable boundary_variable = this->boundary_variable.find(boundary_id)->second;
98 AssertThrow(boundary_variable != EnergyBoundaryVariable::Undefined,
99 dealii::ExcMessage(
"Energy boundary variable is undefined!"));
101 return boundary_variable;