21 std::string input = filename;
23 std::regex pattern(
"\\{([a-zA-Z0-9_\\.]+)(\\s*,\\s*\"([^\"]*)\")?\\}");
26 auto matches_begin = std::sregex_iterator(input.begin(), input.end(), pattern);
27 auto matches_end = std::sregex_iterator();
30 for (std::sregex_iterator i = matches_begin; i != matches_end; ++i)
32 std::smatch match = *i;
33 std::string variable_name = match[1].str();
34 std::string formatting_string = match[3].str();
36 if (!formatting_string.empty()) {
39 if (variable_name.rfind(
"SLURM_", 0) == 0)
41 const char *variable_value = std::getenv(variable_name.c_str());
42 const std::string replacement =
43 variable_value !=
nullptr && variable_value[0] !=
'\0' ?
44 variable_value : variable_name;
46 filename,
"{" + variable_name +
"}", replacement);
50 std::vector<std::string> variable_value;
51 pp.
queryarr(variable_name.c_str(),variable_value);
62 if (!
t)
t = std::time(0);
63 std::tm * now = std::localtime(&
t);
64 int year = now->tm_year+1900;
65 int month = now->tm_mon+1;
66 int day = now->tm_mday;
67 int hour = now->tm_hour;
68 int minute = now->tm_min;
69 int second = now->tm_sec;
70 int microsecond = std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::system_clock::now().time_since_epoch()).count() % 1000000;
77 std::string _Y = ss.str();
82 ss << std::setfill(
'0') << std::setw(2) << month;
83 std::string _m = ss.str();
88 ss << std::setfill(
'0') << std::setw(2) << day;
89 std::string _d = ss.str();
94 ss << std::setfill(
'0') << std::setw(2) << hour;
95 std::string _H = ss.str();
100 ss << std::setfill(
'0') << std::setw(2) << minute;
101 std::string _M = ss.str();
106 ss << std::setfill(
'0') << std::setw(2) << second;
107 std::string _S = ss.str();
114 std::string _f = ss.str();
119 ss << AMREX_SPACEDIM;
120 std::string _D = ss.str();
135 std::vector<char> cstr(filename.begin(),filename.end());
136 amrex::ParallelDescriptor::Bcast(cstr.data(), cstr.size(), amrex::ParallelDescriptor::IOProcessorNumber(), MPI_COMM_WORLD);
137 filename = std::string(cstr.begin(),cstr.end());