49 std::map<dealii::types::boundary_id, std::shared_ptr<dealii::Function<dim>>> dirichlet_bc;
50 std::map<dealii::types::boundary_id, std::shared_ptr<dealii::Function<dim>>> neumann_bc;
53 inline DEAL_II_ALWAYS_INLINE
55 get_boundary_type(dealii::types::boundary_id
const & boundary_id)
const
57 if(this->dirichlet_bc.find(boundary_id) != this->dirichlet_bc.end())
58 return BoundaryType::Dirichlet;
59 else if(this->neumann_bc.find(boundary_id) != this->neumann_bc.end())
60 return BoundaryType::Neumann;
62 AssertThrow(
false, dealii::ExcMessage(
"Boundary type of face is invalid or not implemented."));
64 return BoundaryType::Undefined;
67 inline DEAL_II_ALWAYS_INLINE
69 verify_boundary_conditions(
70 dealii::types::boundary_id
const boundary_id,
71 std::set<dealii::types::boundary_id>
const & periodic_boundary_ids)
const
73 unsigned int counter = 0;
74 if(this->dirichlet_bc.find(boundary_id) != this->dirichlet_bc.end())
77 if(this->neumann_bc.find(boundary_id) != this->neumann_bc.end())
80 if(periodic_boundary_ids.find(boundary_id) != periodic_boundary_ids.end())
83 AssertThrow(counter == 1,
84 dealii::ExcMessage(
"Boundary face with non-unique boundary type found."));
91 std::map<dealii::types::boundary_id, EnergyBoundaryVariable> boundary_variable;
94 inline DEAL_II_ALWAYS_INLINE
95 EnergyBoundaryVariable
96 get_boundary_variable(dealii::types::boundary_id
const & boundary_id)
const
98 EnergyBoundaryVariable boundary_variable = this->boundary_variable.find(boundary_id)->second;
100 AssertThrow(boundary_variable != EnergyBoundaryVariable::Undefined,
101 dealii::ExcMessage(
"Energy boundary variable is undefined!"));
103 return boundary_variable;