40 for (
const auto i : make_range(
_problem->numNonlinearSystems()))
42 const std::vector<MooseVariableFEBase *> & variables =
43 _problem->getNonlinearSystemBase(i).getVariables(0);
45 for (
auto & var : variables)
50 unsigned int var_num = var->number();
51 std::vector<FVFluxBC *> flux_bcs;
52 std::vector<FVDirichletBCBase *> dirichlet_bcs;
54 .template condition<AttribSystem>(
"FVFluxBC")
55 .template condition<AttribVar>(var_num)
56 .template condition<AttribThread>(0)
57 .template condition<AttribSysNum>(var->sys().number())
61 .template condition<AttribSystem>(
"FVDirichletBC")
62 .template condition<AttribVar>(var_num)
63 .template condition<AttribThread>(0)
64 .template condition<AttribSysNum>(var->sys().number())
67 std::set<BoundaryID> all_flux_side_ids;
68 for (
auto & fbc : flux_bcs)
70 const std::set<BoundaryID> & t = fbc->boundaryIDs();
71 all_flux_side_ids.insert(t.begin(), t.end());
74 std::set<BoundaryID> all_dirichlet_side_ids;
75 for (
auto & dbc : dirichlet_bcs)
77 const std::set<BoundaryID> & temp = dbc->boundaryIDs();
80 if (all_dirichlet_side_ids.find(t) != all_dirichlet_side_ids.end())
82 "Sideset ", t,
" defines at least two DirichletBCs for variable ", var->name());
83 all_dirichlet_side_ids.insert(temp.begin(), temp.end());
87 for (
auto & t : all_flux_side_ids)
88 if (all_dirichlet_side_ids.find(t) != all_dirichlet_side_ids.end())
90 "Sideset ", t,
" defines a FluxBC and a DirichletBC for variable ", var->name());