17 : _fe_problem(fe_problem)
23 : _fe_problem(x._fe_problem)
37 for (
const auto & elem : range)
39 const unsigned int n_nodes = elem->n_nodes();
43 std::set<SubdomainID> block_ids;
44 for (
unsigned int n = 0; n <
n_nodes; n++)
46 auto node = elem->node_ptr(n);
48 block_ids.insert(ids.begin(), ids.end());
54 std::vector<MooseVariableFEBase *> order;
63 std::map<MooseVariableFEBase *, std::vector<std::shared_ptr<InitialConditionBase>>> groups;
64 for (
auto id : block_ids)
68 if ((
id != elem->subdomain_id()) && !ic->variable().isNodal())
70 order.push_back(&(ic->variable()));
71 groups[&(ic->variable())].push_back(ic);
78 for (
auto var : order)
81 auto & vec = groups[var];
88 DependencyResolverInterface::sort<std::shared_ptr<InitialConditionBase>>(vec);
92 DependencyResolverInterface::cyclicDependencyError<std::shared_ptr<InitialConditionBase>>(
93 e,
"Cyclic dependency detected in object ordering");
101 var->insert(var->sys().solution());
119 console <<
"[DBG] Executing initial conditions on elements on " << execute_on << std::endl;
120 console <<
"[DBG] Unordered list:" << std::endl;
121 console << ic_wh.activeObjectsToFormattedString() << std::endl;
122 console <<
"[DBG] The order of execution is defined by dependency resolution on every element"
bool hasActiveBlockObjects(THREAD_ID tid=0) const
const std::map< SubdomainID, std::vector< std::shared_ptr< T > > > & getActiveBlockObjects(THREAD_ID tid=0) const
Warehouse for storing initial conditions.
const ExecFlagType & getCurrentExecuteOnFlag() const
Return/set the current execution flag.
void printGeneralExecutionInformation() const
Print information about the loop, mostly order of execution of objects.
const std::set< SubdomainID > & getNodeBlockIds(const Node &node) const
Return list of blocks to which the given node belongs.
const InitialConditionWarehouse & getInitialConditionWarehouse() const
Return InitialCondition storage.
ComputeInitialConditionThread(FEProblemBase &fe_problem)
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
StoredRange< MeshBase::const_element_iterator, const Elem *> ConstElemRange
const dof_id_type n_nodes
bool shouldPrintExecution(const THREAD_ID tid) const
Check whether the problem should output execution orders at this time.
virtual void reinitElem(const Elem *elem, const THREAD_ID tid) override
void operator()(const ConstElemRange &range)
virtual void setCurrentSubdomainID(const Elem *elem, const THREAD_ID tid) override
const ConsoleStream & console() const
Return console handle.
virtual void prepare(const Elem *elem, const THREAD_ID tid) override
virtual MooseMesh & mesh() override
void join(const ComputeInitialConditionThread &)
FEProblemBase & _fe_problem