QMCPACK
InitMolecularSystem.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: 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 //
10 // File created by: Jeongnim Kim, jeongnim.kim@gmail.com, University of Illinois at Urbana-Champaign
11 //////////////////////////////////////////////////////////////////////////////////////
12 
13 
14 /**@file InitMolecularSystem.h
15  * @brief Declaration of InitMolecularSystem
16  */
17 #ifndef QMCPLUSPLUS_INITMOLECULARSYSTEM_H
18 #define QMCPLUSPLUS_INITMOLECULARSYSTEM_H
19 
21 #include <map>
22 
23 namespace qmcplusplus
24 {
25 class ParticleSet;
26 class ParticleSetPool;
27 
28 /* Engine to initialize the initial electronic structure for a molecular system
29  */
31 {
32 public:
33  InitMolecularSystem(ParticleSetPool& pset, const char* aname = "mosystem");
34 
35  bool get(std::ostream& os) const override;
36  bool put(std::istream& is) override;
37  bool put(xmlNodePtr cur) override;
38  void reset() override;
39 
40  /** initialize els for an atom
41  */
42  void initAtom(ParticleSet* ions, ParticleSet* els);
43  /** initialize els position for a molecule
44  *
45  * Use the valence of each ionic species on a sphere
46  */
47  void initMolecule(ParticleSet* ions, ParticleSet* els);
48  /** initialize els for the systems with a mixed boundary
49  *
50  * Use the bound of the ionic systems and uniform random positions within a reduced box
51  */
52  void initWithVolume(ParticleSet* ions, ParticleSet* els);
53 
54 private:
55  /** pointer to ParticleSetPool
56  *
57  * QMCHamiltonian needs to know which ParticleSet object
58  * is used as an input object for the evaluations.
59  * Any number of ParticleSet can be used to describe
60  * a QMCHamiltonian.
61  */
63 };
64 } // namespace qmcplusplus
65 #endif
helper functions for EinsplineSetBuilder
Definition: Configuration.h:43
Declaration of OhmmsElementBase and define xml-related macros.
Specialized paritlce class for atomistic simulations.
Definition: ParticleSet.h:55
Abstract class to provide xml-compatible I/O interfaces for the derived classes.
void initWithVolume(ParticleSet *ions, ParticleSet *els)
initialize els for the systems with a mixed boundary
Manage a collection of ParticleSet objects.
void initAtom(ParticleSet *ions, ParticleSet *els)
initialize els for an atom
void reset() override
reset member data
void initMolecule(ParticleSet *ions, ParticleSet *els)
initialize els position for a molecule
InitMolecularSystem(ParticleSetPool &pset, const char *aname="mosystem")
ParticleSetPool & ptclPool
pointer to ParticleSetPool
bool put(std::istream &is) override
read from std::istream