41 max_cpu_secs_(360000),
42 driver_version_(driver_version),
54 os <<
" Project = " <<
title_ <<
"\n";
56 os <<
" host = " <<
host_ <<
"\n";
70 else if (t1 ==
"host")
72 else if (t1 ==
"date")
103 std::array<char, 256> fileroot;
104 std::array<char, 256> nextroot;
109 file_len = std::snprintf(fileroot.data(), fileroot.size(),
"%s.s%03d",
title_.c_str(),
series_);
111 file_len = std::snprintf(fileroot.data(), fileroot.size(),
"%s.g%03d.s%03d",
title_.c_str(), groupid,
series_);
121 file_len = std::snprintf(fileroot.data(), fileroot.size(),
".s%03d.p%03d",
series_, nodeid);
122 next_len = std::snprintf(nextroot.data(), nextroot.size(),
".s%03d.p%03d",
series_ + 1, nodeid);
126 file_len = std::snprintf(fileroot.data(), fileroot.size(),
".s%03d",
series_);
127 next_len = std::snprintf(nextroot.data(), nextroot.size(),
".s%03d",
series_ + 1);
134 file_len = std::snprintf(fileroot.data(), fileroot.size(),
".g%03d.s%03d.p%03d", groupid,
series_, nodeid);
135 next_len = std::snprintf(nextroot.data(), nextroot.size(),
".g%03d.s%03d.p%03d", groupid,
series_ + 1, nodeid);
139 file_len = std::snprintf(fileroot.data(), fileroot.size(),
".g%03d.s%03d", groupid,
series_);
140 next_len = std::snprintf(nextroot.data(), nextroot.size(),
".g%03d.s%03d", groupid,
series_ + 1);
144 throw std::runtime_error(
"Error generating project_root");
146 throw std::runtime_error(
"Error generating next_root");
155 xmlSetProp(
cur_, (
const xmlChar*)
"series", (
const xmlChar*)(
s.str().c_str()));
168 std::array<char, 128> fileroot;
173 file_len = std::snprintf(fileroot.data(), fileroot.size(),
".s%03d.p%03d",
series_ - 1, nodeid);
175 file_len = std::snprintf(fileroot.data(), fileroot.size(),
".s%03d",
series_ - 1);
180 file_len = std::snprintf(fileroot.data(), fileroot.size(),
".g%03d.s%03d.p%03d", groupid,
series_ - 1, nodeid);
182 file_len = std::snprintf(fileroot.data(), fileroot.size(),
".g%03d.s%03d", groupid,
series_ - 1);
185 throw std::runtime_error(
"Error generating olfroot");
187 oldroot.append(fileroot.data(), file_len);
201 if (!series_str.empty())
202 series_ = std::stoi(series_str);
204 std::string driver_version_str;
207 m_param.
add(driver_version_str,
"driver_version");
210 if (!driver_version_str.empty())
214 cur = cur->xmlChildrenNode;
217 std::string cname((
const char*)(cur->name));
240 xmlNewChild(
cur_,
cur_->ns, (
const xmlChar*)
"host", (
const xmlChar*)(
host_.c_str()));
245 xmlNewChild(
cur_,
cur_->ns, (
const xmlChar*)
"date", (
const xmlChar*)(
date_.c_str()));
270 std::string enum_value_str(
lowerCase(enum_value));
275 catch (std::out_of_range& oor_exc)
const std::string & getTitle() const noexcept
returns the title of the project <project id="det_qmc_short_sdbatch_vmcbatch_mwalkers" series="0"> tr...
bool previousRoot(std::string &oldroot) const
return the root of the previous sequence
DriverVersion driver_version_
helper functions for EinsplineSetBuilder
int rank() const
return the rank
void setCommunicator(Communicate *c)
ProjectData(const std::string &atitle="", DriverVersion de=DriverVersion::LEGACY)
constructor
bool isComplex() const noexcept
void advance()
increment a series number and reset project_root_
static const std::unordered_map< std::string, DriverVersion > lookup_input_enum_value
const std::string & nextRoot() const noexcept
returns the nextroot of the project, the series id is incremented at every QMC section <project id="d...
Communicate * Controller
Global Communicator for a process.
int size() const
return the number of tasks
const RuntimeOptions & getRuntimeOptions() const noexcept
bool put(std::istream &is) override
read from std::istream
std::string next_root_
root for the next run
Communicate * my_comm_
communicator
Wrapping information on parallelism.
std::string date_
date when the job is executed
int getGroupID() const
return the group id
int getMaxCPUSeconds() const noexcept
DriverVersion getDriverVersion() const noexcept
class to handle a set of parameters
bool put(std::istream &is)
std::string project_main_
main root for all the output engines
DriverVersion
Enum for global scope switch of design from legacy driver based to batch driver based.
std::string project_root_
processor-dependent root for all the output engines
int max_cpu_secs_
max cpu seconds
This a subclass for runtime errors that will occur on all ranks.
std::string lowerCase(const std::string_view s)
++17
xmlNodePtr cur_
the xml node for <Project>
void setXMLNodeContent(xmlNodePtr cur) const
write a string to an xmlNode
void setName(const std::string &aname)
std::string getXMLAttributeValue(const xmlNodePtr cur, const std::string_view name)
get the value string for attribute name if name is unfound in cur you get an empty string back this i...
int mpi_groups
number of mpi groups
string getHostName()
< return the host name
const std::string & currentMainRoot() const noexcept
returns the projectmain of the project, the series id is incremented at every QMC section <project id...
void add(PDT &aparam, const std::string &aname_in, std::vector< PDT > candidate_values={}, TagStatus status=TagStatus::OPTIONAL)
add a new parameter corresponding to an xmlNode <parameter>
convert xmlNode contents into a std::string
void rewind()
roll-back a series number and reset project_root_ by one
bool get(std::ostream &os) const
int getSeriesIndex() const noexcept
QMCState qmc_common
a unique QMCState during a run
std::string host_
name of the host where the job is running
static DriverVersion lookupDriverVersion(const std::string &enum_value)
RuntimeOptions runtime_options_
std::string title_
title of the project
void reset()
Construct the root name with title_ and m_series.