QMCPACK
AOBasisBuilder.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) 2020 QMCPACK developers.
6 //
7 // File developed by: Jeremy McMinnis, jmcminis@gmail.com, University of Illinois at Urbana-Champaign
8 // Jeongnim Kim, jeongnim.kim@gmail.com, University of Illinois at Urbana-Champaign
9 // Jaron T. Krogel, krogeljt@ornl.gov, Oak Ridge National Laboratory
10 // Mark A. Berrill, berrillma@ornl.gov, Oak Ridge National Laboratory
11 // Miguel Morales, moralessilva2@llnl.gov, Lawrence Livermore National Laboratory
12 //
13 // File created by: Jeongnim Kim, jeongnim.kim@gmail.com, University of Illinois at Urbana-Champaign
14 //////////////////////////////////////////////////////////////////////////////////////
15 
16 
17 #ifndef QMCPLUSPLUS_ATOMICORBITALBUILDER_H
18 #define QMCPLUSPLUS_ATOMICORBITALBUILDER_H
19 
20 
21 #include "Message/MPIObjectBase.h"
22 #include "hdf/hdf_archive.h"
24 
25 namespace qmcplusplus
26 {
27 /** atomic basisset builder
28  * @tparam COT, CenteredOrbitalType = SoaAtomicBasisSet<RF,SH>
29  *
30  * Reimplement AtomiSPOSetBuilder.h
31  */
32 template<typename COT>
34 {
35 public:
36  enum
37  {
44  };
45 
46 private:
48  int expandlm;
49  std::string Morder;
50  std::string sph;
51  std::string basisType;
52  std::string elementType;
53  std::string Normalized;
54 
55  ///map for the radial orbitals
56  std::map<std::string, int> RnlID;
57 
58  ///map for (n,l,m,s) to its quantum number index
59  std::map<std::string, int> nlms_id;
60 
61 public:
62  AOBasisBuilder(const std::string& eName, Communicate* comm);
63 
64  bool put(xmlNodePtr cur);
65  bool putH5(hdf_archive& hin);
66 
67  SPOSet* createSPOSetFromXML(xmlNodePtr cur) { return 0; }
68 
69  std::unique_ptr<COT> createAOSet(xmlNodePtr cur);
70  std::unique_ptr<COT> createAOSetH5(hdf_archive& hin);
71 
72  int expandYlm(COT* aos, std::vector<int>& all_nl, int expandlm = DONOT_EXPAND);
73 };
74 } // namespace qmcplusplus
75 #endif
base class for Single-particle orbital sets
Definition: SPOSet.h:46
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
class to handle hdf file
Definition: hdf_archive.h:51
declaration of MPIObjectBase
std::map< std::string, int > RnlID
map for the radial orbitals
Wrapping information on parallelism.
Definition: Communicate.h:68
atomic basisset builder
AOBasisBuilder(const std::string &eName, Communicate *comm)
std::unique_ptr< COT > createAOSet(xmlNodePtr cur)
std::map< std::string, int > nlms_id
map for (n,l,m,s) to its quantum number index
SPOSet * createSPOSetFromXML(xmlNodePtr cur)
std::unique_ptr< COT > createAOSetH5(hdf_archive &hin)
int expandYlm(COT *aos, std::vector< int > &all_nl, int expandlm=DONOT_EXPAND)
bool put(xmlNodePtr cur)
bool putH5(hdf_archive &hin)