65 using boundary_type = BoundaryType;
67 static constexpr int dimension = dim;
70 std::map<dealii::types::boundary_id, std::shared_ptr<dealii::Function<dim>>> pressure_dbc;
73 std::map<dealii::types::boundary_id, std::shared_ptr<dealii::Function<dim>>> velocity_dbc;
79 std::map<dealii::types::boundary_id, std::shared_ptr<dealii::Function<dim>>> admittance_bc;
82 inline DEAL_II_ALWAYS_INLINE
84 get_boundary_type(dealii::types::boundary_id
const & boundary_id)
const
86 if(this->pressure_dbc.find(boundary_id) != this->pressure_dbc.end())
87 return BoundaryType::PressureDirichlet;
89 if(this->velocity_dbc.find(boundary_id) != this->velocity_dbc.end())
90 return BoundaryType::VelocityDirichlet;
92 if(this->admittance_bc.find(boundary_id) != this->admittance_bc.end())
93 return BoundaryType::Admittance;
95 AssertThrow(
false, dealii::ExcMessage(
"Boundary type of face is invalid or not implemented."));
97 return BoundaryType::Undefined;
100 inline DEAL_II_ALWAYS_INLINE
102 verify_boundary_conditions(
103 dealii::types::boundary_id
const boundary_id,
104 std::set<dealii::types::boundary_id>
const & periodic_boundary_ids)
const
106 unsigned int counter = 0;
107 if(this->pressure_dbc.find(boundary_id) != this->pressure_dbc.end())
110 if(this->velocity_dbc.find(boundary_id) != this->velocity_dbc.end())
113 if(this->admittance_bc.find(boundary_id) != this->admittance_bc.end())
116 if(periodic_boundary_ids.find(boundary_id) != periodic_boundary_ids.end())
119 AssertThrow(counter == 1,
120 dealii::ExcMessage(
"Boundary face with non-unique boundary type found."));