70 template <
typename T,
typename T2>
74 std::set<BoundaryID> & bnd_ids);
81 const auto &
mesh = insfv_fk.subProblem().mesh();
83 std::set<BoundaryID> all_connected_boundaries;
84 const auto & blk_ids = insfv_fk.blockRestricted() ? insfv_fk.blockIDs() :
mesh.meshSubdomains();
85 for (
const auto blk_id : blk_ids)
87 const auto & connected_boundaries =
mesh.getSubdomainInterfaceBoundaryIds(blk_id);
88 for (
const auto bnd_id : connected_boundaries)
89 all_connected_boundaries.insert(bnd_id);
92 for (
const auto bnd_id : all_connected_boundaries)
95 setupBoundaries<INSFVNoSlipWallBC>(
97 setupBoundaries<INSFVSlipWallBC>(
99 setupBoundaries<INSFVFreeSurfaceBC>(
101 setupBoundaries<INSFVSymmetryBC>(
110 std::vector<INSFVFlowBC *> flow_bcs;
112 insfv_fk.subProblem()
116 .template condition<AttribBoundaries>(bnd_id)
118 .queryInto(flow_bcs);
120 if (!flow_bcs.empty())
127 for (
auto * flow_bc : flow_bcs)
129 "If one BC is a fully developed flow BC, then all other flow BCs on that "
130 "boundary must also be fully developed flow BCs. This flow BC is not: " +
134 for (
auto * flow_bc : flow_bcs)
136 "If one BC is not a fully developed flow BC, then all other flow BCs on that "
137 "boundary must also not be fully developed flow BCs. This flow BC is not: " +
148template <
typename T,
typename T2>
153 std::set<BoundaryID> & bnd_ids)
155 std::vector<T *> bcs;
157 insfv_fk.subProblem()
161 .template condition<AttribBoundaries>(bnd_id)
162 .template condition<AttribINSFVBCs>(bc_type)
167 bnd_ids.insert(bnd_id);
boundary_id_type BoundaryID
This interface gives the inheriting class information about all the different boundary conditions tha...
std::set< BoundaryID > _free_surface_boundaries
Boundary IDs for free surfaces.
std::set< BoundaryID > _flow_boundaries
Flow Boundary IDs.
std::set< BoundaryID > _all_boundaries
All the BoundaryIDs covered by our different types of INSFVBCs.
void setupBoundaries(T2 &insfv_fk, const BoundaryID bnd_id, INSFVBCs bc_type, std::set< BoundaryID > &bnd_ids)
Query for INSFVBCs on bc_id and add if query successful.
void setupFlowBoundaries(T &insfv_fk, BoundaryID bnd_id)
Query for INSFVBCs::INSFVFlowBC on bc_id and add if query successful.
std::set< BoundaryID > _no_slip_wall_boundaries
Boundary IDs with no slip walls.
std::set< BoundaryID > _slip_wall_boundaries
Boundary IDs with slip walls.
std::set< BoundaryID > _symmetry_boundaries
Symmetry Boundary IDs.
std::set< BoundaryID > _fully_developed_flow_boundaries
Fully Developed Flow Boundary IDs. This is a subset of _flow_boundaries.
void initialSetup(T &insfv_fk)
setup all the boundary condition member information
A parent class for INSFV fully developed flow boundary conditions.