QMCPACK
PWParameterSet.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 // Jeremy McMinnis, jmcminis@gmail.com, University of Illinois at Urbana-Champaign
9 // Mark A. Berrill, berrillma@ornl.gov, Oak Ridge National Laboratory
10 //
11 // File created by: Jeongnim Kim, jeongnim.kim@gmail.com, University of Illinois at Urbana-Champaign
12 //////////////////////////////////////////////////////////////////////////////////////
13 
14 
15 /** @file PWParameterSet.cpp
16  * @brief Utility class to handle hdf5
17  */
18 #ifndef QMCPLUSPLUS_PWPARAMETERSET_H
19 #define QMCPLUSPLUS_PWPARAMETERSET_H
20 #include "Configuration.h"
21 #include "OhmmsData/ParameterSet.h"
22 #include "Message/MPIObjectBase.h"
23 #include "hdf/hdf_archive.h"
24 #include "hdf5.h"
25 
26 namespace qmcplusplus
27 {
28 /** class to handle various name conventions for hdf5 file
29  */
31 {
32  ///true if spin channel exists
33  bool hasSpin;
34  ///version
36  ///index of the twist angle
38  ///number of input bands
39  int numBands;
40  ///energy cutoff for QMC wavefunction
41  double Ecut;
42  ///cutoff radius for truncated orbitals
43  double Rcut;
44  ///radius of buffer layer for truncated orbitals
45  double BufferRadius;
46  ///cell multiplications
48  ///tag for the parameters
49  std::string paramTag;
50  ///tag for the basis
51  std::string basisTag;
52  ///tag for the planewaves
53  std::string pwTag;
54  ///tag for the multipliers of the planewaves
55  std::string pwMultTag;
56  ///tag for eigentstates
57  std::string eigTag;
58  ///tag for twist angles
59  std::string twistTag;
60  ///tag for the band
61  std::string bandTag;
62  ///tag for the spin
63  std::string spinTag;
64  ///tag for eigvector
65  std::string eigvecTag;
66  ///xml processor
68 
70 
71  bool put(xmlNodePtr cur) { return m_param.put(cur); }
72 
73  void checkVersion(hdf_archive& h);
74 
75  double getEcut(double ecut);
76 
77  /** get the dimensions of the eigenvectors
78  * @param h fileid
79  * @return true, if the data is complex
80  */
81  bool getEigVectorType(hid_t h);
82 
83  bool hasComplexData(hdf_archive& h);
84 
85  std::string getTwistAngleName();
86 
87  std::string getTwistName();
88 
89  std::string getTwistName(int i);
90 
91  std::string getBandName(int ib, int ispin);
92 
93  std::string getBandName(int ib);
94 
95  std::string getSpinName(int ispin);
96 
97  std::string getEigVectorName(const std::string& hg, int ib, int ispin);
98  std::string getEigVectorName(int ib, int ispin);
99  std::string getCenterName(const std::string& hg, int ib);
100  std::string getOriginName(const std::string& hg, int ib);
101 };
102 } // namespace qmcplusplus
103 #endif
std::string eigTag
tag for eigentstates
std::string bandTag
tag for the band
ParameterSet m_param
xml processor
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
std::string basisTag
tag for the basis
std::string pwTag
tag for the planewaves
PWParameterSet(Communicate *comm)
TinyVector< int, OHMMS_DIM > BoxDup
cell multiplications
int twistIndex
index of the twist angle
std::string getCenterName(const std::string &hg, int ib)
double BufferRadius
radius of buffer layer for truncated orbitals
bool put(xmlNodePtr cur)
class to handle hdf file
Definition: hdf_archive.h:51
declaration of MPIObjectBase
std::string getEigVectorName(const std::string &hg, int ib, int ispin)
double getEcut(double ecut)
std::string pwMultTag
tag for the multipliers of the planewaves
class to handle various name conventions for hdf5 file
bool put(std::istream &is) override
read from std::istream
Definition: ParameterSet.h:42
Wrapping information on parallelism.
Definition: Communicate.h:68
std::string getOriginName(const std::string &hg, int ib)
double Ecut
energy cutoff for QMC wavefunction
class to handle a set of parameters
Definition: ParameterSet.h:27
std::string getBandName(int ib, int ispin)
int numBands
number of input bands
bool getEigVectorType(hid_t h)
get the dimensions of the eigenvectors
double Rcut
cutoff radius for truncated orbitals
TinyVector< int, 2 > version
version
std::string spinTag
tag for the spin
std::string paramTag
tag for the parameters
void checkVersion(hdf_archive &h)
bool hasSpin
true if spin channel exists
std::string eigvecTag
tag for eigvector
std::string twistTag
tag for twist angles
bool hasComplexData(hdf_archive &h)
std::string getSpinName(int ispin)