QMCPACK
QMCDriverFactory.h
Go to the documentation of this file.
1 //////////////////////////////////////////////////////////////////////////////////////
2 // This file is distributed under the University of Illinois/NCSA Open Source License.
3 // See LICENSE file in top directory for details.
4 //
5 // Copyright (c) 2022 QMCPACK developers.
6 //
7 // File developed by: Bryan Clark, bclark@Princeton.edu, Princeton University
8 // Ken Esler, kpesler@gmail.com, University of Illinois at Urbana-Champaign
9 // Jeongnim Kim, jeongnim.kim@gmail.com, University of Illinois at Urbana-Champaign
10 // Jeremy McMinnis, jmcminis@gmail.com, University of Illinois at Urbana-Champaign
11 // Raymond Clay III, j.k.rofling@gmail.com, Lawrence Livermore National Laboratory
12 // Mark Dewing, markdewing@gmail.com, University of Illinois at Urbana-Champaign
13 // Peter Doak, doakpw@ornl.gov, Oak Ridge National Laboratory
14 //
15 // File created by: Jeongnim Kim, jeongnim.kim@gmail.com, University of Illinois at Urbana-Champaign
16 //////////////////////////////////////////////////////////////////////////////////////
17 
18 
19 #ifndef QMCPLUSPLUS_QMCDRIVER_FACTORY_H
20 #define QMCPLUSPLUS_QMCDRIVER_FACTORY_H
21 #include <bitset>
22 #include <string>
23 
29 
30 class Communicate;
31 
32 namespace qmcplusplus
33 {
34 //forward declaration
35 class MCWalkerConfiguration;
36 class QMCDriverInterface;
37 class WaveFunctionPool;
38 class HamiltonianPool;
39 class ProjectData;
40 
42 {
43 public:
45  {
46  std::bitset<QMC_MODE_MAX> what_to_do;
47  bool append_run = false;
48  bool enable_profiling = false;
49  std::string traces_tag = "none";
50  std::string walkerlogs_tag = "none";
52  };
53 
54  /** Application uses this constructor
55  * param[in] project_data this is stored as a reference and this state controls later behavior.
56  * For both the driver factory i.e. driver verion. And the drivers it creates
57  * i.e. the section id and max CPU seconds.
58  */
59  QMCDriverFactory(const ProjectData& project_data);
60 
61  /** default constructor **/
62  //QMCDriverFactory() ;
63 
64  /** read the current QMC Section
65  * In the application context project data can indicate the input be read in the context of
66  * the batched driver architecture.
67  * param[in] cur qmc section node
68  * param[in] emi std::optional<EstimatorManagerInput> if it is there it is the global estimator manager input.
69  */
70  DriverAssemblyState readSection(xmlNodePtr cur) const;
71 
72  /** create a new QMCDriver
73  *
74  * Broken out for unit tests
75  */
76  std::unique_ptr<QMCDriverInterface> createQMCDriver(xmlNodePtr cur,
78  const std::optional<EstimatorManagerInput>& emi,
79  MCWalkerConfiguration& qmc_system,
81  WaveFunctionPool& wave_function_pool,
83  Communicate* comm) const;
84 
85 private:
86  /// project info for accessing global fileroot and series id
88 };
89 } // namespace qmcplusplus
90 #endif
QMCDriverFactory(const ProjectData &project_data)
Application uses this constructor param[in] project_data this is stored as a reference and this state...
A set of walkers that are to be advanced by Metropolis Monte Carlo.
helper functions for EinsplineSetBuilder
Definition: Configuration.h:43
declares the list supported estimator input types and declares the input type for EstimatorManagerNew...
DriverAssemblyState readSection(xmlNodePtr cur) const
default constructor
class ProjectData
Definition: ProjectData.h:36
EstimatorManagerInput emi(estimators_doc.getRoot())
Declaration of OhmmsElementBase and define xml-related macros.
Wrapping information on parallelism.
Definition: Communicate.h:68
std::unique_ptr< QMCDriverInterface > createQMCDriver(xmlNodePtr cur, DriverAssemblyState &das, const std::optional< EstimatorManagerInput > &emi, MCWalkerConfiguration &qmc_system, ParticleSetPool &particle_pool, WaveFunctionPool &wave_function_pool, HamiltonianPool &hamiltonian_pool, Communicate *comm) const
create a new QMCDriver
const ProjectData & project_data_
project info for accessing global fileroot and series id
Manage a collection of ParticleSet objects.
Manage a collection of TrialWaveFunction objects.
Declaration of ParticleSetPool.
Manage a collection of QMCHamiltonian objects.