QMCPACK
PWOrbitalSetBuilder.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) 2023 QMCPACK developers.
6 //
7 // File developed by: Ye Luo, yeluo@anl.gov, Argonne National Laboratory
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 //
11 // File created by: Jeongnim Kim, jeongnim.kim@gmail.com, University of Illinois at Urbana-Champaign
12 //////////////////////////////////////////////////////////////////////////////////////
13 
14 
15 /** @file
16  * @brief Declaration of a builder class for PWOrbitalSet
17  *
18  */
19 #ifndef QMCPLUSPLUS_PWORBITAL_BUILDER_H
20 #define QMCPLUSPLUS_PWORBITAL_BUILDER_H
21 
22 #include "SPOSetBuilder.h"
23 #include "hdf/hdf_archive.h"
24 #if defined(QMC_COMPLEX)
26 #else
28 #endif
29 
30 namespace qmcplusplus
31 {
32 struct PWParameterSet;
33 class SlaterDet;
34 
35 /** OrbitalBuilder for Slater determinants in PW basis
36 */
38 {
39 private:
40 #if defined(QMC_COMPLEX)
41  using SPOSetType = PWOrbitalSet;
42 #else
44 #endif
45 
46  /// target particle set
48  ///xml node for determinantset
49  xmlNodePtr rootNode{nullptr};
50  ///input twist angle
52  ///parameter set
53  std::unique_ptr<PWParameterSet> myParam;
54  //will do something for twist
55  std::unique_ptr<PWBasis> myBasisSet;
56  ///hdf5 handler to clean up
58 
59 public:
60  ///constructor
61  PWOrbitalSetBuilder(const ParticleSet& p, Communicate* comm, xmlNodePtr cur);
62  ~PWOrbitalSetBuilder() override;
63 
64  /// create an sposet from xml and save the resulting SPOSet
65  std::unique_ptr<SPOSet> createSPOSetFromXML(xmlNodePtr cur) override;
66 
67 private:
68  bool getH5(xmlNodePtr cur, const char* aname);
69  bool createPWBasis();
70  std::unique_ptr<SPOSet> createPW(xmlNodePtr cur, const std::string& objname, int spinIndex);
71 #if defined(QMC_COMPLEX)
72  void transform2GridData(PWBasis::GIndex_t& nG, int spinIndex, PWOrbitalSet& pwFunc);
73 #endif
74 };
75 } // namespace qmcplusplus
76 #endif
helper functions for EinsplineSetBuilder
Definition: Configuration.h:43
Definition of member functions of Plane-wave basis set.
class to handle hdf file
Definition: hdf_archive.h:51
bool getH5(xmlNodePtr cur, const char *aname)
hdf_archive hfile
hdf5 handler to clean up
Wrapping information on parallelism.
Definition: Communicate.h:68
Specialized paritlce class for atomistic simulations.
Definition: ParticleSet.h:55
base class for the real SPOSet builder
Definition: SPOSetBuilder.h:47
Declaration of a base class of SPOSet Builders.
PWOrbitalSetBuilder(const ParticleSet &p, Communicate *comm, xmlNodePtr cur)
constructor
std::unique_ptr< SPOSet > createSPOSetFromXML(xmlNodePtr cur) override
create an sposet from xml and save the resulting SPOSet
std::unique_ptr< PWParameterSet > myParam
parameter set
xmlNodePtr rootNode
xml node for determinantset
std::unique_ptr< SPOSet > createPW(xmlNodePtr cur, const std::string &objname, int spinIndex)
Define PWRealOrbitalSet derived from SPOSet.
const ParticleSet & targetPtcl
target particle set
bool createPWBasis()
The read routine - get data from XML and H5.
OrbitalBuilder for Slater determinants in PW basis.
std::unique_ptr< PWBasis > myBasisSet
PosType TwistAngle
input twist angle