QMCPACK
VMCFactoryNew Class Reference
+ Collaboration diagram for VMCFactoryNew:

Public Member Functions

 VMCFactoryNew (xmlNodePtr cur, const int vmode)
 
std::unique_ptr< QMCDriverInterfacecreate (const ProjectData &project_data, const std::optional< EstimatorManagerInput > &global_emi, WalkerConfigurations &wc, MCPopulation &&pop, SampleStack &samples, Communicate *comm)
 create a VMCBatched driver. More...
 

Private Attributes

const int vmc_mode_
 
xmlNodePtr input_node_
 

Detailed Description

Definition at line 30 of file VMCFactoryNew.h.

Constructor & Destructor Documentation

◆ VMCFactoryNew()

VMCFactoryNew ( xmlNodePtr  cur,
const int  vmode 
)
inline

Definition at line 38 of file VMCFactoryNew.h.

38 : vmc_mode_(vmode), input_node_(cur) {}

Member Function Documentation

◆ create()

std::unique_ptr< QMCDriverInterface > create ( const ProjectData project_data,
const std::optional< EstimatorManagerInput > &  global_emi,
WalkerConfigurations wc,
MCPopulation &&  pop,
SampleStack samples,
Communicate comm 
)

create a VMCBatched driver.

Parameters
[in]project_datacontaining so basic options including DriverVersion and max_cpu_seconds
[in]global_emioptional global estimator manager input passed by value to insure copy, a global input should not be consumed by driver.

Definition at line 23 of file VMCFactoryNew.cpp.

References qmcplusplus::app_summary(), qmcplusplus::comm, qmcplusplus::Units::charge::e, VMCFactoryNew::input_node_, VMCDriverInput::readXML(), QMCDriverInput::readXML(), and VMCFactoryNew::vmc_mode_.

Referenced by QMCDriverFactory::createQMCDriver().

29 {
30  app_summary() << "\n========================================"
31  "\n Reading VMC driver XML input section"
32  "\n========================================"
33  << std::endl;
34 
35  QMCDriverInput qmcdriver_input;
36  VMCDriverInput vmcdriver_input;
37  try
38  {
39  qmcdriver_input.readXML(input_node_);
40  vmcdriver_input.readXML(input_node_);
41  }
42  catch (const std::exception& e)
43  {
44  throw UniformCommunicateError(e.what());
45  }
46 
47  std::unique_ptr<QMCDriverInterface> qmc;
48 
49  if (vmc_mode_ == 0 || vmc_mode_ == 1) //(0,0,0) (0,0,1)
50  {
51  qmc = std::make_unique<VMCBatched>(project_data, std::move(qmcdriver_input), global_emi, std::move(vmcdriver_input),
52  wc, std::move(pop), samples, comm);
53  }
54  else
55  {
56  throw std::runtime_error("VMCFactoryNew does not support VMC_MODE");
57  }
58 
59  // TODO: I believe this is redundant and could become a bug.
60  qmc->setUpdateMode(vmc_mode_ & 1);
61  return qmc;
62 }
std::ostream & app_summary()
Definition: OutputManager.h:63

Member Data Documentation

◆ input_node_

xmlNodePtr input_node_
private

Definition at line 35 of file VMCFactoryNew.h.

Referenced by VMCFactoryNew::create().

◆ vmc_mode_

const int vmc_mode_
private

Definition at line 33 of file VMCFactoryNew.h.

Referenced by VMCFactoryNew::create().


The documentation for this class was generated from the following files: