QMCPACK
DMC.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) 2016 Jeongnim Kim and QMCPACK developers.
6 //
7 // File developed by: Jeongnim Kim, jeongnim.kim@gmail.com, University of Illinois at Urbana-Champaign
8 // Ken Esler, kpesler@gmail.com, University of Illinois at Urbana-Champaign
9 // Jeremy McMinnis, jmcminis@gmail.com, University of Illinois at Urbana-Champaign
10 // Mark A. Berrill, berrillma@ornl.gov, Oak Ridge National Laboratory
11 //
12 // File created by: Jeongnim Kim, jeongnim.kim@gmail.com, University of Illinois at Urbana-Champaign
13 //////////////////////////////////////////////////////////////////////////////////////
14 
15 
16 /** @file DMC.h
17  * @brief Define OpenMP-able DMC Driver.
18  */
19 #ifndef QMCPLUSPLUS_DMC_H
20 #define QMCPLUSPLUS_DMC_H
21 #include "QMCDrivers/QMCDriver.h"
23 namespace qmcplusplus
24 {
25 /** @ingroup QMCDrivers
26  * @brief DMC driver using OpenMP paragra
27  *
28  * This is the main DMC driver with MPI/OpenMP loops over the walkers.
29  */
30 class DMC : public QMCDriver, public CloneManager
31 {
32 public:
33  /// Constructor.
34  DMC(const ProjectData& project_data,
36  TrialWaveFunction& psi,
37  QMCHamiltonian& h,
40  bool enable_profiling);
41 
42  bool run() override;
43  bool put(xmlNodePtr cur) override;
44  void setTau(RealType i);
45  QMCRunType getRunType() override { return QMCRunType::DMC; }
46 
47 private:
48  //
50  ///Index to determine what to do when node crossing is detected
51  // does not appear to be used
53  ///Interval between branching
55  ///hdf5 file name for Branch conditions
56  std::string BranchInfo;
57  ///input std::string to determine kill walkers or not
58  std::string KillWalker;
59  ///input std::string to determine swap walkers among mpi processors
60  std::string SwapWalkers;
61  ///input to control diffusion with L2 operator
62  std::string L2;
63  ///input std::string to determine to use reconfiguration
64  std::string Reconfiguration;
65  ///input std::string to determine to use nonlocal move
66  std::string NonLocalMove;
67  ///input to control maximum age allowed for walkers.
69 
70  void resetUpdateEngines();
71  /// Copy Constructor (disabled)
72  DMC(const DMC&) = delete;
73  /// Copy operator (disabled).
74  DMC& operator=(const DMC&) = delete;
75 };
76 } // namespace qmcplusplus
77 
78 #endif
DMC type: dmc, dmc-ptcl.
bool run() override
Definition: DMC.cpp:228
A set of walkers that are to be advanced by Metropolis Monte Carlo.
helper functions for EinsplineSetBuilder
Definition: Configuration.h:43
QTBase::RealType RealType
Definition: Configuration.h:58
Manager clones for threaded applications.
Definition: CloneManager.h:34
class ProjectData
Definition: ProjectData.h:36
void resetUpdateEngines()
Definition: DMC.cpp:70
Collection of Local Energy Operators.
DMC & operator=(const DMC &)=delete
Copy operator (disabled).
std::vector< std::unique_ptr< T > > UPtrVector
abstract base class for QMC engines
Definition: QMCDriver.h:71
IndexType mover_MaxAge
input to control maximum age allowed for walkers.
Definition: DMC.h:68
UPtrVector< RandomBase< QMCTraits::FullPrecRealType > > & rngs_
Definition: DMC.h:49
DMC(const ProjectData &project_data, MCWalkerConfiguration &w, TrialWaveFunction &psi, QMCHamiltonian &h, UPtrVector< RandomBase< QMCTraits::FullPrecRealType >> &rngs, Communicate *comm, bool enable_profiling)
Constructor.
Definition: DMC.cpp:44
Wrapping information on parallelism.
Definition: Communicate.h:68
Declaration of QMCDriver.
std::string Reconfiguration
input std::string to determine to use reconfiguration
Definition: DMC.h:64
OHMMS_INDEXTYPE IndexType
define other types
Definition: Configuration.h:65
void setTau(RealType i)
Class to represent a many-body trial wave function.
std::string BranchInfo
hdf5 file name for Branch conditions
Definition: DMC.h:56
Manager class to handle multiple threads.
QMCRunType getRunType() override
Definition: DMC.h:45
bool put(xmlNodePtr cur) override
Definition: DMC.cpp:339
IndexType BranchInterval
Interval between branching.
Definition: DMC.h:54
std::string KillWalker
input std::string to determine kill walkers or not
Definition: DMC.h:58
std::string L2
input to control diffusion with L2 operator
Definition: DMC.h:62
std::string SwapWalkers
input std::string to determine swap walkers among mpi processors
Definition: DMC.h:60
IndexType KillNodeCrossing
Index to determine what to do when node crossing is detected.
Definition: DMC.h:52
std::string NonLocalMove
input std::string to determine to use nonlocal move
Definition: DMC.h:66
DMC driver using OpenMP paragra.
Definition: DMC.h:30