25#include "libmesh/utility.h"
26#include "libmesh/elem.h"
27#include "libmesh/equation_systems.h"
28#include "libmesh/string_to_enum.h"
65 for (
const auto component : make_range(
Moose::dim))
66 if (!std::isfinite(point(component)))
101 libMesh::Utility::string_to_enum<libMesh::Order>(params.
get<
MooseEnum>(
"order"));
103 libMesh::Utility::string_to_enum<libMesh::FEFamily>(params.
get<
MooseEnum>(
"family"));
105 bool p_refinement = defaultPRefinement(order, family);
107 p_refinement = params.
get<
bool>(
"p_refinement");
113 "Cannot be supplied together with 'p_refinement'. Use "
114 "'p_refinement = false' instead.");
115 p_refinement = !params.
get<
bool>(
"disable_p_refinement");
140 std::string path =
".";
141 for (
int i = 0; i < 5; i++)
143 auto testroot =
pathjoin(path,
"testroot");
154 std::istringstream ss(input);
156 if (ss >> real_value && ss.eof())
159 (*parsed_real) = real_value;
167 const std::string & dir_name,
168 const std::string & extra_error_msg)
173 std::string installed_path =
176 auto test_root =
pathjoin(installed_path,
"testroot");
178 mooseError(
"Couldn't locate any installed inputs to copy in path: ",
184 return installed_path;
195 auto docfile =
pathjoin(installed_path,
"css",
"moose.css");
197 return installed_path;
204 return "https://mooseframework.inl.gov/" + path;
208replaceAll(std::string str,
const std::string & from,
const std::string & to)
210 size_t start_pos = 0;
211 while ((start_pos = str.find(from, start_pos)) != std::string::npos)
213 str.replace(start_pos, from.length(), to);
214 start_pos += to.length();
222 auto slash_pos = orig.find_last_of(
"/");
223 auto path = orig.substr(0, slash_pos);
224 auto file = orig.substr(slash_pos + 1);
225 if (file !=
"LATEST")
230 if (converted.empty())
231 mooseError(
"Unable to find suitable recovery file!");
243 auto s1len = s1.size();
244 auto s2len = s2.size();
246 auto column_start = (
decltype(s1len))1;
248 auto column =
new decltype(s1len)[s1len + 1];
249 std::iota(column + column_start, column + s1len + 1, column_start);
251 for (
auto x = column_start; x <= s2len; x++)
254 auto last_diagonal = x - column_start;
255 for (
auto y = column_start; y <= s1len; y++)
257 auto old_diagonal = column[y];
258 auto possibilities = {
259 column[y] + 1, column[y - 1] + 1, last_diagonal + (s1[y - 1] == s2[x - 1] ? 0 : 1)};
260 column[y] = std::min(possibilities);
261 last_diagonal = old_diagonal;
264 auto result = column[s1len];
272 std::map<char, std::string> escapes;
273 escapes[
'\a'] =
"\\a";
274 escapes[
'\b'] =
"\\b";
275 escapes[
'\f'] =
"\\f";
276 escapes[
'\n'] =
"\\n";
277 escapes[
'\t'] =
"\\t";
278 escapes[
'\v'] =
"\\v";
279 escapes[
'\r'] =
"\\r";
281 for (
const auto & it : escapes)
282 for (
size_t pos = 0; (pos = str.find(it.first, pos)) != std::string::npos;
283 pos += it.second.size())
284 str.replace(pos, 1, it.second);
290 return std::regex_replace(input, std::regex(
"^\\s+|\\s+$|\\s+(?=\\s)"),
"");
295 const std::string & string_to_find,
296 const std::string & delims)
298 std::vector<std::string> elements;
299 tokenize(expression, elements, 0, delims);
301 std::vector<std::string>::iterator found_it =
302 std::find(elements.begin(), elements.end(), string_to_find);
303 if (found_it != elements.end())
313 return (stat(path.c_str(), &buffer) == 0);
318 bool check_line_endings,
319 bool throw_on_unreadable,
320 bool check_for_git_lfs_pointer)
322 std::ifstream in(filename.c_str(), std::ifstream::in);
325 if (throw_on_unreadable)
327 (std::string(
"Unable to open file \"") + filename +
328 std::string(
"\". Check to make sure that it exists and that you have read permission."))
334 if (check_line_endings)
336 std::istream_iterator<char> iter(in);
337 std::istream_iterator<char> eos;
341 mooseError(filename +
" contains Windows(DOS) line endings which are not supported.");
345 mooseError(filename +
" appears to be a Git-LFS pointer. Make sure you have \"git-lfs\" "
346 "installed so that you may pull this file.");
355 mooseAssert(file.is_open(),
"Passed in file handle is not open");
362 std::getline(file, line);
363 if (line.find(
"version https://") != std::string::npos)
372 std::ofstream out(filename.c_str(), std::ios_base::app);
375 if (throw_on_unwritable)
377 (std::string(
"Unable to open file \"") + filename +
378 std::string(
"\". Check to make sure that it exists and that you have write permission."))
392 processor_id_type secondary_processor_id;
395 Moose::out <<
"Waiting For Other Processors To Finish" << std::endl;
396 if (comm.
rank() == 0)
400 Moose::out <<
"Jobs complete: 1/" << comm.
size() << (1 == comm.
size() ?
"\n" :
"\r")
402 for (
unsigned int i = 2; i <= comm.
size(); ++i)
404 comm.
receive(MPI_ANY_SOURCE, secondary_processor_id);
406 Moose::out <<
"Jobs complete: " << i <<
"/" << comm.
size()
407 << (i == comm.
size() ?
"\n" :
"\r") << std::flush;
412 secondary_processor_id = comm.
rank();
413 comm.
send(0, secondary_processor_id);
430 mooseWarning(
"Entering serial execution block (use only for debugging)");
445 if (comm.
rank() == 0 && warn)
446 mooseWarning(
"Leaving serial execution block (use only for debugging)");
450hasExtension(
const std::string & filename, std::string ext,
bool strip_exodus_ext)
453 std::string file_ext;
454 if (strip_exodus_ext)
457 ".*\\.([^\\.]*?)(?:-s\\d+)?\\s*$");
458 re.FullMatch(filename, &file_ext);
462 pcrecpp::RE re(
".*\\.([^\\.]*?)\\s*$");
463 re.FullMatch(filename, &file_ext);
476 std::string file_ext =
"";
480 const std::string stripped_filename = splitFileName<std::string>(filename).second;
481 auto pos = rfind ? stripped_filename.rfind(
".") : stripped_filename.find(
".");
482 if (pos != std::string::npos)
483 file_ext += stripped_filename.substr(pos + 1, std::string::npos);
493 const bool offset = (ext.size() != 0);
495 return s.substr(0, s.size() - ext.size() - offset);
505 constexpr unsigned int BUF_SIZE = 1024;
506 char buffer[BUF_SIZE];
508 return getcwd(buffer, BUF_SIZE) !=
nullptr ? buffer :
"";
512makedirs(
const std::string & dir_name,
bool throw_on_failure)
515 std::vector<std::string> split_dir_names;
518 auto n = split_dir_names.size();
525 if (split_dir_names[i] ==
".")
527 for (
auto j = i + 1; j < n; ++j)
528 split_dir_names[j - 1] = split_dir_names[j];
531 else if (i > 0 && split_dir_names[i] ==
".." && split_dir_names[i - 1] !=
"..")
533 for (
auto j = i + 1; j < n; ++j)
534 split_dir_names[j - 2] = split_dir_names[j];
544 split_dir_names.resize(n);
547 std::string cur_dir = dir_name[0] ==
'/' ?
"" :
".";
548 for (
auto & dir : split_dir_names)
550 cur_dir +=
"/" + dir;
557 std::string msg =
"Failed creating directory " + dir_name;
558 if (throw_on_failure)
559 throw std::invalid_argument(msg);
568removedirs(
const std::string & dir_name,
bool throw_on_failure)
571 std::vector<std::string> split_dir_names;
574 auto n = split_dir_names.size();
581 if (split_dir_names[i] ==
".")
583 for (
auto j = i + 1; j < n; ++j)
584 split_dir_names[j - 1] = split_dir_names[j];
587 else if (i > 0 && split_dir_names[i] ==
".." && split_dir_names[i - 1] !=
"..")
589 for (
auto j = i + 1; j < n; ++j)
590 split_dir_names[j - 2] = split_dir_names[j];
600 split_dir_names.resize(n);
603 std::string base_dir = dir_name[0] ==
'/' ?
"" :
".";
604 for (i = n; i > 0; --i)
606 std::string cur_dir = base_dir;
608 for (j = 0; j < i; ++j)
609 cur_dir +=
"/" + split_dir_names[j];
614 auto code = rmdir(cur_dir.c_str());
617 std::string msg =
"Failed removing directory " + dir_name;
618 if (throw_on_failure)
619 throw std::invalid_argument(msg);
633 std::string replaced = camel_case_name;
635 pcrecpp::RE(
"(?!^)(?<![A-Z_])([A-Z]+)").GlobalReplace(
"_\\1", &replaced);
638 std::transform(replaced.begin(), replaced.end(), replaced.begin(), ::tolower);
645 pcrecpp::StringPiece input(underscore_name);
646 pcrecpp::RE re(
"([^_]*)(_|$)");
649 std::string us, not_us;
650 bool make_upper = leading_upper_case;
651 while (re.Consume(&input, ¬_us, &us))
653 if (not_us.length() > 0)
657 result += std::toupper(not_us[0]);
658 if (not_us.length() > 1)
659 result += not_us.substr(1);
677 return name.substr(name.find_last_of(
'/') != std::string::npos ? name.find_last_of(
'/') + 1 : 0);
683 return name.substr(0, name.find_last_of(
'/') != std::string::npos ? name.find_last_of(
'/') : 0);
696 if (!GetComputerNameEx(ComputerNamePhysicalDnsHostname,
hostname, &dwSize))
710 unsigned short ws_col;
717 w.ws_col = std::numeric_limits<unsigned short>::max();
721 char * pps_width = std::getenv(
"MOOSE_PPS_WIDTH");
722 if (pps_width != NULL)
724 std::stringstream ss(pps_width);
729 if (w.ws_col == std::numeric_limits<unsigned short>::max())
734 ioctl(0, TIOCGWINSZ, &w);
744 if (w.ws_col == std::numeric_limits<unsigned short>::max())
755 for (
const auto & elem_it : props)
757 Moose::out <<
"Element " << elem_it.first->id() <<
'\n';
760 for (
const auto & side_it : elem_it.second)
762 Moose::out <<
" Side " << side_it.first <<
'\n';
765 unsigned int cnt = 0;
766 for (
const auto & mat_prop : side_it.second)
770 Moose::out <<
" Property " << cnt <<
'\n';
774 for (
unsigned int qp = 0; qp < mp->size(); ++qp)
775 Moose::out <<
" prop[" << qp <<
"] = " << (*mp)[qp] <<
'\n';
781 Moose::out << std::flush;
787 pcrecpp::RE re(
"(\\33\\[3[0-7]m))", pcrecpp::DOTALL());
788 re.GlobalReplace(std::string(
""), &msg);
794 unsigned int line_width )
796 for (
auto i : make_range(
int(message.length() / line_width)))
797 message.insert((i + 1) * (line_width + 2) - 2,
"\n");
802 std::string & message,
804 bool indent_first_line,
805 const std::string & post_prefix)
812 std::string colored_message;
813 std::string curr_color = COLOR_DEFAULT;
814 std::string line, color_code;
816 bool ends_in_newline = message.empty() ? true : message.back() ==
'\n';
820 std::istringstream iss(message);
821 for (std::string line; std::getline(iss, line);)
823 const static pcrecpp::RE match_color(
".*(\\33\\[3\\dm)((?!\\33\\[3\\d)[^\n])*");
824 pcrecpp::StringPiece line_piece(line);
825 match_color.FindAndConsume(&line_piece, &color_code);
827 if (!first || indent_first_line)
828 colored_message += color + prefix + post_prefix + curr_color;
830 colored_message += line;
833 if (!iss.eof() || ends_in_newline)
834 colored_message +=
"\n";
836 if (!color_code.empty())
837 curr_color = color_code;
841 message = colored_message;
844std::list<std::string>
845listDir(
const std::string path,
bool files_only)
847 std::list<std::string> files;
851 tinydir_open(&dir, path.c_str());
857 tinydir_readfile(&dir, &file);
859 if (!files_only || !file.is_dir)
860 files.push_back(path +
"/" + file.name);
870std::list<std::string>
871getFilesInDirs(
const std::list<std::string> & directory_list,
const bool files_only )
873 std::list<std::string> files;
875 for (
const auto & dir_name : directory_list)
876 files.splice(files.end(),
listDir(dir_name, files_only));
887 std::time_t newest_time = 0;
888 std::list<std::string> newest_restart_files;
891 for (
const auto & cp_file : checkpoint_files)
896 stat(cp_file.c_str(), &stats);
898 std::time_t mod_time = stats.st_mtime;
899 if (mod_time > newest_time)
901 newest_restart_files.clear();
902 newest_time = mod_time;
905 if (mod_time == newest_time)
906 newest_restart_files.push_back(cp_file);
911 int max_file_num = -1;
912 std::string max_file;
913 std::string max_prefix;
919 pcrecpp::RE re_file_num(
"(.*?(\\d+))-restart-\\d+.rd$");
922 for (
const auto & res_file : newest_restart_files)
927 std::string file_prefix;
929 re_file_num.FullMatch(res_file, &file_prefix, &file_num);
931 if (file_num > max_file_num)
937 max_file_num = file_num;
939 max_prefix = file_prefix;
944 if (max_file_num == -1)
954 if (search_string ==
"")
958 std::transform(name.begin(), name.end(), name.begin(), (
int (*)(
int))std::toupper);
959 std::transform(search_string.begin(),
961 search_string.begin(),
962 (
int (*)(
int))std::toupper);
965 if (search_string.find(
"*") == std::string::npos)
966 return search_string == name;
969 std::vector<std::string> tokens;
973 for (
unsigned int i = 0; i < tokens.size() && pos != std::string::npos; ++i)
975 pos = name.find(tokens[i], pos);
977 if (search_string[0] !=
'*' && i == 0 && pos != 0)
981 if (pos != std::string::npos && tokens.size() > 0)
984 size_t last_token_length = tokens.back().length();
985 if (*search_string.rbegin() ==
'*' || pos == name.size() - last_token_length)
996 const std::string & pattern,
1000 if (p == pattern.size())
1001 return c == candidate.size();
1003 if (pattern[p] ==
'*')
1005 for (; c < candidate.size(); ++c)
1011 if (pattern[p] !=
'?' && pattern[p] != candidate[c])
1014 return globCompare(candidate, pattern, c + 1, p + 1);
1018beginsWith(
const std::string & value,
const std::string & begin_value)
1020 return value.rfind(begin_value, 0) == 0;
1032 return convert<int>(input, throw_on_failure);
1037 dof_id_type num_chunks,
1038 dof_id_type chunk_id,
1039 dof_id_type & num_local_items,
1040 dof_id_type & local_items_begin,
1041 dof_id_type & local_items_end)
1043 auto global_num_local_items = num_items / num_chunks;
1045 num_local_items = global_num_local_items;
1047 auto leftovers = num_items % num_chunks;
1049 if (chunk_id < leftovers)
1052 local_items_begin = num_local_items * chunk_id;
1056 (global_num_local_items + 1) * leftovers + global_num_local_items * (chunk_id - leftovers);
1058 local_items_end = local_items_begin + num_local_items;
1064 auto global_num_local_items = num_items / num_chunks;
1066 auto leftovers = num_items % num_chunks;
1068 auto first_item_past_first_part = leftovers * (global_num_local_items + 1);
1071 if (item_id < first_item_past_first_part)
1072 return item_id / (global_num_local_items + 1);
1075 auto new_item_id = item_id - first_item_past_first_part;
1078 return leftovers + (new_item_id / global_num_local_items);
1082std::vector<std::string>
1083split(
const std::string & str,
const std::string & delimiter, std::size_t max_count)
1085 std::vector<std::string> output;
1086 std::size_t
count = 0;
1087 size_t prev = 0, pos = 0;
1090 pos = str.find(delimiter, prev);
1091 output.push_back(str.substr(prev, pos - prev));
1092 prev = pos + delimiter.length();
1094 }
while (pos != std::string::npos &&
count < max_count);
1096 if (pos != std::string::npos)
1097 output.push_back(str.substr(prev));
1102std::vector<std::string>
1103rsplit(
const std::string & str,
const std::string & delimiter, std::size_t max_count)
1105 std::vector<std::string> output;
1106 std::size_t
count = 0;
1107 size_t prev = str.length(), pos = str.length();
1110 pos = str.rfind(delimiter, prev);
1111 output.insert(output.begin(), str.substr(pos + delimiter.length(), prev - pos));
1112 prev = pos - delimiter.length();
1114 }
while (pos != std::string::npos && pos > 0 &&
count < max_count);
1116 if (pos != std::string::npos)
1117 output.insert(output.begin(), str.substr(0, pos));
1127 auto err = symlink(target.c_str(), link.c_str());
1129 auto err = CreateSymbolicLink(target.c_str(), link.c_str(), 0);
1132 mooseError(
"Failed to create symbolic link (via 'symlink') from ", target,
" to ", link);
1140 if (lstat(link.c_str(), &sbuf) == 0)
1142 auto err = unlink(link.c_str());
1144 mooseError(
"Failed to remove symbolic link (via 'unlink') to ", link);
1147 auto attr = GetFileAttributesA(link.c_str());
1148 if (attr != INVALID_FILE_ATTRIBUTES)
1150 auto err = _unlink(link.c_str());
1152 mooseError(
"Failed to remove link/file (via '_unlink') to ", link);
1162 if (!stat(filename.c_str(), &buffer))
1163 return buffer.st_size;
1165 HANDLE hFile = CreateFile(filename.c_str(),
1167 FILE_SHARE_READ | FILE_SHARE_WRITE,
1170 FILE_ATTRIBUTE_NORMAL,
1172 if (hFile == INVALID_HANDLE_VALUE)
1176 if (GetFileSizeEx(hFile, &size))
1179 return size.QuadPart;
1190 return std::filesystem::absolute(path);
1207 std::string s = cpp_type;
1209 pcrecpp::RE(
"\\s(?=>)").GlobalReplace(
"", &s);
1210 pcrecpp::RE(
"std::__\\w+::").GlobalReplace(
"std::", &s);
1212 pcrecpp::RE(
"\\s*std::basic_string<char, std::char_traits<char>, std::allocator<char>>\\s*")
1213 .GlobalReplace(
"std::string", &s);
1215 pcrecpp::RE r(
"std::vector<([[:print:]]+),\\s?std::allocator<\\s?\\1\\s?>\\s?>");
1216 r.GlobalReplace(
"std::vector<\\1>", &s);
1218 r.GlobalReplace(
"std::vector<\\1>", &s);
1221 "std::map<\\s*((?:[^,<]|<[^>]*>)+)\\s*,\\s*((?:[^,<]|<[^>]*>)+)\\s*,\\s*"
1222 "std::less<\\s*\\1\\s*>\\s*,\\s*"
1223 "std::allocator<\\s*std::pair<\\s*(?:const\\s*\\1|\\1\\s*const)\\s*,\\s*\\2\\s*>\\s*>\\s*>");
1224 r_map.GlobalReplace(
"std::map<\\1, \\2>", &s);
1226 "std::unordered_map<\\s*([^,]+)\\s*,\\s*([^,]+)\\s*,\\s*"
1227 "std::hash<\\s*\\1\\s*>\\s*,\\s*"
1228 "std::equal_to<\\s*\\1\\s*>\\s*,\\s*"
1229 "std::allocator<\\s*std::pair<\\s*(?:const\\s*\\1|\\1\\s*const)\\s*,\\s*\\2\\s*>\\s*>\\s*>");
1230 r_umap.GlobalReplace(
"std::unordered_map<\\1, \\2>", &s);
1238 return std::filesystem::weakly_canonical(path).c_str();
1242startsWith(
const std::string & string1,
const std::string & string2)
1244 if (string2.size() > string1.size())
1246 return string1.compare(0, string2.size(), string2) == 0;
1250replaceStart(std::string & string1,
const std::string & string2,
const std::string & string3)
1253 "Cannot replace the start because it doesn't match the start string");
1254 string1.replace(0, string2.size(), string3);
1261 str.begin(), str.end(), [](
unsigned char c) { return !std::isalpha(c) || std::islower(c); });
1268 std::string::size_type n = sub.length();
1269 for (std::string::size_type i =
main.find(sub); i != std::string::npos; i =
main.find(sub))
1276 std::string copy_main =
main;
1277 std::string::size_type n = sub.length();
1278 for (std::string::size_type i = copy_main.find(sub); i != std::string::npos;
1279 i = copy_main.find(sub))
1280 copy_main.erase(i, n);
void mooseWarning(Args &&... args)
Emit a warning message with the given stringified, concatenated args.
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application.
void removeSubstring(std::string &main, const std::string &sub)
void ErrorVector unsigned int
A MultiMooseEnum object to hold "execute_on" flags.
HashMap is an abstraction for dictionary data type, we make it thread-safe by locking inserts.
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
static bool isAvailable(const std::filesystem::path &folder_base)
processor_id_type size() const
processor_id_type rank() const
Status receive(const unsigned int dest_processor_id, T &buf, const MessageTag &tag=any_tag) const
void send(const unsigned int dest_processor_id, const T &buf, const MessageTag &tag=no_tag) const
static bool is_elemental_data_fe_type(const FEType &type)
FEType set_p_refinement(bool p) &
const ExecFlagEnum & getDefaultFlags() const
static ExecFlagRegistry & getExecFlagRegistry()
Return Singleton instance.
void replaceStart(std::string &string1, const std::string &string2, const std::string &string3)
void linearPartitionItems(dof_id_type num_items, dof_id_type num_chunks, dof_id_type chunk_id, dof_id_type &num_local_items, dof_id_type &local_items_begin, dof_id_type &local_items_end)
int stringToInteger(const std::string &input, bool throw_on_failure)
bool isFinitePoint(const Point &point)
std::string mooseDocsURL(const std::string &path)
bool checkForGitLFSPointer(std::ifstream &file)
std::string & removeColor(std::string &msg)
libMesh::FEType variableFEType(const InputParameters ¶ms)
std::string realpath(const std::string &path)
void removedirs(const std::string &dir_name, bool throw_on_failure)
std::filesystem::path pathjoin(const std::filesystem::path &p)
bool hasExtension(const std::string &filename, std::string ext, bool strip_exodus_ext)
unsigned short getTermWidth(bool use_environment)
std::string canonicalPath(const std::string &path)
void indentMessage(const std::string &prefix, std::string &message, const char *color, bool indent_first_line, const std::string &post_prefix)
std::string removeExtraWhitespace(const std::string &input)
std::string getCurrentWorkingDir()
std::string camelCaseToUnderscore(const std::string &camel_case_name)
std::string baseName(const std::string &name)
bool pathContains(const std::string &expression, const std::string &string_to_find, const std::string &delims)
void createSymlink(const std::string &target, const std::string &link)
void makedirs(const std::string &dir_name, bool throw_on_failure)
std::string installedInputsDir(const std::string &app_name, const std::string &dir_name, const std::string &extra_error_msg)
std::vector< std::string > split(const std::string &str, const std::string &delimiter, std::size_t max_count)
void tokenize(const std::string &str, std::vector< T > &elements, unsigned int min_len=1, const std::string &delims="/")
This function will split the passed in string on a set of delimiters appending the substrings to the ...
std::list< std::string > getFilesInDirs(const std::list< std::string > &directory_list, const bool files_only)
bool checkFileWriteable(const std::string &filename, bool throw_on_unwritable)
void serialEnd(const libMesh::Parallel::Communicator &comm, bool warn)
std::string getExtension(const std::string &filename, const bool rfind)
bool isAllLowercase(const std::string &str)
bool pathExists(const std::string &path)
int levenshteinDist(const std::string &s1, const std::string &s2)
std::string docsDir(const std::string &app_name)
bool startsWith(const std::string &string1, const std::string &string2)
bool parsesToReal(const std::string &input, Real *parsed_real)
std::string replaceAll(std::string str, const std::string &from, const std::string &to)
processor_id_type linearPartitionChunk(dof_id_type num_items, dof_id_type num_chunks, dof_id_type item_id)
void escape(std::string &str)
std::string convertLatestCheckpoint(std::string orig)
std::string underscoreToCamelCase(const std::string &underscore_name, bool leading_upper_case)
bool globCompare(const std::string &candidate, const std::string &pattern, std::size_t c, std::size_t p)
ExecFlagEnum getDefaultExecFlagEnum()
bool beginsWith(const std::string &value, const std::string &begin_value)
void parallelBarrierNotify(const Parallel::Communicator &comm, bool messaging)
BoundingBox buildBoundingBox(const Point &p1, const Point &p2)
void MaterialPropertyStorageDump(const HashMap< const libMesh::Elem *, HashMap< unsigned int, MaterialProperties > > &props)
std::string prettyCppType(const std::string &cpp_type)
std::string stripExtension(const std::string &s, const bool rfind)
std::string findTestRoot()
std::size_t fileSize(const std::string &filename)
bool wildCardMatch(std::string name, std::string search_string)
void addLineBreaks(std::string &message, unsigned int line_width)
std::list< std::string > listDir(const std::string path, bool files_only)
void serialBegin(const libMesh::Parallel::Communicator &comm, bool warn)
std::string getLatestCheckpointFilePrefix(const std::list< std::string > &checkpoint_files)
void clearSymlink(const std::string &link)
bool checkFileReadable(const std::string &filename, bool check_line_endings, bool throw_on_unreadable, bool check_for_git_lfs_pointer)
std::string runTestsExecutable()
std::string shortName(const std::string &name)
std::vector< std::string > rsplit(const std::string &str, const std::string &delimiter, std::size_t max_count)
static constexpr std::size_t dim
This is the dimension of all vector and tensor datastructures used in MOOSE.
std::string getExecutablePath()
Gets the directory the running executable is on Mac OS X and linux.
int mkdir(const char *pathname)