QMCPACK
WaveFunctionComponentBuilder.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: Ken Esler, kpesler@gmail.com, University of Illinois at Urbana-Champaign
8 // Miguel Morales, moralessilva2@llnl.gov, Lawrence Livermore National Laboratory
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 // Mark A. Berrill, berrillma@ornl.gov, Oak Ridge National Laboratory
12 //
13 // File created by: Jeongnim Kim, jeongnim.kim@gmail.com, University of Illinois at Urbana-Champaign
14 //////////////////////////////////////////////////////////////////////////////////////
15 
16 
17 /**@file WaveFunctionComponentBuilder.h
18  *@brief declaration of the base class for many-body wavefunction.
19  */
20 #ifndef QMCPLUSPLUS_TRIALORBITALBUILDERBASE_H
21 #define QMCPLUSPLUS_TRIALORBITALBUILDERBASE_H
22 
23 #include <map>
24 #include <memory>
25 #include "Message/MPIObjectBase.h"
27 
28 /**@defgroup WFSBuilder Orbital builder group
29  * @brief Builder classes to build WaveFunctionComponent
30  */
31 namespace qmcplusplus
32 {
33 /**@ingroup WFCBuilder
34  * @brief An abstract class for wave function builders
35  */
37 {
38 public:
43  using PSetMap = std::map<std::string, const std::unique_ptr<ParticleSet>>;
44 
45  /** \ingroup XMLTags
46  *@{
47  *@brief reserved tags for the elements associated with the many-body wavefunctions
48  */
49  /// the element name for a wavefunction
50  static std::string wfs_tag;
51  /// the element name for a parameter
52  static std::string param_tag;
53  /// the element name for a distancetable
54  static std::string dtable_tag;
55  /// the element name for jatrow
56  static std::string jastrow_tag;
57  /// the element name for a set of Slater determinants, contains 1..* Slater determinants
58  static std::string detset_tag;
59  /// the element name for a Slater determinant, contains 1..* determinants
60  static std::string sd_tag;
61  /// the element name for a determinant, may contain (0..*) orbital or parameter element
62  static std::string det_tag;
63  /// the element name for a released node determinant, may contain (0..*) orbital or parameter element
64  static std::string rn_tag;
65  /// the element name for single-particle orbital
66  static std::string spo_tag;
67  /// the element name for single-particle orbital set
68  static std::string sposet_tag;
69  /// the element name for an ion wavefunction
70  static std::string ionorb_tag;
71  /// the element name for a backflow transformation
72  static std::string backflow_tag;
73  /// the element name for a multi slater determinant wavefunction
74  static std::string multisd_tag;
75 
76  //@}
77 
78  /** constructor
79  * @param comm communicator
80  * @param p target particle set
81  *
82  * Each builder class builds an object for composing a many-body wavefunction.
83  */
85 
86  virtual ~WaveFunctionComponentBuilder() = default;
87  /// process a xml node at cur
88  virtual std::unique_ptr<WaveFunctionComponent> buildComponent(xmlNodePtr cur) = 0;
89 
90 protected:
91  /// reference to the particle set on which targetPsi is defined
93 
94  /// xmlNode operated by this object
95  xmlNodePtr myNode;
96 };
97 
98 } // namespace qmcplusplus
99 #endif
static std::string det_tag
the element name for a determinant, may contain (0..*) orbital or parameter element ...
static std::string multisd_tag
the element name for a multi slater determinant wavefunction
Base class for any object which needs to know about a MPI communicator.
Definition: MPIObjectBase.h:26
helper functions for EinsplineSetBuilder
Definition: Configuration.h:43
An abstract class for wave function builders.
QTBase::GradType GradType
Definition: Configuration.h:62
QTBase::RealType RealType
Definition: Configuration.h:58
WaveFunctionComponentBuilder(Communicate *comm, ParticleSet &p)
constructor
declaration of MPIObjectBase
static std::string spo_tag
the element name for single-particle orbital
static std::string rn_tag
the element name for a released node determinant, may contain (0..*) orbital or parameter element ...
std::map< std::string, const std::unique_ptr< ParticleSet > > PSetMap
ParticleSet & targetPtcl
reference to the particle set on which targetPsi is defined
Wrapping information on parallelism.
Definition: Communicate.h:68
Specialized paritlce class for atomistic simulations.
Definition: ParticleSet.h:55
virtual std::unique_ptr< WaveFunctionComponent > buildComponent(xmlNodePtr cur)=0
process a xml node at cur
static std::string param_tag
the element name for a parameter
QTBase::ValueType ValueType
Definition: Configuration.h:60
static std::string detset_tag
the element name for a set of Slater determinants, contains 1..* Slater determinants ...
static std::string wfs_tag
reserved tags for the elements associated with the many-body wavefunctions
xmlNodePtr myNode
xmlNode operated by this object
QTBase::PosType PosType
Definition: Configuration.h:61
static std::string sd_tag
the element name for a Slater determinant, contains 1..* determinants
static std::string dtable_tag
the element name for a distancetable
static std::string backflow_tag
the element name for a backflow transformation
static std::string ionorb_tag
the element name for an ion wavefunction
static std::string sposet_tag
the element name for single-particle orbital set
Declaration of WaveFunctionComponent.
static std::string jastrow_tag
the element name for jatrow