QMCPACK
VMCFactory.cpp
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: Ken Esler, kpesler@gmail.com, University of Illinois at Urbana-Champaign
8 // Jeongnim Kim, jeongnim.kim@gmail.com, University of Illinois at Urbana-Champaign
9 // Jeremy McMinnis, jmcminis@gmail.com, University of Illinois at Urbana-Champaign
10 // Raymond Clay III, j.k.rofling@gmail.com, Lawrence Livermore National Laboratory
11 //
12 // File created by: Jeongnim Kim, jeongnim.kim@gmail.com, University of Illinois at Urbana-Champaign
13 //////////////////////////////////////////////////////////////////////////////////////
14 
15 
16 #include "VMCFactory.h"
17 #include "QMCDrivers/VMC/VMC.h"
20 #include "RandomNumberControl.h"
21 #if defined(QMC_BUILD_COMPLETE)
22 //REMOVE Broken warping
23 //#if !defined(QMC_COMPLEX)
24 //#include "QMCDrivers/VMC/VMCMultipleWarp.h"
25 //#include "QMCDrivers/VMC/VMCPbyPMultiWarp.h"
26 //#endif
27 //#include "QMCDrivers/CorrelatedSampling/CSVMC.h"
28 #endif
29 #include "Concurrency/OpenMP.h"
30 
31 namespace qmcplusplus
32 {
33 std::unique_ptr<QMCDriverInterface> VMCFactory::create(const ProjectData& project_data,
35  TrialWaveFunction& psi,
36  QMCHamiltonian& h,
38  bool enable_profiling)
39 {
40  //(SPACEWARP_MODE,MULTIPE_MODE,UPDATE_MODE)
41  std::unique_ptr<QMCDriverInterface> qmc;
42  if (VMCMode == 0 || VMCMode == 1) //(0,0,0) (0,0,1)
43  {
44  qmc = std::make_unique<VMC>(project_data, w, psi, h, RandomNumberControl::Children, comm, enable_profiling);
45  }
46  else if (VMCMode == 2 || VMCMode == 3)
47  {
48  qmc = std::make_unique<CSVMC>(project_data, w, psi, h, comm);
49  }
50  qmc->setUpdateMode(VMCMode & 1);
51  return qmc;
52 }
53 } // namespace qmcplusplus
A set of walkers that are to be advanced by Metropolis Monte Carlo.
helper functions for EinsplineSetBuilder
Definition: Configuration.h:43
unsigned long VMCMode
Definition: VMCFactory.h:26
class ProjectData
Definition: ProjectData.h:36
Collection of Local Energy Operators.
Wrapping information on parallelism.
Definition: Communicate.h:68
Definition of CSVMC.
static UPtrVector< RandomBase< FullPrecRealType > > Children
std::unique_ptr< QMCDriverInterface > create(const ProjectData &project_data, MCWalkerConfiguration &w, TrialWaveFunction &psi, QMCHamiltonian &h, Communicate *comm, bool enable_profiling)
Definition: VMCFactory.cpp:33
Class to represent a many-body trial wave function.