15 #include "libmesh/string_to_enum.h" 29 ss << libMesh::Utility::enum_to_string<FEFamily>(var1.
feType().
family) <<
",ORDER" 31 <<
" != " << libMesh::Utility::enum_to_string<FEFamily>(var2.
feType().
family) <<
",ORDER" 37 mooseMsgFmt(
const std::string & msg,
const std::string & title,
const std::string & color)
39 std::ostringstream oss;
40 oss <<
"\n" << color <<
"\n" << title <<
"\n" << msg << COLOR_DEFAULT <<
"\n";
45 mooseMsgFmt(
const std::string & msg,
const std::string & color)
47 std::ostringstream oss;
48 oss <<
"\n" << color <<
"\n" << msg << COLOR_DEFAULT <<
"\n";
54 const std::string & prefix ,
55 const hit::Node * node ,
56 const bool show_trace )
62 static std::atomic_flag aborting = ATOMIC_FLAG_INIT;
66 thread_local
static bool this_thread_aborting =
false;
73 if (aborting.test_and_set(std::memory_order_acq_rel) && !this_thread_aborting)
88 if (this_thread_aborting)
91 this_thread_aborting =
true;
102 msg =
mooseMsgFmt(msg,
"*** ERROR ***", COLOR_RED) +
"\n";
108 Moose::err << msg << std::flush;
115 std::ostringstream oss;
117 auto trace = oss.str();
123 Moose::err <<
trace << std::flush;
143 const unsigned int issue_num,
144 const std::string & msg)
147 std::stringstream oss;
148 oss << msg <<
"\n\nThis error is documented at " << repo_url <<
"/issues/" << issue_num <<
".";
158 "We caught a MetaPhysicL error in while performing element or face loops. This is " 159 "potentially due to AD not having a sufficiently large derivative container size. To " 160 "increase the AD container size, you can run configure in the MOOSE root directory with the " 161 "'--with-derivative-size=<n>' option and then recompile. Other causes of MetaPhysicL logic " 162 "errors include evaluating functions where they are not defined or differentiable like sqrt " 163 "(which gets called for vector norm functions) or log with arguments <= 0");
void mooseStreamAll(std::ostringstream &ss)
All of the following are not meant to be called directly - they are called by the normal macros (moos...
const libMesh::FEType & feType() const
Get the type of finite element object.
processor_id_type global_n_processors()
std::string incompatVarMsg(MooseVariableFieldBase &var1, MooseVariableFieldBase &var2)
Builds and returns a string of the form:
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
void translateMetaPhysicLError(const MetaPhysicL::LogicError &)
emit a relatively clear error message when we catch a MetaPhysicL logic error
Real trace(const RealTensor &A, const unsigned int &dim)
This class provides an interface for common operations on field variables of both FE and FV types wit...
The following methods are specializations for using the libMesh::Parallel::packed_range_* routines fo...
void indentMessage(const std::string &prefix, std::string &message, const char *color, bool indent_first_line, const std::string &post_prefix)
void mooseErrorRaw(std::string msg, const std::string &prefix="", const hit::Node *node=nullptr, const bool show_trace=true)
Main callback for emitting a moose error.
void print_trace(std::ostream &out_stream=std::cerr)
static const std::string & getRepositoryURL(const std::string &repo_name)
Returns the repository URL associated with repo_name.
std::string hitMessagePrefix(const hit::Node &node)
Get the prefix to be associated with a hit node for a message.
Exception to be thrown whenever we have _throw_on_error set and a mooseError() is emitted...
libMesh::Threads::spin_mutex moose_stream_lock
bool _throw_on_error
Variable to turn on exceptions during mooseError(), should only be used within MOOSE unit tests or wh...
std::string mooseMsgFmt(const std::string &msg, const std::string &title, const std::string &color)
Format a message for output with a title.
std::string formatMooseDocumentedError(const std::string &repo_name, const unsigned int issue_num, const std::string &msg)
Formats a documented error.