Psi4
cubature.h
Go to the documentation of this file.
1 /*
2  * @BEGIN LICENSE
3  *
4  * Psi4: an open-source quantum chemistry software package
5  *
6  * Copyright (c) 2007-2017 The Psi4 Developers.
7  *
8  * The copyrights for code used from other parties are included in
9  * the corresponding files.
10  *
11  * This program is free software; you can redistribute it and/or modify
12  * it under the terms of the GNU General Public License as published by
13  * the Free Software Foundation; either version 2 of the License, or
14  * (at your option) any later version.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License along
22  * with this program; if not, write to the Free Software Foundation, Inc.,
23  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
24  *
25  * @END LICENSE
26  */
27 
28 #ifndef libmints_cubature_H
29 #define libmints_cubature_H
30 
31 #include "psi4/psi4-dec.h"
32 
33 #include "psi4/libmints/vector3.h"
34 
35 namespace psi {
36 
37 class PSIO;
38 class BasisSet;
39 class Matrix;
40 class Vector;
41 class IntVector;
42 class Vector3;
43 class BasisExtents;
44 class BlockOPoints;
45 class RadialGrid;
46 class SphericalGrid;
47 
48 // This is an auxiliary structure used internally by the grid-builder class.
49 // Apparently, for performance reasons, it is not good for the final molecular grid
50 // to consist of structures like this one.
51 //
52 // RMP: You got that right. Calling nuclear weights one point at a time is another
53 // great way to get a 1000x slowdown. What an incredible smell you've discovered!
54 //
55 struct MassPoint {
56  double x,y,z,w;
57 };
58 
59 
61 protected:
62  int debug_;
63 
65  std::shared_ptr<Molecule> molecule_;
66 
67  // ==> Fast Grid Specification <== //
68 
70  int npoints_;
76  double* x_;
78  double* y_;
80  double* z_;
82  double* w_;
83 
84  // ==> Clean Grid Specification <== //
85 
87  std::shared_ptr<Matrix> orientation_;
89  std::vector<std::shared_ptr<RadialGrid> > radial_grids_;
91  std::vector<std::vector<std::shared_ptr<SphericalGrid> > > spherical_grids_;
93  int* index_;
94 
96  std::vector<std::shared_ptr<BlockOPoints> > blocks_;
97 
99  std::shared_ptr<BasisExtents> extents_;
101  std::shared_ptr<BasisSet> primary_;
102 
104  void postProcess(std::shared_ptr<BasisExtents> extents, int max_points, int min_points, double max_radius);
105  void remove_distant_points(double Rcut);
106  void block(int max_points, int min_points, double max_radius);
107 
108 public:
112  short radscheme; // Effectively an enumeration
113  short prunescheme;
114  short nucscheme;
115  short namedGrid; // -1 = None, 0 = SG-0, 1 = SG-1
116  int nradpts;
117  int nangpts;
118  };
119 protected:
122 public:
123  MolecularGrid(std::shared_ptr<Molecule> molecule);
124  virtual ~MolecularGrid();
125 
130  const std::vector<std::vector<double> >& rs, // Radial nodes, per atom
131  const std::vector<std::vector<double> >& ws, // Radial weights, per atom
132  const std::vector<std::vector<int> >& Ls); // Spherical orders, per atom
133 
135  void print(std::string OutFileRMR = "outfile", int print = 2) const;
136  void print_details(std::string OutFileRMR = "outfile", int print = 2) const;
137 
139  std::shared_ptr<Matrix> orientation() const { return orientation_; }
141  const std::vector<std::shared_ptr<RadialGrid> >& radial_grids() const { return radial_grids_; }
143  const std::vector<std::vector<std::shared_ptr<SphericalGrid> > >& spherical_grids() const { return spherical_grids_; }
145  int* index() const { return index_; }
146 
148  int npoints() const { return npoints_; }
150  int max_points() const { return max_points_; }
152  int max_functions() const { return max_functions_; }
153 
155  double* x() const { return x_; }
157  double* y() const { return y_; }
159  double* z() const { return z_; }
161  double* w() const { return w_; }
162 
164  std::shared_ptr<BasisExtents> extents() const { return extents_; }
166  const std::vector<std::shared_ptr<BlockOPoints> >& blocks() const { return blocks_; }
167 
168  void set_debug(int debug) { debug_ = debug; }
169 };
170 
172 
173 protected:
175  std::shared_ptr<BasisSet> primary_;
177  std::string filename_;
178 
181 
183  void buildGridFromOptions();
184  void buildGridFromFile();
185 
186 public:
187 
189  PseudospectralGrid(std::shared_ptr<Molecule> molecule,
190  std::shared_ptr<BasisSet> primary,
191  Options& options);
193  PseudospectralGrid(std::shared_ptr<Molecule> molecule,
194  std::shared_ptr<BasisSet> primary,
195  const std::string& filename,
196  Options& options);
197  virtual ~PseudospectralGrid();
198 
199 };
200 
201 class DFTGrid : public MolecularGrid {
202 
203 protected:
205  std::shared_ptr<BasisSet> primary_;
207  void buildGridFromOptions();
210 
211 public:
212  DFTGrid(std::shared_ptr<Molecule> molecule,
213  std::shared_ptr<BasisSet> primary,
214  Options& options);
215  virtual ~DFTGrid();
216 };
217 
218 class RadialGrid {
219 
220 protected:
221 
223  std::string scheme_;
225  int npoints_;
227  double alpha_;
229  double* r_;
231  double* w_;
232 
233  // ==> Standard Radial Grids <== //
234 
236  static std::shared_ptr<RadialGrid> build_becke(int npoints, double alpha);
238  static std::shared_ptr<RadialGrid> build_treutler(int npoints, double alpha);
239  // TODO: Add more grids
240 
242  RadialGrid();
243 public:
244  // ==> Initializers <== //
245 
247  virtual ~RadialGrid();
248 
250  static std::shared_ptr<RadialGrid> build(const std::string& scheme, int npoints, double alpha);
252  static std::shared_ptr<RadialGrid> build(const std::string& scheme, int npoints, double* r, double* wr, double alpha);
253 
254  // ==> Accessors <== //
255 
257  std::string scheme() const { return scheme_; }
259  int npoints() const { return npoints_; }
261  double alpha() const { return alpha_; }
263  double* r() const { return r_; }
265  double* w() const { return w_; }
266 
268  void print(std::string OutFileRMR = "outfile", int level = 1) const;
269 };
270 
272 
273 protected:
274 
276  std::string scheme_;
278  int npoints_;
280  int order_;
282  double* x_;
284  double* y_;
286  double* z_;
288  double* w_;
289 
291  double* phi_;
293  double* theta_;
294 
295  // ==> Unique Lebedev Grids (statically stored) <== //
296 
298  static std::map<int, std::shared_ptr<SphericalGrid> > lebedev_npoints_;
300  static std::map<int, std::shared_ptr<SphericalGrid> > lebedev_orders_;
302  static std::map<int, int> lebedev_mapping_;
304  static void initialize_lebedev();
306  static std::shared_ptr<SphericalGrid> build_lebedev(int npoints);
308  static int lebedev_reccurence(int type, int start, double a, double b, double v, SphericalGrid* leb);
310  static void lebedev_error();
311 
312  // ==> Utility Routines <== //
313 
315  void build_angles();
316 
318  SphericalGrid();
319 public:
320  // ==> Initializers <== //
321 
323  virtual ~SphericalGrid();
324 
326  static std::shared_ptr<SphericalGrid> build_npoints(const std::string& scheme, int npoints);
327  static std::shared_ptr<SphericalGrid> build_order(const std::string& scheme, int order);
329  static std::shared_ptr<SphericalGrid> build(const std::string& scheme, int npoints, const MassPoint* points);
330 
331  // ==> Accessors <== //
332 
334  std::string scheme() const { return scheme_; }
336  int npoints() const { return npoints_; }
338  int order() const { return order_; }
340  double* x() const { return x_; }
342  double* y() const { return y_; }
344  double* z() const { return z_; }
346  double* w() const { return w_; }
347 
349  double* phi() const { return phi_; }
351  double* theta() const { return theta_; }
352 
354  void print(std::string OutFileRMR = "outfile", int level = 1) const;
355 
356  // ==> Unique Lebedev Grids (statically stored) <== //
357 
359  static std::map<int, std::shared_ptr<SphericalGrid> >& lebedev_npoints();
361  static std::map<int, std::shared_ptr<SphericalGrid> >& lebedev_orders();
363  static int lebedev_next_npoints(int npoints_guess);
365  static int lebedev_next_order(int order_guess);
366 };
367 
369 
370 protected:
372  int npoints_;
374  double* x_;
376  double* y_;
378  double* z_;
380  double* w_;
382  std::vector<int> shells_local_to_global_;
384  std::vector<int> functions_local_to_global_;
386  std::shared_ptr<BasisExtents> extents_;
387 
391  double R_;
392 
394  void populate();
396  void bound();
397 
398 public:
399  BlockOPoints(int npoints, double* x, double* y, double* z, double* w,
400  std::shared_ptr<BasisExtents> extents);
401  virtual ~BlockOPoints();
402 
404  void refresh() { populate(); }
405 
407  int npoints() const { return npoints_; }
409  void print(std::string OutFileRMR = "outfile", int print = 2);
410 
412  double* x() const { return x_; }
414  double* y() const { return y_; }
416  double* z() const { return z_; }
418  double* w() const { return w_; }
419 
421  const std::vector<int>& shells_local_to_global() const { return shells_local_to_global_; }
423  const std::vector<int>& functions_local_to_global() const { return functions_local_to_global_; }
424 };
425 
427 
428 protected:
430  std::shared_ptr<BasisSet> primary_;
432  double delta_;
434  std::shared_ptr<Vector> shell_extents_;
436  double maxR_;
437 
439  void computeExtents();
440 public:
441  BasisExtents(std::shared_ptr<BasisSet> primary, double delta);
442  virtual ~BasisExtents();
443 
445  void print(std::string OutFileRMR = "outfile");
447  void set_delta(double delta) { delta_ = delta; computeExtents(); }
448 
450  double delta() const { return delta_; }
452  std::shared_ptr<BasisSet> basis() const { return primary_; }
454  std::shared_ptr<Vector> shell_extents() const { return shell_extents_; }
456  double maxR() const { return maxR_; }
457 };
458 
459 }
460 #endif
Options & options_
The Options object.
Definition: cubature.h:180
virtual ~BlockOPoints()
Definition: cubature.cc:3838
Definition: cubature.h:55
void populate()
Populate significant functions given information in extents.
Definition: cubature.cc:3868
double * w_
Full weights.
Definition: cubature.h:82
double * r() const
Radial nodes (including alpha scale). You do not own this.
Definition: cubature.h:263
Definition: cubature.h:368
void block(int max_points, int min_points, double max_radius)
Definition: cubature.cc:4226
virtual ~BasisExtents()
Definition: cubature.cc:3697
std::shared_ptr< Matrix > orientation() const
Orientation matrix.
Definition: cubature.h:139
double * theta() const
Spherical nodes, in spherical coordinates (inclination)
Definition: cubature.h:351
int nradpts
Definition: cubature.h:116
double * theta_
Spherical nodes, in spherical coordinates (inclination)
Definition: cubature.h:293
const std::vector< std::vector< std::shared_ptr< SphericalGrid > > > & spherical_grids() const
Spherical grids, per atom and radial point.
Definition: cubature.h:143
double alpha_
Alpha scale (for user reference)
Definition: cubature.h:227
void buildGridFromOptions()
Master builder methods.
Definition: cubature.cc:3956
double * x() const
The x points. You do not own this.
Definition: cubature.h:412
std::string scheme_
Scheme.
Definition: cubature.h:223
DFTGrid(std::shared_ptr< Molecule > molecule, std::shared_ptr< BasisSet > primary, Options &options)
Definition: cubature.cc:3945
int npoints() const
Number of grid points.
Definition: cubature.h:407
double delta_
Cutoff value for basis values.
Definition: cubature.h:432
std::vector< int > shells_local_to_global_
Relevant shells, local -&gt; global.
Definition: cubature.h:382
std::string scheme() const
Scheme of this radial grid.
Definition: cubature.h:334
static void lebedev_error()
Print valid Lebedev grids and error out (throws)
Definition: cubature.cc:10282
double * z() const
Spherical nodes, on the unit sphere.
Definition: cubature.h:344
void computeExtents()
Recompute and shell_extents_.
Definition: cubature.cc:3700
std::string scheme() const
Scheme of this radial grid.
Definition: cubature.h:257
int nangpts
Definition: cubature.h:117
double z
Definition: cubature.h:56
void buildGridFromOptions()
Master builder methods.
Definition: cubature.cc:4182
double * phi_
Spherical nodes, in spherical coordinates (azimuth)
Definition: cubature.h:291
virtual ~SphericalGrid()
Destructor.
Definition: cubature.cc:4762
MolecularGridOptions options_
A copy of the options used, for printing purposes.
Definition: cubature.h:121
BlockOPoints(int npoints, double *x, double *y, double *z, double *w, std::shared_ptr< BasisExtents > extents)
Definition: cubature.cc:3832
double * z() const
The z points. You do not own this.
Definition: cubature.h:416
BasisExtents(std::shared_ptr< BasisSet > primary, double delta)
Definition: cubature.cc:3691
virtual ~DFTGrid()
Definition: cubature.cc:3952
static std::shared_ptr< RadialGrid > build_becke(int npoints, double alpha)
Build the Becke 1988 radial grid.
Definition: cubature.cc:4703
Options & options_
The Options object.
Definition: cubature.h:209
void rs(int nm, int n, double **array, double *e_vals, int matz, double **e_vecs, double toler)
double y
Definition: cubature.h:56
double * z() const
The z points. You do not own this.
Definition: cubature.h:159
void remove_distant_points(double Rcut)
Definition: cubature.cc:4267
Definition: vector3.h:36
double * y_
Full y points.
Definition: cubature.h:78
double * phi() const
Spherical nodes, in spherical coordinates (azimuth)
Definition: cubature.h:349
static std::map< int, std::shared_ptr< SphericalGrid > > lebedev_orders_
Unique Lebedev grids, accessed by order (integrating to 2 * order + 1)
Definition: cubature.h:300
Definition: cubature.h:218
short prunescheme
Definition: cubature.h:113
int * index_
index_[fast_index] = slow_index
Definition: cubature.h:93
static std::shared_ptr< RadialGrid > build_treutler(int npoints, double alpha)
Build the Treutler-Ahlrichs 1995 radial grid (scale power = 0.6)
Definition: cubature.cc:4724
double * w() const
The weights, normalized to 1 on R3. You do not own this.
Definition: cubature.h:161
std::vector< std::shared_ptr< BlockOPoints > > blocks_
Vector of blocks.
Definition: cubature.h:96
Definition: cubature.h:60
int max_functions() const
Maximum number of funtions in a block.
Definition: cubature.h:152
void print(std::string OutFileRMR="outfile", int level=1) const
Reflection.
Definition: cubature.cc:4773
static std::shared_ptr< SphericalGrid > build(const std::string &scheme, int npoints, const MassPoint *points)
Hack build routine (TODO: Remove ASAP)
Definition: cubature.cc:4829
void buildGridFromOptions(MolecularGridOptions const &opt)
Build the grid.
Definition: cubature.cc:3533
std::string filename_
The filename used to optionally build the grid.
Definition: cubature.h:177
SphericalGrid()
Protected constructor.
Definition: cubature.cc:4758
int order_
Order of spherical harmonics in spherical grid (integrates products up to L_tot = 2 * order_ + 1) ...
Definition: cubature.h:280
Definition: cubature.h:426
int order() const
Order of spherical harmonics in spherical grid (integrates products up to L_tot = 2 * order_ + 1) ...
Definition: cubature.h:338
RadialGrid()
Protected constructor.
Definition: cubature.cc:4650
const std::vector< int > & functions_local_to_global() const
Relevant functions, local -&gt; global.
Definition: cubature.h:423
int npoints() const
Number of points in radial grid.
Definition: cubature.h:336
const std::vector< std::shared_ptr< BlockOPoints > > & blocks() const
Set of spatially sieved blocks of points, generated by sieve() internally.
Definition: cubature.h:166
MolecularGrid(std::shared_ptr< Molecule > molecule)
Definition: cubature.cc:4211
Definition: cubature.h:171
static std::shared_ptr< SphericalGrid > build_npoints(const std::string &scheme, int npoints)
Master build routines.
Definition: cubature.cc:4800
void refresh()
Refresh populations (if extents_-&gt;delta() changes)
Definition: cubature.h:404
double * w() const
Spherical weights, normalized to 4pi.
Definition: cubature.h:346
std::shared_ptr< BasisSet > primary_
BasisSet from extents_.
Definition: cubature.h:101
void postProcess(std::shared_ptr< BasisExtents > extents, int max_points, int min_points, double max_radius)
Sieve and block.
Definition: cubature.cc:4305
static std::shared_ptr< SphericalGrid > build_order(const std::string &scheme, int order)
Definition: cubature.cc:4815
const std::vector< int > & shells_local_to_global() const
Relevant shells, local -&gt; global.
Definition: cubature.h:421
double * w_
Spherical weights, normalized to 4pi.
Definition: cubature.h:288
static std::map< int, std::shared_ptr< SphericalGrid > > lebedev_npoints_
Unique Lebedev grids, accessed by number of points.
Definition: cubature.h:298
virtual ~PseudospectralGrid()
Definition: cubature.cc:4000
int max_points() const
Maximum number of grid points in a block.
Definition: cubature.h:150
std::shared_ptr< Molecule > molecule_
The molecule this grid is built on.
Definition: cubature.h:65
std::shared_ptr< Vector > shell_extents() const
WCS significant extent of each shell.
Definition: cubature.h:454
double x
Definition: cubature.h:56
double * x_
Pointer to x (does not own)
Definition: cubature.h:374
void set_delta(double delta)
Reset delta and recompute extents.
Definition: cubature.h:447
int max_functions_
Maximum number of functions in a block.
Definition: cubature.h:74
std::shared_ptr< BasisSet > primary_
The primary basis.
Definition: cubature.h:205
void print(std::string OutFileRMR="outfile", int level=1) const
Reflection.
Definition: cubature.cc:4661
int npoints_
Number of points in radial grid.
Definition: cubature.h:225
std::shared_ptr< BasisSet > primary_
Basis this corresponds to.
Definition: cubature.h:430
double * y() const
The y points. You do not own this.
Definition: cubature.h:414
double * x() const
The x points. You do not own this.
Definition: cubature.h:155
int npoints_
Total points for this molecule.
Definition: cubature.h:70
virtual ~MolecularGrid()
Definition: cubature.cc:4215
std::shared_ptr< BasisExtents > extents_
Reference to the extents object.
Definition: cubature.h:386
const std::vector< std::shared_ptr< RadialGrid > > & radial_grids() const
Radial grids, per atom.
Definition: cubature.h:141
std::shared_ptr< Molecule > molecule
Definition: dx_write.cc:57
double * y() const
Spherical nodes, on the unit sphere.
Definition: cubature.h:342
std::shared_ptr< BasisSet > basis() const
The basis set this BasisExtents is built on.
Definition: cubature.h:452
Definition: cubature.h:201
double * w_
Pointer to w (does not own)
Definition: cubature.h:380
double * z_
Pointer to z (does not own)
Definition: cubature.h:378
double * w_
Weights (including alpha and r^2)
Definition: cubature.h:231
std::string scheme_
Scheme.
Definition: cubature.h:276
std::vector< std::shared_ptr< RadialGrid > > radial_grids_
Radial grids, per atom.
Definition: cubature.h:89
Definition: liboptions.h:359
std::shared_ptr< BasisExtents > extents_
Points to basis extents, built internally.
Definition: cubature.h:99
double * y_
Spherical nodes, on the unit sphere.
Definition: cubature.h:284
std::shared_ptr< BasisSet > primary_
The primary basis.
Definition: cubature.h:175
static std::shared_ptr< RadialGrid > build(const std::string &scheme, int npoints, double alpha)
Master build routine.
Definition: cubature.cc:4678
void print(std::string OutFileRMR="outfile", int print=2)
Print a trace of this BlockOPoints.
Definition: cubature.cc:3909
double pruning_alpha
Definition: cubature.h:111
double * w() const
The weights. You do not own this.
Definition: cubature.h:418
double bs_radius_alpha
Definition: cubature.h:110
short nucscheme
Definition: cubature.h:114
double * z_
Spherical nodes, on the unit sphere.
Definition: cubature.h:286
void set_debug(int debug)
Definition: cubature.h:168
int npoints() const
Number of grid points.
Definition: cubature.h:148
short namedGrid
Definition: cubature.h:115
double maxR() const
Maximum spatial extent over all atoms.
Definition: cubature.h:456
double R_
Bounding radius of the BlockOPoints.
Definition: cubature.h:391
int max_points_
Maximum number of points in a block.
Definition: cubature.h:72
std::shared_ptr< Vector > shell_extents_
Significant extent of shells.
Definition: cubature.h:434
void buildGridFromFile()
Definition: cubature.cc:4003
static int lebedev_next_npoints(int npoints_guess)
Next largest valid Lebedev grid npoints, or -1 if guess is larger than biggest Lebedev grid...
Definition: cubature.cc:4861
static std::map< int, std::shared_ptr< SphericalGrid > > & lebedev_npoints()
Unique Lebedev grids, accessed by number of points.
Definition: cubature.cc:4851
static int lebedev_next_order(int order_guess)
Next largest valid Lebedev grid order, or -1 if guess is larger than biggest Lebedev grid...
Definition: cubature.cc:4877
void build_angles()
Build the spherical angles from &lt;x,y,z&gt;, for reference.
Definition: cubature.cc:4788
Definition: cubature.h:271
double * y() const
The y points. You do not own this.
Definition: cubature.h:157
double * z_
Full z points.
Definition: cubature.h:80
double * x_
Spherical nodes, on the unit sphere.
Definition: cubature.h:282
PseudospectralGrid(std::shared_ptr< Molecule > molecule, std::shared_ptr< BasisSet > primary, Options &options)
Constructor to use for autogeneration.
Definition: cubature.cc:3985
void print(std::string OutFileRMR="outfile", int print=2) const
Print information about the grid.
Definition: cubature.cc:4316
static int lebedev_reccurence(int type, int start, double a, double b, double v, SphericalGrid *leb)
Perform Lebedev grid reccurence.
Definition: cubature.cc:9634
void print(std::string OutFileRMR="outfile")
Print a trace of these extents.
Definition: cubature.cc:3816
static void initialize_lebedev()
Initialize the above arrays with the unique Lebedev grids.
Definition: cubature.cc:4893
double * w() const
Radial weights (including alpha scale and r^2). You do not own this.
Definition: cubature.h:265
int * index() const
index_[fast_index] = slow_index. You do not own this
Definition: cubature.h:145
short radscheme
Definition: cubature.h:112
std::shared_ptr< Matrix > orientation_
Orientation matrix.
Definition: cubature.h:87
double alpha() const
Alpha scale (for user reference)
Definition: cubature.h:261
void print_details(std::string OutFileRMR="outfile", int print=2) const
Definition: cubature.cc:4336
int debug_
Definition: cubature.h:62
double * y_
Pointer to y (does not own)
Definition: cubature.h:376
static std::shared_ptr< SphericalGrid > build_lebedev(int npoints)
Build a Lebedev grid given a valid number of points.
Definition: cubature.cc:4965
static std::map< int, std::shared_ptr< SphericalGrid > > & lebedev_orders()
Unique Lebedev grids, accessed by order (integrating to 2 * order + 1)
Definition: cubature.cc:4856
double * x() const
Spherical nodes, on the unit sphere.
Definition: cubature.h:340
int npoints_
Number of points in radial grid.
Definition: cubature.h:278
static std::map< int, int > lebedev_mapping_
Grid npoints to order map.
Definition: cubature.h:302
int npoints() const
Number of points in radial grid.
Definition: cubature.h:259
void bound()
Compute bounding sphere.
Definition: cubature.cc:3841
double * r_
Nodes (including alpha)
Definition: cubature.h:229
int npoints_
number of points in this block
Definition: cubature.h:372
virtual ~RadialGrid()
Destructor.
Definition: cubature.cc:4654
double delta() const
The cutoff value.
Definition: cubature.h:450
std::vector< int > functions_local_to_global_
Relevant functions, local -&gt; global.
Definition: cubature.h:384
std::shared_ptr< BasisExtents > extents() const
Pointer to basis extents.
Definition: cubature.h:164
Vector3 xc_
Center of this BlockOPoints.
Definition: cubature.h:389
double w
Definition: cubature.h:56
double maxR_
Maximum extent.
Definition: cubature.h:436
std::vector< std::vector< std::shared_ptr< SphericalGrid > > > spherical_grids_
Spherical grids, per atom and radial point.
Definition: cubature.h:91
double * x_
Full x points.
Definition: cubature.h:76