Psi4
integral.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 _psi_src_lib_libmints_integral_h_
30 #define _psi_src_lib_libmints_integral_h_
31 
32  #include "psi4/pragma.h"
33  PRAGMA_WARNING_PUSH
34  PRAGMA_WARNING_IGNORE_DEPRECATED_DECLARATIONS
35  #include <memory>
37 #include <vector>
38 
39 #include "onebody.h"
40 #include "twobody.h"
41 
45 #define INT_NCART(am) ((am>=0)?((((am)+2)*((am)+1))>>1):0)
46 
49 #define INT_NPURE(am) (2*(am)+1)
50 
53 #define INT_NFUNC(pu,am) ((pu)?INT_NPURE(am):INT_NCART(am))
54 
57 #define INT_CARTINDEX(am,i,j) (((i) == (am))? 0 : (((((am) - (i) + 1)*((am) - (i)))>>1) + (am) - (i) - (j)))
58 
61 #define INT_ICART(a, b, c) (((((((a)+(b)+(c)+1)<<1)-(a))*((a)+1))>>1)-(b)-1)
62 
65 #define INT_IPURE(l, m) ((l)+(m))
66 
67 namespace psi {
68 
69 class BasisSet;
70 class GaussianShell;
71 class OneBodyAOInt;
72 class OneBodySOInt;
73 class TwoBodyAOInt;
74 class ThreeCenterOverlapInt;
75 class CartesianIter;
76 class RedundantCartesianIter;
77 class RedundantCartesianSubIter;
78 class ShellRotation;
79 class SymmetryOperation;
80 class SOBasisSet;
81 class CorrelationFactor;
82 
85 {
86 protected:
87  int a_, b_, c_;
89 
90  double coef_;
91 
92 public:
94  int a() const { return a_; }
96  int b() const { return b_; }
98  int c() const { return c_; }
100  int cartindex() const { return cartindex_; }
102  int pureindex() const { return pureindex_; }
104  double coef() const { return coef_; }
105 
106  void init(int a, int b, int c, double coef, int cartindex, int pureindex);
107 };
108 
113 {
114 protected:
115  std::vector<SphericalTransformComponent> components_;
116  int l_; // The angular momentum this transform is for.
117  int subl_;
118 
120 
121  virtual void init();
122 public:
123  SphericalTransform(int l, int subl = -1);
124  virtual ~SphericalTransform() {}
125 
127  int cartindex(int i) const { return components_[i].cartindex(); }
129  int pureindex(int i) const { return components_[i].pureindex(); }
131  double coef(int i) const { return components_[i].coef(); }
133  int a(int i) const { return components_[i].a(); }
135  int b(int i) const { return components_[i].b(); }
137  int c(int i) const { return components_[i].c(); }
139  int n() const { return components_.size(); }
141  int l() const { return l_; }
142 };
143 
145 class ISphericalTransform : public SphericalTransform
147 {
148 protected:
150  virtual void init();
151 public:
152  ISphericalTransform(int l, int subl=-1);
153 };
154 
156 {
157 private:
159  int i_;
160 
161 public:
163 
164  void first() { i_ = 0; }
165  void next() { i_++; }
166  bool is_done() { return i_ < trans_.n() ? false : true; }
167 
169  int n() const { return trans_.n(); }
170 
172  int cartindex() const { return trans_.cartindex(i_); }
174  int pureindex() const { return trans_.pureindex(i_); }
176  double coef() const { return trans_.coef(i_); }
178  int a() const { return trans_.a(i_); }
180  int b() const { return trans_.b(i_); }
182  int c() const { return trans_.c(i_); }
184  int l(int i) { return i?(i==1?b():c()):a(); }
185 };
186 
189 {
190 private:
191  struct Integral {
192  int i;
193  int j;
194  int k;
195  int l;
196  unsigned int index;
197  };
198 
204 
205  bool done;
206 
207  int ii, iimax, jj, jjmax, kk, kkmax, ll, llmax;
208  int ni, nj, nk, nl, fii, fij, fik, fil;
209 
210 public:
211  AOIntegralsIterator(const GaussianShell& s1, const GaussianShell& s2,
212  const GaussianShell& s3, const GaussianShell& s4);
213 
214  void first();
215  void next();
216  bool is_done() { return done; }
217 
218  int i() const { return current.i; }
219  int j() const { return current.j; }
220  int k() const { return current.k; }
221  int l() const { return current.l; }
222  int index() const { return current.index;}
223 };
224 
225 
228 {
229 private:
230  struct ShellQuartet {
231  int P;
232  int Q;
233  int R;
234  int S;
235  bool end_of_PK;
236  };
237 
239  int usi_arr[3], usj_arr[3], usk_arr[3], usl_arr[3];
240  int usii, usjj, uskk, usll, upk;
241 
243 
244  bool done;
245 
246  std::shared_ptr<BasisSet> bs1_;
247  std::shared_ptr<BasisSet> bs2_;
248  std::shared_ptr<BasisSet> bs3_;
249  std::shared_ptr<BasisSet> bs4_;
250 
251 public:
252  AOShellCombinationsIterator(std::shared_ptr<BasisSet>bs1, std::shared_ptr<BasisSet>bs2,
253  std::shared_ptr<BasisSet>bs3, std::shared_ptr<BasisSet>bs4);
255  void init(std::shared_ptr<BasisSet>bs1, std::shared_ptr<BasisSet>bs2,
256  std::shared_ptr<BasisSet>bs3, std::shared_ptr<BasisSet>bs4);
257 
258  void first();
259  void next();
260  bool is_done() { return done; }
261 
262  int p() const { return current.P; }
263  int q() const { return current.Q; }
264  int r() const { return current.R; }
265  int s() const { return current.S; }
266  int end_of_PK() const { return current.end_of_PK; }
267 
269 };
270 
272 {
273 private:
274  struct ShellQuartet {
275  int P;
276  int Q;
277  int R;
278  int S;
279  bool end_of_PK;
280  };
281 
283  int usi_arr[3], usj_arr[3], usk_arr[3], usl_arr[3];
284  int usii, usjj, uskk, usll, upk;
285 
287 
288  bool done;
289 
290  std::shared_ptr<SOBasisSet> bs1_;
291  std::shared_ptr<SOBasisSet> bs2_;
292  std::shared_ptr<SOBasisSet> bs3_;
293  std::shared_ptr<SOBasisSet> bs4_;
294 
295 public:
296  SOShellCombinationsIterator(std::shared_ptr<SOBasisSet>bs1, std::shared_ptr<SOBasisSet>bs2,
297  std::shared_ptr<SOBasisSet>bs3, std::shared_ptr<SOBasisSet>bs4);
299  void init(std::shared_ptr<SOBasisSet>bs1, std::shared_ptr<SOBasisSet>bs2,
300  std::shared_ptr<SOBasisSet>bs3, std::shared_ptr<SOBasisSet>bs4);
301 
302  void first();
303  void next();
304  bool is_done() { return done; }
305 
306  int p() const { return current.P; }
307  int q() const { return current.Q; }
308  int r() const { return current.R; }
309  int s() const { return current.S; }
310  int end_of_PK() const { return current.end_of_PK; }
311 };
312 
314 {
315 private:
316  struct PQ_Pair {
317  int P;
318  int Q;
319  };
320 
322  int ii, jj;
323 
324  bool done;
325 
326  std::shared_ptr<SOBasisSet> bs1_;
327 
328 public:
329  SO_PQ_Iterator(std::shared_ptr<SOBasisSet>bs1);
330  SO_PQ_Iterator();
331 
332  void first();
333  void next();
334  bool is_done() { return done; }
335 
336  int p() const { return current.P; }
337  int q() const { return current.Q; }
338 };
339 
341 {
342 private:
343  struct RS_Pair {
344  int P;
345  int Q;
346  int R;
347  int S;
348  };
349 
351  int usi_arr[3], usj_arr[3], usk_arr[3], usl_arr[3];
352  int usii, usjj, uskk, usll, upk;
353 
355 
356  bool done;
357 
358  std::shared_ptr<SOBasisSet> bs1_;
359  std::shared_ptr<SOBasisSet> bs2_;
360  std::shared_ptr<SOBasisSet> bs3_;
361  std::shared_ptr<SOBasisSet> bs4_;
362 
363 public:
364  SO_RS_Iterator(const int &P, const int &Q,
365  std::shared_ptr<SOBasisSet>bs1, std::shared_ptr<SOBasisSet>bs2,
366  std::shared_ptr<SOBasisSet>bs3, std::shared_ptr<SOBasisSet>bs4);
367  SO_RS_Iterator(std::shared_ptr<SOBasisSet>bs1, std::shared_ptr<SOBasisSet>bs2,
368  std::shared_ptr<SOBasisSet>bs3, std::shared_ptr<SOBasisSet>bs4);
369 
370  SO_RS_Iterator();
371 
372  void first();
373  void next();
374  bool is_done() { return done; }
375 
376  int p() const { return current.P; }
377  int q() const { return current.Q; }
378  int r() const { return current.R; }
379  int s() const { return current.S; }
380 };
381 
382 
385 {
386 protected:
388  std::shared_ptr<BasisSet> bs1_;
390  std::shared_ptr<BasisSet> bs2_;
392  std::shared_ptr<BasisSet> bs3_;
394  std::shared_ptr<BasisSet> bs4_;
395 
397  std::vector<SphericalTransform> spherical_transforms_;
399  std::vector<ISphericalTransform> ispherical_transforms_;
400 
401 public:
403  IntegralFactory(std::shared_ptr<BasisSet> bs1, std::shared_ptr<BasisSet> bs2,
404  std::shared_ptr<BasisSet> bs3, std::shared_ptr<BasisSet> bs4);
406  IntegralFactory(std::shared_ptr<BasisSet> bs1);
407 
408  virtual ~IntegralFactory();
409 
411  std::shared_ptr<BasisSet> basis1() const;
413  std::shared_ptr<BasisSet> basis2() const;
415  std::shared_ptr<BasisSet> basis3() const;
417  std::shared_ptr<BasisSet> basis4() const;
418 
420  virtual void set_basis(std::shared_ptr<BasisSet> bs1, std::shared_ptr<BasisSet> bs2,
421  std::shared_ptr<BasisSet> bs3, std::shared_ptr<BasisSet> bs4);
422 
424  virtual OneBodyAOInt* ao_overlap(int deriv=0);
425 
427  virtual OneBodySOInt* so_overlap(int deriv=0);
428 
431 
433  virtual OneBodyAOInt* ao_kinetic(int deriv=0);
434  virtual OneBodySOInt* so_kinetic(int deriv=0);
435 
437  virtual OneBodyAOInt* ao_potential(int deriv=0);
438  virtual OneBodySOInt* so_potential(int deriv=0);
439 
441  virtual OneBodyAOInt* ao_ecp(int deriv=0);
442  virtual OneBodySOInt* so_ecp(int deriv=0);
443 
445  virtual OneBodyAOInt* ao_rel_potential(int deriv=0);
446  virtual OneBodySOInt* so_rel_potential(int deriv=0);
447 
449  virtual OneBodyAOInt* ao_pseudospectral(int deriv = 0);
450  virtual OneBodySOInt* so_pseudospectral(int deriv = 0);
451 
453  virtual OneBodyAOInt* ao_dipole(int deriv=0);
454  virtual OneBodySOInt* so_dipole(int deriv=0);
455 
457  virtual OneBodyAOInt* ao_quadrupole();
458  virtual OneBodySOInt* so_quadrupole();
459 
461  virtual OneBodyAOInt* ao_multipoles(int order);
462  virtual OneBodySOInt* so_multipoles(int order);
463 
467 
469  virtual OneBodyAOInt* ao_nabla(int deriv=0);
470  virtual OneBodySOInt* so_nabla(int deriv=0);
471 
473  virtual OneBodyAOInt* ao_angular_momentum(int deriv=0);
474  virtual OneBodySOInt* so_angular_momentum(int deriv=0);
475 
477  virtual OneBodyAOInt* ao_efp_multipole_potential(int deriv=0);
478  virtual OneBodySOInt* so_efp_multipole_potential(int deriv=0);
479 
481  virtual OneBodyAOInt *electric_field();
482 
484  virtual OneBodyAOInt *electrostatic();
485 
488  virtual OneBodyAOInt *pcm_potentialint();
489 
491  virtual TwoBodyAOInt* eri(int deriv=0, bool use_shell_pairs=true);
492 
494  virtual TwoBodyAOInt* erd_eri(int deriv=0, bool use_shell_pairs=true);
495 
497  virtual TwoBodyAOInt* erf_eri(double omega, int deriv=0, bool use_shell_pairs=true);
498 
500  virtual TwoBodyAOInt* erf_complement_eri(double omega, int deriv=0, bool use_shell_pairs=true);
501 
503  virtual TwoBodyAOInt* f12(std::shared_ptr<CorrelationFactor> cf, int deriv=0, bool use_shell_pairs=true);
504 
506  virtual TwoBodyAOInt* f12_scaled(std::shared_ptr<CorrelationFactor> cf, int deriv=0, bool use_shell_pairs=true);
507 
509  virtual TwoBodyAOInt* f12_squared(std::shared_ptr<CorrelationFactor> cf, int deriv=0, bool use_shell_pairs=true);
510 
512  virtual TwoBodyAOInt* f12g12(std::shared_ptr<CorrelationFactor> cf, int deriv=0, bool use_shell_pairs=true);
513 
515  virtual TwoBodyAOInt* f12_double_commutator(std::shared_ptr<CorrelationFactor> cf, int deriv=0, bool use_shell_pairs=true);
516 
518  AOIntegralsIterator integrals_iterator(int p, int q, int r, int s);
519 
523 
525  virtual void init_spherical_harmonics(int max_am);
526 
528  const SphericalTransform* spherical_transform(int am) const { return &(spherical_transforms_[am]); }
529 
530  // Return spherical transform object for am
531  std::vector<SphericalTransform>& spherical_transform() { return spherical_transforms_; }
532 
534  SphericalTransformIter* spherical_transform_iter(int am, int inv=0, int subl=-1) const;
535 
537  CartesianIter* cartesian_iter(int l) const;
544  ShellRotation shell_rotation(int am, SymmetryOperation&, int pure=0) const;
545 };
546 
547 }
548 
549 #endif
void init(int a, int b, int c, double coef, int cartindex, int pureindex)
Definition: libmints/transform.cc:50
Definition: integral.h:112
double coef() const
Returns the transformation coefficient of component i.
Definition: integral.h:176
virtual OneBodyAOInt * ao_kinetic(int deriv=0)
Returns an OneBodyInt that computes the kinetic energy integral.
Definition: integral.cc:129
Definition: onebody.h:55
virtual OneBodyAOInt * ao_angular_momentum(int deriv=0)
Returns an OneBodyInt that computes the nabla integral.
Definition: integral.cc:216
int r() const
Definition: integral.h:264
void init(std::shared_ptr< BasisSet >bs1, std::shared_ptr< BasisSet >bs2, std::shared_ptr< BasisSet >bs3, std::shared_ptr< BasisSet >bs4)
Definition: integraliter.cc:238
std::shared_ptr< BasisSet > bs2_
Definition: integral.h:247
Definition: integral.h:227
int a() const
Returns the Cartesian basis function&#39;s x exponent of component i.
Definition: integral.h:178
virtual TwoBodyAOInt * eri(int deriv=0, bool use_shell_pairs=true)
Returns an ERI integral object.
Definition: integral.cc:288
Definition: integral.h:340
void first()
Definition: integral.h:164
int jjmax
Definition: integral.h:207
bool end_of_PK
Definition: integral.h:279
bool is_done()
Definition: integral.h:334
std::shared_ptr< BasisSet > bs2_
Center 2 basis set.
Definition: integral.h:390
void next()
Definition: integraliter.cc:283
void next()
Definition: integraliter.cc:404
bool is_done()
Definition: integral.h:374
int usj_arr[3]
Definition: integral.h:351
Definition: integral.h:84
int upk
Definition: integral.h:240
int a_
Definition: integral.h:87
int p() const
Definition: integral.h:262
Definition: shellrotation.h:37
AOShellCombinationsIterator * shells_iterator_ptr()
Definition: integral.cc:351
virtual OneBodyAOInt * ao_rel_potential(int deriv=0)
Returns an OneBodyInt that computes the relativistic nuclear attraction integral. ...
Definition: integral.cc:162
std::shared_ptr< SOBasisSet > bs4_
Definition: integral.h:293
int l(int i)
Return a component of the transform.
Definition: integral.h:184
Definition: integral.h:313
int P
Definition: integral.h:317
int uskk
Definition: integral.h:240
virtual OneBodyAOInt * ao_overlap(int deriv=0)
Returns an OneBodyInt that computes the overlap integral.
Definition: integral.cc:113
int num_unique_pk
Definition: integral.h:286
int ii
Definition: integral.h:207
RS_Pair current
Definition: integral.h:350
virtual OneBodyAOInt * ao_ecp(int deriv=0)
Returns an OneBodyInt that computes the ECP integral.
Definition: integral.cc:151
int s() const
Definition: integral.h:309
std::shared_ptr< SOBasisSet > bs1_
Definition: integral.h:290
int usl_arr[3]
Definition: integral.h:351
const GaussianShell & usk
Definition: integral.h:202
std::vector< SphericalTransform > & spherical_transform()
Definition: integral.h:531
const GaussianShell & usi
Definition: integral.h:200
int p() const
Definition: integral.h:376
int k() const
Definition: integral.h:220
int kk
Definition: integral.h:207
Three center overlap integral.
Definition: 3coverlap.h:46
virtual TwoBodyAOInt * f12_scaled(std::shared_ptr< CorrelationFactor > cf, int deriv=0, bool use_shell_pairs=true)
Returns an F12Scaled integral object.
Definition: integral.cc:315
int r() const
Definition: integral.h:308
int cartindex_
Definition: integral.h:88
const GaussianShell & usl
Definition: integral.h:203
double coef() const
Returns the coefficient of this component of the transformation.
Definition: integral.h:104
int R
Definition: integral.h:346
virtual TwoBodyAOInt * f12g12(std::shared_ptr< CorrelationFactor > cf, int deriv=0, bool use_shell_pairs=true)
Returns an F12G12 integral object.
Definition: integral.cc:325
int jj
Definition: integral.h:207
Definition: twobody.h:61
AOShellCombinationsIterator()
Definition: integraliter.cc:228
virtual OneBodySOInt * so_ecp(int deriv=0)
Definition: integral.cc:156
int pureindex() const
Returns the index of the spherical harmonic basis function.
Definition: integral.h:102
Definition: pointgrp.h:106
virtual OneBodyAOInt * ao_pseudospectral(int deriv=0)
Returns the OneBodyInt that computes the pseudospectral grid integrals.
Definition: integral.cc:173
unsigned int index
Definition: integral.h:196
Definition: cartesianiter.h:78
int c(int i) const
Returns the Cartesian basis function&#39;s z exponent of component i.
Definition: integral.h:137
int j() const
Definition: integral.h:219
Integral current
Definition: integral.h:199
int usk_arr[3]
Definition: integral.h:239
int pureindex_
Definition: integral.h:88
std::shared_ptr< SOBasisSet > bs2_
Definition: integral.h:291
bool is_done()
Definition: integral.h:304
int usk_arr[3]
Definition: integral.h:283
SphericalTransformIter(const SphericalTransform &trans)
Definition: integral.h:162
void first()
Definition: integraliter.cc:247
bool done
Definition: integral.h:356
Definition: integral.h:155
int c() const
Returns the exponent of z.
Definition: integral.h:98
int cartindex() const
Returns the index of the Cartesian basis function.
Definition: integral.h:100
int usi_arr[3]
Definition: integral.h:239
void next()
Definition: integral.h:165
int b_
Definition: integral.h:87
virtual OneBodyAOInt * ao_nabla(int deriv=0)
Returns an OneBodyInt that computes the nabla integral.
Definition: integral.cc:205
int l() const
Definition: integral.h:221
virtual OneBodySOInt * so_quadrupole()
Definition: integral.cc:232
ShellQuartet current
Definition: integral.h:238
void first()
Definition: integraliter.cc:84
int Q
Definition: integral.h:318
int kkmax
Definition: integral.h:207
bool done
Definition: integral.h:205
std::shared_ptr< SOBasisSet > bs2_
Definition: integral.h:359
Definition: integral.h:316
SOShellCombinationsIterator()
Definition: integraliter.cc:368
int llmax
Definition: integral.h:207
int upk
Definition: integral.h:284
int usii
Definition: integral.h:284
std::shared_ptr< SOBasisSet > bs1_
Definition: integral.h:358
virtual TwoBodyAOInt * f12_squared(std::shared_ptr< CorrelationFactor > cf, int deriv=0, bool use_shell_pairs=true)
Returns an F12 squared integral object.
Definition: integral.cc:320
int p() const
Definition: integral.h:336
std::shared_ptr< BasisSet > basis4() const
Return the basis set on center 4.
Definition: integral.cc:96
SO_PQ_Iterator()
Definition: integraliter.cc:488
int usii
Definition: integral.h:352
int i
Definition: integral.h:192
AOIntegralsIterator(const GaussianShell &s1, const GaussianShell &s2, const GaussianShell &s3, const GaussianShell &s4)
Definition: integraliter.cc:46
int j
Definition: integral.h:193
int cartindex() const
Returns the Cartesian basis function index of component i.
Definition: integral.h:172
Definition: integral.h:188
double coef(int i) const
Returns the transformation coefficient of component i.
Definition: integral.h:131
int b() const
Returns the Cartesian basis function&#39;s y exponent of component i.
Definition: integral.h:180
int b(int i) const
Returns the Cartesian basis function&#39;s y exponent of component i.
Definition: integral.h:135
virtual OneBodyAOInt * ao_potential(int deriv=0)
Returns an OneBodyInt that computes the nuclear attraction integral.
Definition: integral.cc:140
int pureindex() const
Returns the spherical harmonic basis index of component i.
Definition: integral.h:174
std::shared_ptr< BasisSet > bs4_
Definition: integral.h:249
int l_
Definition: integral.h:116
int cartindex(int i) const
Returns the Cartesian basis function index of component i.
Definition: integral.h:127
int usl_arr[3]
Definition: integral.h:283
int c_
Definition: integral.h:87
ISphericalTransform()
Definition: libmints/transform.cc:125
int ii
Definition: integral.h:322
int c() const
Returns the Cartesian basis function&#39;s z exponent of component i.
Definition: integral.h:182
std::vector< SphericalTransformComponent > components_
Definition: integral.h:115
std::shared_ptr< BasisSet > basis2() const
Return the basis set on center 2.
Definition: integral.cc:86
int n() const
Returns the number of components in the transformation.
Definition: integral.h:139
virtual void set_basis(std::shared_ptr< BasisSet > bs1, std::shared_ptr< BasisSet > bs2, std::shared_ptr< BasisSet > bs3, std::shared_ptr< BasisSet > bs4)
Set the basis set for each center.
Definition: integral.cc:101
int jj
Definition: integral.h:322
int b() const
Returns the exponent of y.
Definition: integral.h:96
void first()
Definition: integraliter.cc:382
AOIntegralsIterator integrals_iterator(int p, int q, int r, int s)
Returns a general ERI iterator object for any (P Q | R S) in shells.
Definition: integral.cc:356
void next()
Definition: integraliter.cc:502
int usii
Definition: integral.h:240
int usll
Definition: integral.h:240
int usl_arr[3]
Definition: integral.h:239
int index() const
Definition: integral.h:222
virtual TwoBodyAOInt * erf_eri(double omega, int deriv=0, bool use_shell_pairs=true)
Returns an erf ERI integral object (omega integral)
Definition: integral.cc:300
PQ_Pair current
Definition: integral.h:321
int r() const
Definition: integral.h:378
Definition: integral.h:191
int fij
Definition: integral.h:208
bool is_done()
Definition: integral.h:166
bool end_of_PK
Definition: integral.h:235
std::shared_ptr< BasisSet > bs4_
Center 4 basis set.
Definition: integral.h:394
std::vector< ISphericalTransform > ispherical_transforms_
Provides ability to transform from sphericals (d=0, f=1, g=2)
Definition: integral.h:399
virtual OneBodyAOInt * electrostatic()
Returns an OneBodyInt that computes the point electrostatic potential.
Definition: integral.cc:184
virtual TwoBodyAOInt * erf_complement_eri(double omega, int deriv=0, bool use_shell_pairs=true)
Returns an erf complement ERI integral object (omega integral)
Definition: integral.cc:305
int usi_arr[3]
Definition: integral.h:351
std::shared_ptr< BasisSet > bs3_
Center 3 basis set.
Definition: integral.h:392
int ll
Definition: integral.h:207
Definition: sointegral_onebody.h:40
AOShellCombinationsIterator shells_iterator()
Returns an ERI iterator object, only coded for standard ERIs.
Definition: integral.cc:346
virtual void init()
Definition: libmints/transform.cc:138
PRAGMA_WARNING_PUSH PRAGMA_WARNING_IGNORE_DEPRECATED_DECLARATIONS PRAGMA_WARNING_POP
Definition: integraliter.cc:43
bool done
Definition: integral.h:288
int l() const
Returns the angular momentum.
Definition: integral.h:141
int end_of_PK() const
Definition: integral.h:266
int usjj
Definition: integral.h:240
virtual OneBodySOInt * so_rel_potential(int deriv=0)
Definition: integral.cc:167
int num_unique_pk
Definition: integral.h:354
virtual void init_spherical_harmonics(int max_am)
Initializes spherical harmonic transformations.
Definition: integral.cc:335
int i_
Definition: integral.h:159
int end_of_PK() const
Definition: integral.h:310
int q() const
Definition: integral.h:263
int fik
Definition: integral.h:208
RedundantCartesianSubIter * redundant_cartesian_sub_iter(int l) const
Return a new rudundant Cartesian sub iterator.
Definition: integral.cc:371
int nl
Definition: integral.h:208
CartesianIter * cartesian_iter(int l) const
Return a new Cartesian iterator.
Definition: integral.cc:361
virtual OneBodyAOInt * electric_field()
Returns an OneBodyInt that computes the electric field.
Definition: integral.cc:271
ShellQuartet current
Definition: integral.h:282
int P
Definition: integral.h:344
std::shared_ptr< BasisSet > bs1_
Center 1 basis set.
Definition: integral.h:388
virtual OneBodyAOInt * ao_efp_multipole_potential(int deriv=0)
Returns a OneBodyInt that computes the multipole potential integrals for EFP.
Definition: integral.cc:243
int q() const
Definition: integral.h:377
std::shared_ptr< BasisSet > bs1_
Definition: integral.h:246
int q() const
Definition: integral.h:307
std::shared_ptr< BasisSet > basis1() const
Return the basis set on center 1.
Definition: integral.cc:81
virtual OneBodyAOInt * ao_quadrupole()
Returns an OneBodyInt that computes the quadrupole integral.
Definition: integral.cc:227
int usi_arr[3]
Definition: integral.h:283
std::shared_ptr< BasisSet > basis3() const
Return the basis set on center 3.
Definition: integral.cc:91
int upk
Definition: integral.h:352
void first()
Definition: integraliter.cc:541
Gaussian orbital shell.
Definition: gshell.h:189
virtual OneBodySOInt * so_efp_multipole_potential(int deriv=0)
Definition: integral.cc:248
int ni
Definition: integral.h:208
void next()
Definition: integraliter.cc:117
virtual TwoBodyAOInt * erd_eri(int deriv=0, bool use_shell_pairs=true)
Returns an ERD ERI integral object, if available. Otherwise returns a libint integral object...
Definition: integral.cc:276
int k
Definition: integral.h:194
int usj_arr[3]
Definition: integral.h:283
Definition: integral.h:384
CCTransform * trans
Definition: psimrcc/main.cc:80
AOIntegralsIterator integrals_iterator()
Definition: integraliter.cc:233
bool is_done()
Definition: integral.h:216
virtual OneBodyAOInt * pcm_potentialint()
Definition: integral.cc:189
int usj_arr[3]
Definition: integral.h:239
virtual OneBodySOInt * so_traceless_quadrupole()
Definition: integral.cc:265
std::vector< SphericalTransform > spherical_transforms_
Provides ability to transform to sphericals (d=0, f=1, g=2)
Definition: integral.h:397
int s() const
Definition: integral.h:379
int S
Definition: integral.h:347
int a() const
Returns the exponent of x.
Definition: integral.h:94
virtual TwoBodyAOInt * f12_double_commutator(std::shared_ptr< CorrelationFactor > cf, int deriv=0, bool use_shell_pairs=true)
Returns an F12 double commutator integral object.
Definition: integral.cc:330
virtual OneBodySOInt * so_angular_momentum(int deriv=0)
Definition: integral.cc:221
int l
Definition: integral.h:195
Definition: integral.h:343
int pureindex(int i) const
Returns the spherical harmonic basis index of component i.
Definition: integral.h:129
virtual void init()
Definition: libmints/transform.cc:75
virtual ThreeCenterOverlapInt * overlap_3c()
Returns a ThreeCenterOverlapINt that computes the overlap between three centers.
Definition: integral.cc:124
int fil
Definition: integral.h:208
double coef_
Definition: integral.h:90
Definition: cartesianiter.h:161
std::shared_ptr< BasisSet > bs3_
Definition: integral.h:248
int n() const
Returns how many transforms are in this iterator.
Definition: integral.h:169
virtual OneBodySOInt * so_nabla(int deriv=0)
Definition: integral.cc:210
void next()
Definition: integraliter.cc:591
int uskk
Definition: integral.h:352
int q() const
Definition: integral.h:337
int usjj
Definition: integral.h:352
int num_unique_pk
Definition: integral.h:242
SO_RS_Iterator()
Definition: integraliter.cc:536
int usk_arr[3]
Definition: integral.h:351
virtual OneBodySOInt * so_overlap(int deriv=0)
Returns an OneBodyInt that computes the overlap integral.
Definition: integral.cc:118
std::shared_ptr< SOBasisSet > bs4_
Definition: integral.h:361
const GaussianShell & usj
Definition: integral.h:201
int usll
Definition: integral.h:284
int uskk
Definition: integral.h:284
int a(int i) const
Returns the Cartesian basis function&#39;s x exponent of component i.
Definition: integral.h:133
int s() const
Definition: integral.h:265
std::shared_ptr< SOBasisSet > bs1_
Definition: integral.h:326
IntegralFactory(std::shared_ptr< BasisSet > bs1, std::shared_ptr< BasisSet > bs2, std::shared_ptr< BasisSet > bs3, std::shared_ptr< BasisSet > bs4)
Definition: integral.cc:62
int i() const
Definition: integral.h:218
RedundantCartesianIter * redundant_cartesian_iter(int l) const
Return a new rudundant Cartesian iterator.
Definition: integral.cc:366
virtual ~IntegralFactory()
Definition: integral.cc:76
int p() const
Definition: integral.h:306
virtual OneBodyAOInt * ao_traceless_quadrupole()
Returns an OneBodyInt that computes the traceless quadrupole integral.
Definition: integral.cc:260
Definition: cartesianiter.h:36
virtual OneBodySOInt * so_pseudospectral(int deriv=0)
Definition: integral.cc:178
int subl_
Definition: integral.h:117
virtual OneBodySOInt * so_potential(int deriv=0)
Definition: integral.cc:145
int usjj
Definition: integral.h:284
int nj
Definition: integral.h:208
int nk
Definition: integral.h:208
Definition: pointgrp.h:141
void first()
Definition: integraliter.cc:493
void init(std::shared_ptr< SOBasisSet >bs1, std::shared_ptr< SOBasisSet >bs2, std::shared_ptr< SOBasisSet >bs3, std::shared_ptr< SOBasisSet >bs4)
Definition: integraliter.cc:373
bool done
Definition: integral.h:324
const SphericalTransform & trans_
Definition: integral.h:158
virtual OneBodySOInt * so_dipole(int deriv=0)
Definition: integral.cc:199
virtual ~SphericalTransform()
Definition: integral.h:124
SphericalTransformIter * spherical_transform_iter(int am, int inv=0, int subl=-1) const
Return a spherical transform iterator object for am.
Definition: integral.cc:382
int usll
Definition: integral.h:352
int Q
Definition: integral.h:345
ShellRotation shell_rotation(int am, SymmetryOperation &, int pure=0) const
Definition: integral.cc:376
std::shared_ptr< SOBasisSet > bs3_
Definition: integral.h:360
virtual OneBodyAOInt * ao_multipoles(int order)
Returns an OneBodyInt that computes arbitrary-order multipole integrals.
Definition: integral.cc:238
SphericalTransform()
Definition: libmints/transform.cc:62
virtual OneBodyAOInt * ao_dipole(int deriv=0)
Returns an OneBodyInt that computes the dipole integral.
Definition: integral.cc:194
virtual TwoBodyAOInt * f12(std::shared_ptr< CorrelationFactor > cf, int deriv=0, bool use_shell_pairs=true)
Returns an F12 integral object.
Definition: integral.cc:310
virtual OneBodySOInt * so_multipoles(int order)
Definition: integral.cc:254
std::shared_ptr< SOBasisSet > bs3_
Definition: integral.h:292
int iimax
Definition: integral.h:207
const SphericalTransform * spherical_transform(int am) const
Return spherical transform object for am.
Definition: integral.h:528
bool done
Definition: integral.h:244
bool is_done()
Definition: integral.h:260
int fii
Definition: integral.h:208
virtual OneBodySOInt * so_kinetic(int deriv=0)
Definition: integral.cc:134
Definition: integral.h:271