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>(
106 template <
typename T>
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())
122 if (dynamic_cast<INSFVFullyDevelopedFlowBC *>(flow_bcs.front()))
127 for (
auto * flow_bc : flow_bcs)
128 mooseAssert(dynamic_cast<INSFVFullyDevelopedFlowBC *>(flow_bc),
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: " +
131 dynamic_cast<MooseObject *>(flow_bc)->
name());
134 for (
auto * flow_bc : flow_bcs)
135 mooseAssert(!dynamic_cast<INSFVFullyDevelopedFlowBC *>(flow_bc),
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: " +
138 dynamic_cast<MooseObject *>(flow_bc)->
name());
148 template <
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);
std::set< BoundaryID > _slip_wall_boundaries
Boundary IDs with slip walls.
std::set< BoundaryID > _all_boundaries
All the BoundaryIDs covered by our different types of INSFVBCs.
void initialSetup(T &insfv_fk)
setup all the boundary condition member information
void setupFlowBoundaries(T &insfv_fk, BoundaryID bnd_id)
Query for INSFVBCs::INSFVFlowBC on bc_id and add if query successful.
std::set< BoundaryID > _symmetry_boundaries
Symmetry Boundary IDs.
std::set< BoundaryID > _no_slip_wall_boundaries
Boundary IDs with no slip walls.
boundary_id_type BoundaryID
std::set< BoundaryID > _flow_boundaries
Flow Boundary IDs.
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.
std::set< BoundaryID > _free_surface_boundaries
Boundary IDs for free surfaces.
std::set< BoundaryID > _fully_developed_flow_boundaries
Fully Developed Flow Boundary IDs. This is a subset of _flow_boundaries.
This interface gives the inheriting class information about all the different boundary conditions tha...