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 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 _psi_src_lib_libmints_integral_h_
29 #define _psi_src_lib_libmints_integral_h_
30 
31  #include "psi4/pragma.h"
32  PRAGMA_WARNING_PUSH
33  PRAGMA_WARNING_IGNORE_DEPRECATED_DECLARATIONS
34  #include <memory>
36 #include <vector>
37 
38 #include "onebody.h"
39 #include "twobody.h"
40 
44 #define INT_NCART(am) ((am>=0)?((((am)+2)*((am)+1))>>1):0)
45 
48 #define INT_NPURE(am) (2*(am)+1)
49 
52 #define INT_NFUNC(pu,am) ((pu)?INT_NPURE(am):INT_NCART(am))
53 
56 #define INT_CARTINDEX(am,i,j) (((i) == (am))? 0 : (((((am) - (i) + 1)*((am) - (i)))>>1) + (am) - (i) - (j)))
57 
60 #define INT_ICART(a, b, c) (((((((a)+(b)+(c)+1)<<1)-(a))*((a)+1))>>1)-(b)-1)
61 
64 #define INT_IPURE(l, m) ((l)+(m))
65 
66 namespace psi {
67 
68 class BasisSet;
69 class GaussianShell;
70 class OneBodyAOInt;
71 class OneBodySOInt;
72 class TwoBodyAOInt;
73 class ThreeCenterOverlapInt;
74 class Symmetry;
75 class CartesianIter;
76 class RedundantCartesianIter;
77 class RedundantCartesianSubIter;
78 class ShellRotation;
79 class SymmetryOperation;
80 class SOTransform;
81 class SOBasisSet;
82 class CorrelationFactor;
83 
86 {
87 protected:
88  int a_, b_, c_;
90 
91  double coef_;
92 
93 public:
95  int a() const { return a_; }
97  int b() const { return b_; }
99  int c() const { return c_; }
101  int cartindex() const { return cartindex_; }
103  int pureindex() const { return pureindex_; }
105  double coef() const { return coef_; }
106 
107  void init(int a, int b, int c, double coef, int cartindex, int pureindex);
108 };
109 
114 {
115 protected:
116  std::vector<SphericalTransformComponent> components_;
117  int l_; // The angular momentum this transform is for.
118  int subl_;
119 
121 
122  virtual void init();
123 public:
124  SphericalTransform(int l, int subl = -1);
125  virtual ~SphericalTransform() {}
126 
128  int cartindex(int i) const { return components_[i].cartindex(); }
130  int pureindex(int i) const { return components_[i].pureindex(); }
132  double coef(int i) const { return components_[i].coef(); }
134  int a(int i) const { return components_[i].a(); }
136  int b(int i) const { return components_[i].b(); }
138  int c(int i) const { return components_[i].c(); }
140  int n() const { return components_.size(); }
142  int l() const { return l_; }
143 };
144 
146 class ISphericalTransform : public SphericalTransform
148 {
149 protected:
151  virtual void init();
152 public:
153  ISphericalTransform(int l, int subl=-1);
154 };
155 
157 {
158 private:
160  int i_;
161 
162 public:
164 
165  void first() { i_ = 0; }
166  void next() { i_++; }
167  bool is_done() { return i_ < trans_.n() ? false : true; }
168 
170  int n() const { return trans_.n(); }
171 
173  int cartindex() const { return trans_.cartindex(i_); }
175  int pureindex() const { return trans_.pureindex(i_); }
177  double coef() const { return trans_.coef(i_); }
179  int a() const { return trans_.a(i_); }
181  int b() const { return trans_.b(i_); }
183  int c() const { return trans_.c(i_); }
185  int l(int i) { return i?(i==1?b():c()):a(); }
186 };
187 
190 {
191 private:
192  struct Integral {
193  int i;
194  int j;
195  int k;
196  int l;
197  unsigned int index;
198  };
199 
205 
206  bool done;
207 
208  int ii, iimax, jj, jjmax, kk, kkmax, ll, llmax;
209  int ni, nj, nk, nl, fii, fij, fik, fil;
210 
211 public:
212  AOIntegralsIterator(const GaussianShell& s1, const GaussianShell& s2,
213  const GaussianShell& s3, const GaussianShell& s4);
214 
215  void first();
216  void next();
217  bool is_done() { return done; }
218 
219  int i() const { return current.i; }
220  int j() const { return current.j; }
221  int k() const { return current.k; }
222  int l() const { return current.l; }
223  int index() const { return current.index;}
224 };
225 
226 
229 {
230 private:
231  struct ShellQuartet {
232  int P;
233  int Q;
234  int R;
235  int S;
236  bool end_of_PK;
237  };
238 
240  int usi_arr[3], usj_arr[3], usk_arr[3], usl_arr[3];
241  int usii, usjj, uskk, usll, upk;
242 
244 
245  bool done;
246 
247  std::shared_ptr<BasisSet> bs1_;
248  std::shared_ptr<BasisSet> bs2_;
249  std::shared_ptr<BasisSet> bs3_;
250  std::shared_ptr<BasisSet> bs4_;
251 
252 public:
253  AOShellCombinationsIterator(std::shared_ptr<BasisSet>bs1, std::shared_ptr<BasisSet>bs2,
254  std::shared_ptr<BasisSet>bs3, std::shared_ptr<BasisSet>bs4);
256  void init(std::shared_ptr<BasisSet>bs1, std::shared_ptr<BasisSet>bs2,
257  std::shared_ptr<BasisSet>bs3, std::shared_ptr<BasisSet>bs4);
258 
259  void first();
260  void next();
261  bool is_done() { return done; }
262 
263  int p() const { return current.P; }
264  int q() const { return current.Q; }
265  int r() const { return current.R; }
266  int s() const { return current.S; }
267  int end_of_PK() const { return current.end_of_PK; }
268 
270 };
271 
273 {
274 private:
275  struct ShellQuartet {
276  int P;
277  int Q;
278  int R;
279  int S;
280  bool end_of_PK;
281  };
282 
284  int usi_arr[3], usj_arr[3], usk_arr[3], usl_arr[3];
285  int usii, usjj, uskk, usll, upk;
286 
288 
289  bool done;
290 
291  std::shared_ptr<SOBasisSet> bs1_;
292  std::shared_ptr<SOBasisSet> bs2_;
293  std::shared_ptr<SOBasisSet> bs3_;
294  std::shared_ptr<SOBasisSet> bs4_;
295 
296 public:
297  SOShellCombinationsIterator(std::shared_ptr<SOBasisSet>bs1, std::shared_ptr<SOBasisSet>bs2,
298  std::shared_ptr<SOBasisSet>bs3, std::shared_ptr<SOBasisSet>bs4);
300  void init(std::shared_ptr<SOBasisSet>bs1, std::shared_ptr<SOBasisSet>bs2,
301  std::shared_ptr<SOBasisSet>bs3, std::shared_ptr<SOBasisSet>bs4);
302 
303  void first();
304  void next();
305  bool is_done() { return done; }
306 
307  int p() const { return current.P; }
308  int q() const { return current.Q; }
309  int r() const { return current.R; }
310  int s() const { return current.S; }
311  int end_of_PK() const { return current.end_of_PK; }
312 };
313 
315 {
316 private:
317  struct PQ_Pair {
318  int P;
319  int Q;
320  };
321 
323  int ii, jj;
324 
325  bool done;
326 
327  std::shared_ptr<SOBasisSet> bs1_;
328 
329 public:
330  SO_PQ_Iterator(std::shared_ptr<SOBasisSet>bs1);
331  SO_PQ_Iterator();
332 
333  void first();
334  void next();
335  bool is_done() { return done; }
336 
337  int p() const { return current.P; }
338  int q() const { return current.Q; }
339 };
340 
342 {
343 private:
344  struct RS_Pair {
345  int P;
346  int Q;
347  int R;
348  int S;
349  };
350 
352  int usi_arr[3], usj_arr[3], usk_arr[3], usl_arr[3];
353  int usii, usjj, uskk, usll, upk;
354 
356 
357  bool done;
358 
359  std::shared_ptr<SOBasisSet> bs1_;
360  std::shared_ptr<SOBasisSet> bs2_;
361  std::shared_ptr<SOBasisSet> bs3_;
362  std::shared_ptr<SOBasisSet> bs4_;
363 
364 public:
365  SO_RS_Iterator(const int &P, const int &Q,
366  std::shared_ptr<SOBasisSet>bs1, std::shared_ptr<SOBasisSet>bs2,
367  std::shared_ptr<SOBasisSet>bs3, std::shared_ptr<SOBasisSet>bs4);
368  SO_RS_Iterator(std::shared_ptr<SOBasisSet>bs1, std::shared_ptr<SOBasisSet>bs2,
369  std::shared_ptr<SOBasisSet>bs3, std::shared_ptr<SOBasisSet>bs4);
370 
371  SO_RS_Iterator();
372 
373  void first();
374  void next();
375  bool is_done() { return done; }
376 
377  int p() const { return current.P; }
378  int q() const { return current.Q; }
379  int r() const { return current.R; }
380  int s() const { return current.S; }
381 };
382 
383 
386 {
387 protected:
389  std::shared_ptr<BasisSet> bs1_;
391  std::shared_ptr<BasisSet> bs2_;
393  std::shared_ptr<BasisSet> bs3_;
395  std::shared_ptr<BasisSet> bs4_;
396 
398  std::vector<SphericalTransform> spherical_transforms_;
400  std::vector<ISphericalTransform> ispherical_transforms_;
401 
402 public:
404  IntegralFactory(std::shared_ptr<BasisSet> bs1, std::shared_ptr<BasisSet> bs2,
405  std::shared_ptr<BasisSet> bs3, std::shared_ptr<BasisSet> bs4);
407  IntegralFactory(std::shared_ptr<BasisSet> bs1, std::shared_ptr<BasisSet> bs2);
409  IntegralFactory(std::shared_ptr<BasisSet> bs1);
410 
411  virtual ~IntegralFactory();
412 
414  std::shared_ptr<BasisSet> basis1() const;
416  std::shared_ptr<BasisSet> basis2() const;
418  std::shared_ptr<BasisSet> basis3() const;
420  std::shared_ptr<BasisSet> basis4() const;
421 
423  virtual void set_basis(std::shared_ptr<BasisSet> bs1, std::shared_ptr<BasisSet> bs2,
424  std::shared_ptr<BasisSet> bs3, std::shared_ptr<BasisSet> bs4);
425 
427  virtual OneBodyAOInt* ao_overlap(int deriv=0);
428 
430  virtual OneBodySOInt* so_overlap(int deriv=0);
431 
434 
436  virtual OneBodyAOInt* ao_kinetic(int deriv=0);
437  virtual OneBodySOInt* so_kinetic(int deriv=0);
438 
440  virtual OneBodyAOInt* ao_potential(int deriv=0);
441  virtual OneBodySOInt* so_potential(int deriv=0);
442 
444  virtual OneBodyAOInt* ao_rel_potential(int deriv=0);
445  virtual OneBodySOInt* so_rel_potential(int deriv=0);
446 
448  virtual OneBodyAOInt* ao_pseudospectral(int deriv = 0);
449  virtual OneBodySOInt* so_pseudospectral(int deriv = 0);
450 
452  virtual OneBodyAOInt* ao_dipole(int deriv=0);
453  virtual OneBodySOInt* so_dipole(int deriv=0);
454 
456  virtual OneBodyAOInt* ao_quadrupole();
457  virtual OneBodySOInt* so_quadrupole();
458 
460  virtual OneBodyAOInt* ao_multipoles(int order);
461  virtual OneBodySOInt* so_multipoles(int order);
462 
466 
468  virtual OneBodyAOInt* ao_nabla(int deriv=0);
469  virtual OneBodySOInt* so_nabla(int deriv=0);
470 
472  virtual OneBodyAOInt* ao_angular_momentum(int deriv=0);
473  virtual OneBodySOInt* so_angular_momentum(int deriv=0);
474 
476  virtual OneBodyAOInt* ao_efp_multipole_potential(int deriv=0);
477  virtual OneBodySOInt* so_efp_multipole_potential(int deriv=0);
478 
480  virtual OneBodyAOInt *electric_field();
481 
483  virtual OneBodyAOInt *electrostatic();
484 
487  virtual OneBodyAOInt *pcm_potentialint();
488 
490  virtual TwoBodyAOInt* eri(int deriv=0, bool use_shell_pairs=true);
491 
493  virtual TwoBodyAOInt* erd_eri(int deriv=0, bool use_shell_pairs=true);
494 
496  virtual TwoBodyAOInt* erf_eri(double omega, int deriv=0, bool use_shell_pairs=true);
497 
499  virtual TwoBodyAOInt* erf_complement_eri(double omega, int deriv=0, bool use_shell_pairs=true);
500 
502  virtual TwoBodyAOInt* f12(std::shared_ptr<CorrelationFactor> cf, int deriv=0, bool use_shell_pairs=true);
503 
505  virtual TwoBodyAOInt* f12_scaled(std::shared_ptr<CorrelationFactor> cf, int deriv=0, bool use_shell_pairs=true);
506 
508  virtual TwoBodyAOInt* f12_squared(std::shared_ptr<CorrelationFactor> cf, int deriv=0, bool use_shell_pairs=true);
509 
511  virtual TwoBodyAOInt* f12g12(std::shared_ptr<CorrelationFactor> cf, int deriv=0, bool use_shell_pairs=true);
512 
514  virtual TwoBodyAOInt* f12_double_commutator(std::shared_ptr<CorrelationFactor> cf, int deriv=0, bool use_shell_pairs=true);
515 
517  AOIntegralsIterator integrals_iterator(int p, int q, int r, int s);
518 
522 
524  virtual void init_spherical_harmonics(int max_am);
525 
527  const SphericalTransform* spherical_transform(int am) const { return &(spherical_transforms_[am]); }
528 
529  // Return spherical transform object for am
530  std::vector<SphericalTransform>& spherical_transform() { return spherical_transforms_; }
531 
533  SphericalTransformIter* spherical_transform_iter(int am, int inv=0, int subl=-1) const;
534 
536  CartesianIter* cartesian_iter(int l) const;
543  ShellRotation shell_rotation(int am, SymmetryOperation&, int pure=0) const;
544 };
545 
546 }
547 
548 #endif
void init(int a, int b, int c, double coef, int cartindex, int pureindex)
Definition: libmints/transform.cc:49
Definition: integral.h:113
double coef() const
Returns the transformation coefficient of component i.
Definition: integral.h:177
virtual OneBodyAOInt * ao_kinetic(int deriv=0)
Returns an OneBodyInt that computes the kinetic energy integral.
Definition: integral.cc:131
Definition: onebody.h:55
virtual OneBodyAOInt * ao_angular_momentum(int deriv=0)
Returns an OneBodyInt that computes the nabla integral.
Definition: integral.cc:207
int r() const
Definition: integral.h:265
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:237
std::shared_ptr< BasisSet > bs2_
Definition: integral.h:248
Definition: integral.h:228
int a() const
Returns the Cartesian basis function&#39;s x exponent of component i.
Definition: integral.h:179
virtual TwoBodyAOInt * eri(int deriv=0, bool use_shell_pairs=true)
Returns an ERI integral object.
Definition: integral.cc:279
Definition: integral.h:341
void first()
Definition: integral.h:165
int jjmax
Definition: integral.h:208
bool end_of_PK
Definition: integral.h:280
bool is_done()
Definition: integral.h:335
std::shared_ptr< BasisSet > bs2_
Center 2 basis set.
Definition: integral.h:391
void next()
Definition: integraliter.cc:282
void next()
Definition: integraliter.cc:403
bool is_done()
Definition: integral.h:375
int usj_arr[3]
Definition: integral.h:352
Definition: integral.h:85
int upk
Definition: integral.h:241
int a_
Definition: integral.h:88
int p() const
Definition: integral.h:263
Definition: shellrotation.h:36
AOShellCombinationsIterator * shells_iterator_ptr()
Definition: integral.cc:342
virtual OneBodyAOInt * ao_rel_potential(int deriv=0)
Returns an OneBodyInt that computes the relativistic nuclear attraction integral. ...
Definition: integral.cc:153
std::shared_ptr< SOBasisSet > bs4_
Definition: integral.h:294
int l(int i)
Return a component of the transform.
Definition: integral.h:185
Definition: integral.h:314
int P
Definition: integral.h:318
int uskk
Definition: integral.h:241
virtual OneBodyAOInt * ao_overlap(int deriv=0)
Returns an OneBodyInt that computes the overlap integral.
Definition: integral.cc:115
int num_unique_pk
Definition: integral.h:287
int ii
Definition: integral.h:208
RS_Pair current
Definition: integral.h:351
int s() const
Definition: integral.h:310
std::shared_ptr< SOBasisSet > bs1_
Definition: integral.h:291
int usl_arr[3]
Definition: integral.h:352
const GaussianShell & usk
Definition: integral.h:203
std::vector< SphericalTransform > & spherical_transform()
Definition: integral.h:530
const GaussianShell & usi
Definition: integral.h:201
int p() const
Definition: integral.h:377
int k() const
Definition: integral.h:221
int kk
Definition: integral.h:208
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:306
int r() const
Definition: integral.h:309
int cartindex_
Definition: integral.h:89
const GaussianShell & usl
Definition: integral.h:204
double coef() const
Returns the coefficient of this component of the transformation.
Definition: integral.h:105
int R
Definition: integral.h:347
virtual TwoBodyAOInt * f12g12(std::shared_ptr< CorrelationFactor > cf, int deriv=0, bool use_shell_pairs=true)
Returns an F12G12 integral object.
Definition: integral.cc:316
int jj
Definition: integral.h:208
Definition: twobody.h:60
AOShellCombinationsIterator()
Definition: integraliter.cc:227
int pureindex() const
Returns the index of the spherical harmonic basis function.
Definition: integral.h:103
Definition: pointgrp.h:105
virtual OneBodyAOInt * ao_pseudospectral(int deriv=0)
Returns the OneBodyInt that computes the pseudospectral grid integrals.
Definition: integral.cc:164
unsigned int index
Definition: integral.h:197
Definition: cartesianiter.h:77
int c(int i) const
Returns the Cartesian basis function&#39;s z exponent of component i.
Definition: integral.h:138
int j() const
Definition: integral.h:220
Integral current
Definition: integral.h:200
int usk_arr[3]
Definition: integral.h:240
int pureindex_
Definition: integral.h:89
std::shared_ptr< SOBasisSet > bs2_
Definition: integral.h:292
bool is_done()
Definition: integral.h:305
int usk_arr[3]
Definition: integral.h:284
SphericalTransformIter(const SphericalTransform &trans)
Definition: integral.h:163
void first()
Definition: integraliter.cc:246
bool done
Definition: integral.h:357
Definition: integral.h:156
int c() const
Returns the exponent of z.
Definition: integral.h:99
int cartindex() const
Returns the index of the Cartesian basis function.
Definition: integral.h:101
int usi_arr[3]
Definition: integral.h:240
void next()
Definition: integral.h:166
int b_
Definition: integral.h:88
virtual OneBodyAOInt * ao_nabla(int deriv=0)
Returns an OneBodyInt that computes the nabla integral.
Definition: integral.cc:196
int l() const
Definition: integral.h:222
virtual OneBodySOInt * so_quadrupole()
Definition: integral.cc:223
ShellQuartet current
Definition: integral.h:239
void first()
Definition: integraliter.cc:83
int Q
Definition: integral.h:319
int kkmax
Definition: integral.h:208
bool done
Definition: integral.h:206
std::shared_ptr< SOBasisSet > bs2_
Definition: integral.h:360
Definition: integral.h:317
SOShellCombinationsIterator()
Definition: integraliter.cc:367
int llmax
Definition: integral.h:208
int upk
Definition: integral.h:285
int usii
Definition: integral.h:285
std::shared_ptr< SOBasisSet > bs1_
Definition: integral.h:359
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:311
int p() const
Definition: integral.h:337
std::shared_ptr< BasisSet > basis4() const
Return the basis set on center 4.
Definition: integral.cc:98
SO_PQ_Iterator()
Definition: integraliter.cc:487
int usii
Definition: integral.h:353
int i
Definition: integral.h:193
AOIntegralsIterator(const GaussianShell &s1, const GaussianShell &s2, const GaussianShell &s3, const GaussianShell &s4)
Definition: integraliter.cc:45
int j
Definition: integral.h:194
int cartindex() const
Returns the Cartesian basis function index of component i.
Definition: integral.h:173
Definition: integral.h:189
double coef(int i) const
Returns the transformation coefficient of component i.
Definition: integral.h:132
int b() const
Returns the Cartesian basis function&#39;s y exponent of component i.
Definition: integral.h:181
int b(int i) const
Returns the Cartesian basis function&#39;s y exponent of component i.
Definition: integral.h:136
virtual OneBodyAOInt * ao_potential(int deriv=0)
Returns an OneBodyInt that computes the nuclear attraction integral.
Definition: integral.cc:142
int pureindex() const
Returns the spherical harmonic basis index of component i.
Definition: integral.h:175
std::shared_ptr< BasisSet > bs4_
Definition: integral.h:250
int l_
Definition: integral.h:117
int cartindex(int i) const
Returns the Cartesian basis function index of component i.
Definition: integral.h:128
int usl_arr[3]
Definition: integral.h:284
int c_
Definition: integral.h:88
ISphericalTransform()
Definition: libmints/transform.cc:124
int ii
Definition: integral.h:323
int c() const
Returns the Cartesian basis function&#39;s z exponent of component i.
Definition: integral.h:183
std::vector< SphericalTransformComponent > components_
Definition: integral.h:116
std::shared_ptr< BasisSet > basis2() const
Return the basis set on center 2.
Definition: integral.cc:88
int n() const
Returns the number of components in the transformation.
Definition: integral.h:140
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:103
int jj
Definition: integral.h:323
int b() const
Returns the exponent of y.
Definition: integral.h:97
void first()
Definition: integraliter.cc:381
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:347
void next()
Definition: integraliter.cc:501
int usii
Definition: integral.h:241
int usll
Definition: integral.h:241
int usl_arr[3]
Definition: integral.h:240
int index() const
Definition: integral.h:223
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:291
PQ_Pair current
Definition: integral.h:322
int r() const
Definition: integral.h:379
Definition: integral.h:192
int fij
Definition: integral.h:209
bool is_done()
Definition: integral.h:167
bool end_of_PK
Definition: integral.h:236
std::shared_ptr< BasisSet > bs4_
Center 4 basis set.
Definition: integral.h:395
std::vector< ISphericalTransform > ispherical_transforms_
Provides ability to transform from sphericals (d=0, f=1, g=2)
Definition: integral.h:400
virtual OneBodyAOInt * electrostatic()
Returns an OneBodyInt that computes the point electrostatic potential.
Definition: integral.cc:175
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:296
int usi_arr[3]
Definition: integral.h:352
std::shared_ptr< BasisSet > bs3_
Center 3 basis set.
Definition: integral.h:393
int ll
Definition: integral.h:208
Definition: sointegral_onebody.h:39
AOShellCombinationsIterator shells_iterator()
Returns an ERI iterator object, only coded for standard ERIs.
Definition: integral.cc:337
virtual void init()
Definition: libmints/transform.cc:137
PRAGMA_WARNING_PUSH PRAGMA_WARNING_IGNORE_DEPRECATED_DECLARATIONS PRAGMA_WARNING_POP
Definition: integraliter.cc:42
bool done
Definition: integral.h:289
int l() const
Returns the angular momentum.
Definition: integral.h:142
int end_of_PK() const
Definition: integral.h:267
int usjj
Definition: integral.h:241
virtual OneBodySOInt * so_rel_potential(int deriv=0)
Definition: integral.cc:158
int num_unique_pk
Definition: integral.h:355
virtual void init_spherical_harmonics(int max_am)
Initializes spherical harmonic transformations.
Definition: integral.cc:326
int i_
Definition: integral.h:160
int end_of_PK() const
Definition: integral.h:311
int q() const
Definition: integral.h:264
int fik
Definition: integral.h:209
RedundantCartesianSubIter * redundant_cartesian_sub_iter(int l) const
Return a new rudundant Cartesian sub iterator.
Definition: integral.cc:362
int nl
Definition: integral.h:209
CartesianIter * cartesian_iter(int l) const
Return a new Cartesian iterator.
Definition: integral.cc:352
virtual OneBodyAOInt * electric_field()
Returns an OneBodyInt that computes the electric field.
Definition: integral.cc:262
ShellQuartet current
Definition: integral.h:283
int P
Definition: integral.h:345
std::shared_ptr< BasisSet > bs1_
Center 1 basis set.
Definition: integral.h:389
virtual OneBodyAOInt * ao_efp_multipole_potential(int deriv=0)
Returns a OneBodyInt that computes the multipole potential integrals for EFP.
Definition: integral.cc:234
int q() const
Definition: integral.h:378
std::shared_ptr< BasisSet > bs1_
Definition: integral.h:247
int q() const
Definition: integral.h:308
std::shared_ptr< BasisSet > basis1() const
Return the basis set on center 1.
Definition: integral.cc:83
virtual OneBodyAOInt * ao_quadrupole()
Returns an OneBodyInt that computes the quadrupole integral.
Definition: integral.cc:218
int usi_arr[3]
Definition: integral.h:284
std::shared_ptr< BasisSet > basis3() const
Return the basis set on center 3.
Definition: integral.cc:93
int upk
Definition: integral.h:353
void first()
Definition: integraliter.cc:540
Gaussian orbital shell.
Definition: gshell.h:191
virtual OneBodySOInt * so_efp_multipole_potential(int deriv=0)
Definition: integral.cc:239
int ni
Definition: integral.h:209
void next()
Definition: integraliter.cc:116
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:267
int k
Definition: integral.h:195
int usj_arr[3]
Definition: integral.h:284
Definition: integral.h:385
CCTransform * trans
Definition: psimrcc/main.cc:79
AOIntegralsIterator integrals_iterator()
Definition: integraliter.cc:232
bool is_done()
Definition: integral.h:217
virtual OneBodyAOInt * pcm_potentialint()
Definition: integral.cc:180
int usj_arr[3]
Definition: integral.h:240
virtual OneBodySOInt * so_traceless_quadrupole()
Definition: integral.cc:256
std::vector< SphericalTransform > spherical_transforms_
Provides ability to transform to sphericals (d=0, f=1, g=2)
Definition: integral.h:398
int s() const
Definition: integral.h:380
int S
Definition: integral.h:348
int a() const
Returns the exponent of x.
Definition: integral.h:95
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:321
virtual OneBodySOInt * so_angular_momentum(int deriv=0)
Definition: integral.cc:212
int l
Definition: integral.h:196
Definition: integral.h:344
int pureindex(int i) const
Returns the spherical harmonic basis index of component i.
Definition: integral.h:130
virtual void init()
Definition: libmints/transform.cc:74
virtual ThreeCenterOverlapInt * overlap_3c()
Returns a ThreeCenterOverlapINt that computes the overlap between three centers.
Definition: integral.cc:126
int fil
Definition: integral.h:209
double coef_
Definition: integral.h:91
Definition: cartesianiter.h:160
std::shared_ptr< BasisSet > bs3_
Definition: integral.h:249
int n() const
Returns how many transforms are in this iterator.
Definition: integral.h:170
virtual OneBodySOInt * so_nabla(int deriv=0)
Definition: integral.cc:201
void next()
Definition: integraliter.cc:590
int uskk
Definition: integral.h:353
int q() const
Definition: integral.h:338
int usjj
Definition: integral.h:353
int num_unique_pk
Definition: integral.h:243
SO_RS_Iterator()
Definition: integraliter.cc:535
int usk_arr[3]
Definition: integral.h:352
virtual OneBodySOInt * so_overlap(int deriv=0)
Returns an OneBodyInt that computes the overlap integral.
Definition: integral.cc:120
std::shared_ptr< SOBasisSet > bs4_
Definition: integral.h:362
const GaussianShell & usj
Definition: integral.h:202
int usll
Definition: integral.h:285
int uskk
Definition: integral.h:285
int a(int i) const
Returns the Cartesian basis function&#39;s x exponent of component i.
Definition: integral.h:134
int s() const
Definition: integral.h:266
std::shared_ptr< SOBasisSet > bs1_
Definition: integral.h:327
IntegralFactory(std::shared_ptr< BasisSet > bs1, std::shared_ptr< BasisSet > bs2, std::shared_ptr< BasisSet > bs3, std::shared_ptr< BasisSet > bs4)
Definition: integral.cc:60
int i() const
Definition: integral.h:219
RedundantCartesianIter * redundant_cartesian_iter(int l) const
Return a new rudundant Cartesian iterator.
Definition: integral.cc:357
virtual ~IntegralFactory()
Definition: integral.cc:78
int p() const
Definition: integral.h:307
virtual OneBodyAOInt * ao_traceless_quadrupole()
Returns an OneBodyInt that computes the traceless quadrupole integral.
Definition: integral.cc:251
Definition: cartesianiter.h:35
virtual OneBodySOInt * so_pseudospectral(int deriv=0)
Definition: integral.cc:169
int subl_
Definition: integral.h:118
virtual OneBodySOInt * so_potential(int deriv=0)
Definition: integral.cc:147
int usjj
Definition: integral.h:285
int nj
Definition: integral.h:209
int nk
Definition: integral.h:209
Definition: pointgrp.h:140
void first()
Definition: integraliter.cc:492
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:372
bool done
Definition: integral.h:325
const SphericalTransform & trans_
Definition: integral.h:159
virtual OneBodySOInt * so_dipole(int deriv=0)
Definition: integral.cc:190
virtual ~SphericalTransform()
Definition: integral.h:125
SphericalTransformIter * spherical_transform_iter(int am, int inv=0, int subl=-1) const
Return a spherical transform iterator object for am.
Definition: integral.cc:373
int usll
Definition: integral.h:353
int Q
Definition: integral.h:346
ShellRotation shell_rotation(int am, SymmetryOperation &, int pure=0) const
Definition: integral.cc:367
std::shared_ptr< SOBasisSet > bs3_
Definition: integral.h:361
virtual OneBodyAOInt * ao_multipoles(int order)
Returns an OneBodyInt that computes arbitrary-order multipole integrals.
Definition: integral.cc:229
SphericalTransform()
Definition: libmints/transform.cc:61
virtual OneBodyAOInt * ao_dipole(int deriv=0)
Returns an OneBodyInt that computes the dipole integral.
Definition: integral.cc:185
virtual TwoBodyAOInt * f12(std::shared_ptr< CorrelationFactor > cf, int deriv=0, bool use_shell_pairs=true)
Returns an F12 integral object.
Definition: integral.cc:301
virtual OneBodySOInt * so_multipoles(int order)
Definition: integral.cc:245
std::shared_ptr< SOBasisSet > bs3_
Definition: integral.h:293
int iimax
Definition: integral.h:208
const SphericalTransform * spherical_transform(int am) const
Return spherical transform object for am.
Definition: integral.h:527
bool done
Definition: integral.h:245
bool is_done()
Definition: integral.h:261
int fii
Definition: integral.h:209
virtual OneBodySOInt * so_kinetic(int deriv=0)
Definition: integral.cc:136
Definition: integral.h:272