QMCPACK
SpaceGrid.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: Jaron T. Krogel, krogeljt@ornl.gov, Oak Ridge National Laboratory
8 // Mark A. Berrill, berrillma@ornl.gov, Oak Ridge National Laboratory
9 //
10 // File created by: Jaron T. Krogel, krogeljt@ornl.gov, Oak Ridge National Laboratory
11 //////////////////////////////////////////////////////////////////////////////////////
12 
13 
14 #ifndef QMCPLUSPLUS_SPACEGRID_H
15 #define QMCPLUSPLUS_SPACEGRID_H
16 
17 #include <Configuration.h>
18 #include "OhmmsPETE/Tensor.h"
19 #include "OhmmsPETE/OhmmsMatrix.h"
20 #include "Pools/PooledData.h"
22 #include "Particle/DistanceTable.h"
23 
24 namespace qmcplusplus
25 {
26 class SpaceGrid : public QMCTraits, public PtclOnLatticeTraits
27 {
28 public:
32 
33  SpaceGrid(int& nvalues);
34  bool put(xmlNodePtr cur,
35  std::map<std::string, Point>& points,
36  ParticlePos& R,
37  std::vector<RealType>& Z,
38  int ndp,
39  bool is_periodic,
40  bool abort_on_fail = true)
41  {
42  Rptcl = &R;
43  Zptcl = &Z;
44  ndparticles = ndp;
45  return put(cur, points, is_periodic, abort_on_fail);
46  }
47  bool put(xmlNodePtr cur, std::map<std::string, Point>& points, bool is_periodic, bool abort_on_fail = true);
48  bool initialize_rectilinear(xmlNodePtr cur, std::string& coord, std::map<std::string, Point>& points);
49  bool initialize_voronoi(std::map<std::string, Point>& points);
50  void write_description(std::ostream& os, std::string& indent);
52  void registerCollectables(std::vector<ObservableHelper>& h5desc, hdf_archive& file, int grid_index) const;
53  void evaluate(const ParticlePos& R,
54  const Matrix<RealType>& values,
55  BufferType& buf,
56  std::vector<bool>& particles_outside,
57  const DistanceTableAB& dtab);
58 
59  bool check_grid(void);
60  inline int nDomains(void) { return ndomains; }
61 
62  void sum(const BufferType& buf, RealType* vals);
63 
66 
67  //private:
68 
69  //same for all spacegrids
70  enum
71  {
72  cartesian = 0,
77  } coordinate;
79  int ndomains;
83 
84  //in use if sorting by particle count
85  bool chempot;
86  int npmin, npmax;
87  int npvalues;
89  enum
90  {
94  } reference;
95  std::vector<int> reference_count;
96 
97  //really only used for cartesian-like grids
103  std::string axlabel[DIM];
104  std::vector<int> gmap[DIM];
109  int dm[DIM];
110  bool periodic;
111 
112  //voronoi grids
114  std::vector<RealType>* Zptcl;
115  struct irpair
116  {
118  int i;
119  };
120  std::vector<irpair> nearcell;
122 
123  //used only in evaluate
125 };
126 
127 
128 } // namespace qmcplusplus
129 
130 #endif
RealType odu[DIM]
Definition: SpaceGrid.h:105
Tensor< RealType, DIM > axinv
Definition: SpaceGrid.h:100
enum qmcplusplus::SpaceGrid::@61 coordinate
helper functions for EinsplineSetBuilder
Definition: Configuration.h:43
std::vector< int > reference_count
Definition: SpaceGrid.h:95
QTBase::RealType RealType
Definition: Configuration.h:58
class to handle hdf file
Definition: hdf_archive.h:51
ParticlePos * Rptcl
Definition: SpaceGrid.h:113
Attaches a unit to a Vector for IO.
Matrix< RealType > cellsamples
Definition: SpaceGrid.h:88
void write_description(std::ostream &os, std::string &indent)
Definition: SpaceGrid.cpp:642
void sum(const BufferType &buf, RealType *vals)
Definition: SpaceGrid.cpp:1071
void evaluate(const ParticlePos &R, const Matrix< RealType > &values, BufferType &buf, std::vector< bool > &particles_outside, const DistanceTableAB &dtab)
Definition: SpaceGrid.cpp:821
Declaration of ObservableHelper and other helper class for observables.
AB type of DistanceTable containing storage.
Matrix< RealType > domain_volumes
Definition: SpaceGrid.h:81
int allocate_buffer_space(BufferType &buf)
Definition: SpaceGrid.cpp:683
std::string axlabel[DIM]
Definition: SpaceGrid.h:103
std::vector< int > gmap[DIM]
Definition: SpaceGrid.h:104
void registerCollectables(std::vector< ObservableHelper > &h5desc, hdf_archive &file, int grid_index) const
Definition: SpaceGrid.cpp:704
std::vector< RealType > * Zptcl
Definition: SpaceGrid.h:114
Particle traits to use UniformGridLayout for the ParticleLayout.
Definition: Configuration.h:77
std::vector< irpair > nearcell
Definition: SpaceGrid.h:120
RealType umin[DIM]
Definition: SpaceGrid.h:106
const char coord[]
Definition: HDFVersion.h:48
ParticleAttrib< SingleParticlePos > ParticlePos
Definition: Configuration.h:92
enum qmcplusplus::SpaceGrid::@62 reference
PooledData< RealType > BufferType
Definition: SpaceGrid.h:30
traits for QMC variables
Definition: Configuration.h:49
Matrix< RealType > domain_centers
Definition: SpaceGrid.h:82
RealType umax[DIM]
Definition: SpaceGrid.h:107
SpaceGrid(int &nvalues)
Definition: SpaceGrid.cpp:32
Define a serialized buffer to store anonymous data.
bool initialize_voronoi(std::map< std::string, Point > &points)
Definition: SpaceGrid.cpp:122
bool initialize_rectilinear(xmlNodePtr cur, std::string &coord, std::map< std::string, Point > &points)
Definition: SpaceGrid.cpp:170
Matrix< RealType > domain_uwidths
Definition: SpaceGrid.h:102
Tensor< RealType, DIM > axes
Definition: SpaceGrid.h:99
bool put(xmlNodePtr cur, std::map< std::string, Point > &points, ParticlePos &R, std::vector< RealType > &Z, int ndp, bool is_periodic, bool abort_on_fail=true)
Definition: SpaceGrid.h:34