33 template <
typename RangeType>
47 virtual void preElement(
const Elem * elem)
override;
49 virtual void preInternalSide(
const Elem * elem,
unsigned int side)
override;
54 const Elem * lower_d_elem =
nullptr)
override;
77 const bool print_header =
true,
78 const std::string & line_prefix =
"[DBG]")
const;
81 const bool print_header =
true,
82 const std::string & line_prefix =
"[DBG]")
const;
85 template <
typename RangeType>
91 template <
typename RangeType>
98 template <
typename RangeType>
103 template <
typename RangeType>
109 std::string what(e.
what());
110 _fe_problem.setException(what);
113 template <
typename RangeType>
120 template <
typename RangeType>
127 template <
typename RangeType>
137 template <
typename RangeType>
145 template <
typename RangeType>
146 template <
typename T>
149 const bool print_header,
150 const std::string & line_prefix)
const 155 auto & console = _fe_problem.console();
157 std::vector<MooseObject *> moose_objs;
158 for (
auto obj_ptr : objs)
159 moose_objs.push_back(dynamic_cast<MooseObject *>(obj_ptr));
163 std::string message = print_header ?
"Executing " + objects_type +
" on " +
164 _fe_problem.getCurrentExecuteOnFlag().name() +
"\n" 166 message += (print_header ?
"Order of execution:\n" :
"") + names;
170 template <
typename RangeType>
171 template <
typename T>
174 const std::vector<std::shared_ptr<T>> & objs_ptrs,
175 const bool print_header,
176 const std::string & line_prefix)
const 178 std::vector<T *> regular_ptrs;
179 for (
auto shared_ptr : objs_ptrs)
180 regular_ptrs.push_back(shared_ptr.get());
181 printExecutionOrdering<T>(regular_ptrs, print_header, line_prefix);
184 template <
typename RangeType>
188 _fe_problem.prepare(elem, this->_tid);
189 _fe_problem.reinitElem(elem, this->_tid);
190 _fe_problem.reinitMaterials(this->_subdomain, this->_tid);
193 template <
typename RangeType>
197 _fe_problem.clearActiveElementalMooseVariables(this->_tid);
198 _fe_problem.clearActiveMaterialProperties(this->_tid);
std::string mooseObjectVectorToString(const std::vector< MooseObject *> &objs, const std::string &sep=" ")
Routine to output the name of MooseObjects in a string.
Base class for assembly-like calculations.
virtual const char * what() const
Get out the error message.
FEProblemBase & _fe_problem
virtual void neighborSubdomainChanged() override
Called every time the neighbor subdomain changes (i.e.
virtual void preInternalSide(const Elem *elem, unsigned int side) override
Called before evaluations on an element internal side.
virtual void preElement(const Elem *elem) override
Called before the element assembly.
Base class for a system (of equations)
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
virtual void preBoundary(const Elem *elem, unsigned int side, BoundaryID bnd_id, const Elem *lower_d_elem=nullptr) override
Called before the boundary assembly.
void prepareElement(const Elem *elem)
void printExecutionOrdering(const std::vector< T *> &objs, const bool print_header=true, const std::string &line_prefix="[DBG]") const
Routine to output the ordering of objects within a vector of pointers to these objects.
virtual bool keepGoing() override
Whether or not the loop should continue.
std::string formatString(std::string message, const std::string &prefix)
Add new lines and prefixes to a string for pretty display in output NOTE: This makes a copy of the st...
boundary_id_type BoundaryID
void clearVarsAndMaterials()
ThreadedElementLoop(FEProblemBase &feproblem)
Provides a way for users to bail out of the current solve.
Base class for assembly-like calculations.
static Threads::spin_mutex threaded_element_mutex
This mutex is used by all derived classes of the ThreadedElementLoop.
virtual void caughtMooseException(MooseException &e) override
Called if a MooseException is caught anywhere during the computation.
virtual bool hasException()
Whether or not an exception has occurred.
virtual ~ThreadedElementLoop()
std::string prettyCppType(const std::string &cpp_type)