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 file is part of Psi4.
12  *
13  * Psi4 is free software; you can redistribute it and/or modify
14  * it under the terms of the GNU Lesser General Public License as published by
15  * the Free Software Foundation, version 3.
16  *
17  * Psi4 is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20  * GNU Lesser General Public License for more details.
21  *
22  * You should have received a copy of the GNU Lesser General Public License along
23  * with Psi4; if not, write to the Free Software Foundation, Inc.,
24  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
25  *
26  * @END LICENSE
27  */
28 
29 #ifndef libmints_cubature_H
30 #define libmints_cubature_H
31 
32 #include "psi4/psi4-dec.h"
33 
34 #include "psi4/libmints/vector3.h"
35 
36 namespace psi {
37 
38 class BasisSet;
39 class Matrix;
40 class Vector;
41 class BasisExtents;
42 class BlockOPoints;
43 class RadialGrid;
44 class SphericalGrid;
45 
46 // This is an auxiliary structure used internally by the grid-builder class.
47 // Apparently, for performance reasons, it is not good for the final molecular grid
48 // to consist of structures like this one.
49 //
50 // RMP: You got that right. Calling nuclear weights one point at a time is another
51 // great way to get a 1000x slowdown. What an incredible smell you've discovered!
52 //
53 struct MassPoint {
54  double x,y,z,w;
55 };
56 
57 
59 protected:
60  int debug_;
61 
63  std::shared_ptr<Molecule> molecule_;
64 
65  // ==> Fast Grid Specification <== //
66 
68  int npoints_;
74  double* x_;
76  double* y_;
78  double* z_;
80  double* w_;
81 
82  // ==> Clean Grid Specification <== //
83 
85  std::shared_ptr<Matrix> orientation_;
87  std::vector<std::shared_ptr<RadialGrid> > radial_grids_;
89  std::vector<std::vector<std::shared_ptr<SphericalGrid> > > spherical_grids_;
91  int* index_;
92 
94  std::vector<std::shared_ptr<BlockOPoints> > blocks_;
95 
97  std::shared_ptr<BasisExtents> extents_;
99  std::shared_ptr<BasisSet> primary_;
100 
102  void postProcess(std::shared_ptr<BasisExtents> extents, int max_points, int min_points, double max_radius);
103  void remove_distant_points(double Rcut);
104  void block(int max_points, int min_points, double max_radius);
105 
106 public:
110  short radscheme; // Effectively an enumeration
111  short prunescheme;
112  short nucscheme;
113  short namedGrid; // -1 = None, 0 = SG-0, 1 = SG-1
114  int nradpts;
115  int nangpts;
116  };
117 protected:
120 public:
121  MolecularGrid(std::shared_ptr<Molecule> molecule);
122  virtual ~MolecularGrid();
123 
128  const std::vector<std::vector<double> >& rs, // Radial nodes, per atom
129  const std::vector<std::vector<double> >& ws, // Radial weights, per atom
130  const std::vector<std::vector<int> >& Ls); // Spherical orders, per atom
131 
133  void print(std::string OutFileRMR = "outfile", int print = 2) const;
134  void print_details(std::string OutFileRMR = "outfile", int print = 2) const;
135 
137  std::shared_ptr<Matrix> orientation() const { return orientation_; }
139  const std::vector<std::shared_ptr<RadialGrid> >& radial_grids() const { return radial_grids_; }
141  const std::vector<std::vector<std::shared_ptr<SphericalGrid> > >& spherical_grids() const { return spherical_grids_; }
143  int* index() const { return index_; }
144 
146  int npoints() const { return npoints_; }
148  int max_points() const { return max_points_; }
150  int max_functions() const { return max_functions_; }
151 
153  double* x() const { return x_; }
155  double* y() const { return y_; }
157  double* z() const { return z_; }
159  double* w() const { return w_; }
160 
162  std::shared_ptr<BasisExtents> extents() const { return extents_; }
164  const std::vector<std::shared_ptr<BlockOPoints> >& blocks() const { return blocks_; }
165 
166  void set_debug(int debug) { debug_ = debug; }
167 };
168 
170 
171 protected:
173  std::shared_ptr<BasisSet> primary_;
175  std::string filename_;
176 
179 
181  void buildGridFromOptions();
182  void buildGridFromFile();
183 
184 public:
185 
187  PseudospectralGrid(std::shared_ptr<Molecule> molecule,
188  std::shared_ptr<BasisSet> primary,
189  Options& options);
191  PseudospectralGrid(std::shared_ptr<Molecule> molecule,
192  std::shared_ptr<BasisSet> primary,
193  const std::string& filename,
194  Options& options);
195  virtual ~PseudospectralGrid();
196 
197 };
198 
199 class DFTGrid : public MolecularGrid {
200 
201 protected:
203  std::shared_ptr<BasisSet> primary_;
205  void buildGridFromOptions(std::map<std::string, int> int_opts_map,
206  std::map<std::string, std::string> opts_map);
209 
210 public:
211  DFTGrid(std::shared_ptr<Molecule> molecule, std::shared_ptr<BasisSet> primary, Options& options);
212  DFTGrid(std::shared_ptr<Molecule> molecule, std::shared_ptr<BasisSet> primary,
213  std::map<std::string, int> int_opts_map, std::map<std::string, std::string> opts_map,
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_;
373 
379 
381  double* x_;
383  double* y_;
385  double* z_;
387  double* w_;
389  std::vector<int> shells_local_to_global_;
391  std::vector<int> functions_local_to_global_;
393  std::shared_ptr<BasisExtents> extents_;
394 
398  double R_;
399 
401  void populate();
403  void bound();
404 
405 public:
407  std::shared_ptr<BasisExtents> extents);
408  BlockOPoints(int npoints, double* x, double* y, double* z, double* w,
409  std::shared_ptr<BasisExtents> extents);
410  virtual ~BlockOPoints();
411 
413  void refresh() { populate(); }
414 
416  int npoints() const { return npoints_; }
418  void print(std::string OutFileRMR = "outfile", int print = 2);
419 
421  double* x() const { return x_; }
423  double* y() const { return y_; }
425  double* z() const { return z_; }
427  double* w() const { return w_; }
428 
430  const std::vector<int>& shells_local_to_global() const { return shells_local_to_global_; }
432  const std::vector<int>& functions_local_to_global() const { return functions_local_to_global_; }
433 };
434 
436 
437 protected:
439  std::shared_ptr<BasisSet> primary_;
441  double delta_;
443  std::shared_ptr<Vector> shell_extents_;
445  double maxR_;
446 
448  void computeExtents();
449 public:
450  BasisExtents(std::shared_ptr<BasisSet> primary, double delta);
451  virtual ~BasisExtents();
452 
454  void print(std::string OutFileRMR = "outfile");
456  void set_delta(double delta) { delta_ = delta; computeExtents(); }
457 
459  double delta() const { return delta_; }
461  std::shared_ptr<BasisSet> basis() const { return primary_; }
463  std::shared_ptr<Vector> shell_extents() const { return shell_extents_; }
465  double maxR() const { return maxR_; }
466 };
467 
468 }
469 #endif
Options & options_
The Options object.
Definition: cubature.h:178
virtual ~BlockOPoints()
Definition: cubature.cc:3858
Definition: cubature.h:53
void populate()
Populate significant functions given information in extents.
Definition: cubature.cc:3886
double * w_
Full weights.
Definition: cubature.h:80
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:4279
virtual ~BasisExtents()
Definition: cubature.cc:3702
std::shared_ptr< Matrix > orientation() const
Orientation matrix.
Definition: cubature.h:137
double * theta() const
Spherical nodes, in spherical coordinates (inclination)
Definition: cubature.h:351
int nradpts
Definition: cubature.h:114
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:141
double alpha_
Alpha scale (for user reference)
Definition: cubature.h:227
double * x() const
The x points. You do not own this.
Definition: cubature.h:421
std::string scheme_
Scheme.
Definition: cubature.h:223
DFTGrid(std::shared_ptr< Molecule > molecule, std::shared_ptr< BasisSet > primary, Options &options)
Definition: cubature.cc:3963
int npoints() const
Number of grid points.
Definition: cubature.h:416
double delta_
Cutoff value for basis values.
Definition: cubature.h:441
std::vector< int > shells_local_to_global_
Relevant shells, local -&gt; global.
Definition: cubature.h:389
SharedVector zvec_
Definition: cubature.h:377
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:10335
double * z() const
Spherical nodes, on the unit sphere.
Definition: cubature.h:344
void computeExtents()
Recompute and shell_extents_.
Definition: cubature.cc:3705
std::string scheme() const
Scheme of this radial grid.
Definition: cubature.h:257
int nangpts
Definition: cubature.h:115
double z
Definition: cubature.h:54
void buildGridFromOptions()
Master builder methods.
Definition: cubature.cc:4235
double * phi_
Spherical nodes, in spherical coordinates (azimuth)
Definition: cubature.h:291
virtual ~SphericalGrid()
Destructor.
Definition: cubature.cc:4815
MolecularGridOptions options_
A copy of the options used, for printing purposes.
Definition: cubature.h:119
double * z() const
The z points. You do not own this.
Definition: cubature.h:425
BasisExtents(std::shared_ptr< BasisSet > primary, double delta)
Definition: cubature.cc:3696
virtual ~DFTGrid()
Definition: cubature.cc:3981
static std::shared_ptr< RadialGrid > build_becke(int npoints, double alpha)
Build the Becke 1988 radial grid.
Definition: cubature.cc:4756
Options & options_
The Options object.
Definition: cubature.h:208
void rs(int nm, int n, double **array, double *e_vals, int matz, double **e_vecs, double toler)
double y
Definition: cubature.h:54
double * z() const
The z points. You do not own this.
Definition: cubature.h:157
void remove_distant_points(double Rcut)
Definition: cubature.cc:4320
Definition: vector3.h:37
double * y_
Full y points.
Definition: cubature.h:76
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
SharedVector yvec_
Definition: cubature.h:376
short prunescheme
Definition: cubature.h:111
int * index_
index_[fast_index] = slow_index
Definition: cubature.h:91
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:4777
double * w() const
The weights, normalized to 1 on R3. You do not own this.
Definition: cubature.h:159
std::vector< std::shared_ptr< BlockOPoints > > blocks_
Vector of blocks.
Definition: cubature.h:94
Definition: cubature.h:58
int max_functions() const
Maximum number of funtions in a block.
Definition: cubature.h:150
void print(std::string OutFileRMR="outfile", int level=1) const
Reflection.
Definition: cubature.cc:4826
static std::shared_ptr< SphericalGrid > build(const std::string &scheme, int npoints, const MassPoint *points)
Hack build routine (TODO: Remove ASAP)
Definition: cubature.cc:4882
void buildGridFromOptions(MolecularGridOptions const &opt)
Build the grid.
Definition: cubature.cc:3538
std::string filename_
The filename used to optionally build the grid.
Definition: cubature.h:175
SphericalGrid()
Protected constructor.
Definition: cubature.cc:4811
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:435
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:4703
const std::vector< int > & functions_local_to_global() const
Relevant functions, local -&gt; global.
Definition: cubature.h:432
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:164
MolecularGrid(std::shared_ptr< Molecule > molecule)
Definition: cubature.cc:4264
Definition: cubature.h:169
static std::shared_ptr< SphericalGrid > build_npoints(const std::string &scheme, int npoints)
Master build routines.
Definition: cubature.cc:4853
void refresh()
Refresh populations (if extents_-&gt;delta() changes)
Definition: cubature.h:413
double * w() const
Spherical weights, normalized to 4pi.
Definition: cubature.h:346
std::shared_ptr< BasisSet > primary_
BasisSet from extents_.
Definition: cubature.h:99
void postProcess(std::shared_ptr< BasisExtents > extents, int max_points, int min_points, double max_radius)
Sieve and block.
Definition: cubature.cc:4358
static std::shared_ptr< SphericalGrid > build_order(const std::string &scheme, int order)
Definition: cubature.cc:4868
const std::vector< int > & shells_local_to_global() const
Relevant shells, local -&gt; global.
Definition: cubature.h:430
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:4053
int max_points() const
Maximum number of grid points in a block.
Definition: cubature.h:148
std::shared_ptr< Molecule > molecule_
The molecule this grid is built on.
Definition: cubature.h:63
std::shared_ptr< Vector > shell_extents() const
WCS significant extent of each shell.
Definition: cubature.h:463
double x
Definition: cubature.h:54
double * x_
Pointer to x (does not own)
Definition: cubature.h:381
void set_delta(double delta)
Reset delta and recompute extents.
Definition: cubature.h:456
int max_functions_
Maximum number of functions in a block.
Definition: cubature.h:72
std::shared_ptr< BasisSet > primary_
The primary basis.
Definition: cubature.h:203
void print(std::string OutFileRMR="outfile", int level=1) const
Reflection.
Definition: cubature.cc:4714
int npoints_
Number of points in radial grid.
Definition: cubature.h:225
std::shared_ptr< BasisSet > primary_
Basis this corresponds to.
Definition: cubature.h:439
double * y() const
The y points. You do not own this.
Definition: cubature.h:423
double * x() const
The x points. You do not own this.
Definition: cubature.h:153
int npoints_
Total points for this molecule.
Definition: cubature.h:68
virtual ~MolecularGrid()
Definition: cubature.cc:4268
std::shared_ptr< BasisExtents > extents_
Reference to the extents object.
Definition: cubature.h:393
const std::vector< std::shared_ptr< RadialGrid > > & radial_grids() const
Radial grids, per atom.
Definition: cubature.h:139
std::shared_ptr< Molecule > molecule
Definition: dx_write.cc:58
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:461
Definition: cubature.h:199
double * w_
Pointer to w (does not own)
Definition: cubature.h:387
double * z_
Pointer to z (does not own)
Definition: cubature.h:385
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:87
Definition: liboptions.h:360
std::shared_ptr< BasisExtents > extents_
Points to basis extents, built internally.
Definition: cubature.h:97
double * y_
Spherical nodes, on the unit sphere.
Definition: cubature.h:284
std::shared_ptr< BasisSet > primary_
The primary basis.
Definition: cubature.h:173
static std::shared_ptr< RadialGrid > build(const std::string &scheme, int npoints, double alpha)
Master build routine.
Definition: cubature.cc:4731
void print(std::string OutFileRMR="outfile", int print=2)
Print a trace of this BlockOPoints.
Definition: cubature.cc:3927
double pruning_alpha
Definition: cubature.h:109
SharedVector xvec_
Data holders if requested.
Definition: cubature.h:375
double * w() const
The weights. You do not own this.
Definition: cubature.h:427
double bs_radius_alpha
Definition: cubature.h:108
short nucscheme
Definition: cubature.h:112
BlockOPoints(SharedVector x, SharedVector y, SharedVector z, SharedVector w, std::shared_ptr< BasisExtents > extents)
Definition: cubature.cc:3837
double * z_
Spherical nodes, on the unit sphere.
Definition: cubature.h:286
void set_debug(int debug)
Definition: cubature.h:166
int npoints() const
Number of grid points.
Definition: cubature.h:146
short namedGrid
Definition: cubature.h:113
double maxR() const
Maximum spatial extent over all atoms.
Definition: cubature.h:465
double R_
Bounding radius of the BlockOPoints.
Definition: cubature.h:398
int max_points_
Maximum number of points in a block.
Definition: cubature.h:70
std::shared_ptr< Vector > shell_extents_
Significant extent of shells.
Definition: cubature.h:443
void buildGridFromFile()
Definition: cubature.cc:4056
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:4914
static std::map< int, std::shared_ptr< SphericalGrid > > & lebedev_npoints()
Unique Lebedev grids, accessed by number of points.
Definition: cubature.cc:4904
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:4930
void build_angles()
Build the spherical angles from &lt;x,y,z&gt;, for reference.
Definition: cubature.cc:4841
Definition: cubature.h:271
double * y() const
The y points. You do not own this.
Definition: cubature.h:155
double * z_
Full z points.
Definition: cubature.h:78
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:4038
void print(std::string OutFileRMR="outfile", int print=2) const
Print information about the grid.
Definition: cubature.cc:4369
void buildGridFromOptions(std::map< std::string, int > int_opts_map, std::map< std::string, std::string > opts_map)
Master builder methods.
Definition: cubature.cc:3985
static int lebedev_reccurence(int type, int start, double a, double b, double v, SphericalGrid *leb)
Perform Lebedev grid reccurence.
Definition: cubature.cc:9687
void print(std::string OutFileRMR="outfile")
Print a trace of these extents.
Definition: cubature.cc:3821
static void initialize_lebedev()
Initialize the above arrays with the unique Lebedev grids.
Definition: cubature.cc:4946
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:143
short radscheme
Definition: cubature.h:110
SharedVector wvec_
Definition: cubature.h:378
std::shared_ptr< Matrix > orientation_
Orientation matrix.
Definition: cubature.h:85
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:4389
int debug_
Definition: cubature.h:60
double * y_
Pointer to y (does not own)
Definition: cubature.h:383
static std::shared_ptr< SphericalGrid > build_lebedev(int npoints)
Build a Lebedev grid given a valid number of points.
Definition: cubature.cc:5018
static std::map< int, std::shared_ptr< SphericalGrid > > & lebedev_orders()
Unique Lebedev grids, accessed by order (integrating to 2 * order + 1)
Definition: cubature.cc:4909
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:3859
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:4707
double delta() const
The cutoff value.
Definition: cubature.h:459
std::vector< int > functions_local_to_global_
Relevant functions, local -&gt; global.
Definition: cubature.h:391
std::shared_ptr< BasisExtents > extents() const
Pointer to basis extents.
Definition: cubature.h:162
std::shared_ptr< Vector > SharedVector
Definition: adc.h:51
Vector3 xc_
Center of this BlockOPoints.
Definition: cubature.h:396
double w
Definition: cubature.h:54
double maxR_
Maximum extent.
Definition: cubature.h:445
std::vector< std::vector< std::shared_ptr< SphericalGrid > > > spherical_grids_
Spherical grids, per atom and radial point.
Definition: cubature.h:89
double * x_
Full x points.
Definition: cubature.h:74