MPQC 3.0.0-alpha
Loading...
Searching...
No Matches
tbint.h
1//
2// tbint.h
3//
4// Copyright (C) 1996 Limit Point Systems, Inc.
5//
6// Author: Edward Seidl <seidl@janed.com>
7// Maintainer: LPS
8//
9// This file is part of the SC Toolkit.
10//
11// The SC Toolkit is free software; you can redistribute it and/or modify
12// it under the terms of the GNU Library General Public License as published by
13// the Free Software Foundation; either version 2, or (at your option)
14// any later version.
15//
16// The SC Toolkit 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 Library General Public License for more details.
20//
21// You should have received a copy of the GNU Library General Public License
22// along with the SC Toolkit; see the file COPYING.LIB. If not, write to
23// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
24//
25// The U.S. Government is granted a limited license as per AL 91-7.
26//
27
28#ifndef _chemistry_qc_basis_tbint_h
29#define _chemistry_qc_basis_tbint_h
30
31#include <util/ref/ref.h>
32#include <util/group/message.h>
33#include <util/container/stdarray.h>
34#include <chemistry/qc/basis/gaussbas.h>
35#include <chemistry/qc/basis/dercent.h>
36#include <chemistry/qc/basis/operator.h>
37#include <chemistry/qc/basis/obint.h>
38
39namespace sc {
40
41// //////////////////////////////////////////////////////////////////////////
42
43class Integral;
44
57
61class TwoBodyInt : public RefCount {
62
63 private:
64 double *log2_to_double_;
65
66 protected:
67 // this is who created me
68 Integral *integral_;
69
74
75 double *buffer_;
76
77 int redundant_;
78
80 const Ref<GaussianBasisSet>&bs1,
81 const Ref<GaussianBasisSet>&bs2,
82 const Ref<GaussianBasisSet>&bs3,
83 const Ref<GaussianBasisSet>&bs4);
84 public:
85 virtual ~TwoBodyInt();
86
88 int nbasis() const;
89
91 int nbasis1() const;
93 int nbasis2() const;
95 int nbasis3() const;
97 int nbasis4() const;
98
100 int nshell() const;
101
103 int nshell1() const;
105 int nshell2() const;
107 int nshell3() const;
109 int nshell4() const;
110
116 Ref<GaussianBasisSet> basis(size_t c = 0) const;
117
126
130 virtual TwoBodyOperSet::type type() const =0;
132 virtual const Ref<TwoBodyOperSetDescr>& descr() const =0;
133
138 virtual const double * buffer(TwoBodyOper::type type = TwoBodyOper::eri) const;
139
143 virtual void compute_shell(int,int,int,int) = 0;
144
151 std::pair<std::map<TwoBodyOper::type,const double*>,std::array<unsigned long,4> >
152 compute_shell_arrays(int,int,int,int);
153
157 virtual int log2_shell_bound(int= -1,int= -1,int= -1,int= -1) = 0;
158
162 double shell_bound(int= -1,int= -1,int= -1,int= -1);
163
166 virtual int redundant() const { return redundant_; }
168 virtual void set_redundant(int i) { redundant_ = i; }
169
171 virtual void set_integral_storage(size_t storage);
172
175 virtual bool cloneable() const;
176
180
182 Integral *integral() const { return integral_; }
183
184};
185
186// //////////////////////////////////////////////////////////////////////////
187
192
193 private:
194 double *log2_to_double_;
195
196 protected:
197 // this is who created me
198 Integral *integral_;
199
203
204 double *buffer_;
205
206 int redundant_;
207
209 const Ref<GaussianBasisSet>&bs1,
210 const Ref<GaussianBasisSet>&bs2,
211 const Ref<GaussianBasisSet>&bs3);
212 public:
213 virtual ~TwoBodyThreeCenterInt();
214
216 int nbasis() const;
217
219 int nbasis1() const;
221 int nbasis2() const;
223 int nbasis3() const;
224
226 int nshell() const;
227
229 int nshell1() const;
231 int nshell2() const;
233 int nshell3() const;
234
240 Ref<GaussianBasisSet> basis(size_t c = 0) const;
241
248
252 virtual TwoBodyOperSet::type type() const =0;
254 virtual const Ref<TwoBodyOperSetDescr>& descr() const =0;
255
260 virtual const double * buffer(TwoBodyOper::type type = TwoBodyOper::eri) const;
261
265 virtual void compute_shell(int,int,int) = 0;
266
270 virtual int log2_shell_bound(int= -1,int= -1,int= -1) = 0;
271
275 double shell_bound(int= -1,int= -1,int= -1);
276
279 int redundant() const { return redundant_; }
281 void set_redundant(int i) { redundant_ = i; }
282
284 virtual void set_integral_storage(size_t storage);
285
288 virtual bool cloneable() const;
289
293
295 Integral *integral() const { return integral_; }
296
297};
298
299// //////////////////////////////////////////////////////////////////////////
300
306
307 private:
308 double *log2_to_double_;
309
310 protected:
311 // this is who created me
312 Integral *integral_;
313
316
317 double *buffer_;
318
319 int redundant_;
320
322 const Ref<GaussianBasisSet>&bs1,
323 const Ref<GaussianBasisSet>&bs2);
324 public:
325 virtual ~TwoBodyTwoCenterInt();
326
328 int nbasis() const;
329
331 int nbasis1() const;
333 int nbasis2() const;
334
336 int nshell() const;
337
339 int nshell1() const;
341 int nshell2() const;
342
348 Ref<GaussianBasisSet> basis(size_t c = 0) const;
349
354
358 virtual TwoBodyOperSet::type type() const =0;
360 virtual const Ref<TwoBodyOperSetDescr>& descr() const =0;
361
366 virtual const double * buffer(TwoBodyOper::type type = TwoBodyOper::eri) const;
367
371 virtual void compute_shell(int,int) = 0;
372
376 virtual int log2_shell_bound(int= -1,int= -1) = 0;
377
381 double shell_bound(int= -1,int= -1);
382
385 int redundant() const { return redundant_; }
387 void set_redundant(int i) { redundant_ = i; }
388
390 virtual void set_integral_storage(size_t storage);
391
394 virtual bool cloneable() const;
395
399
401 Integral *integral() const { return integral_; }
402
403};
404
405// //////////////////////////////////////////////////////////////////////////
406
408 protected:
409 const double * buf;
410 double scale_;
411
412 int redund_;
413
414 int e12;
415 int e34;
416 int e13e24;
417
418 int index;
419
420 int istart;
421 int jstart;
422 int kstart;
423 int lstart;
424
425 int iend;
426 int jend;
427 int kend;
428 int lend;
429
430 int icur;
431 int jcur;
432 int kcur;
433 int lcur;
434
435 int i_;
436 int j_;
437 int k_;
438 int l_;
439
440 public:
442 virtual ~ShellQuartetIter();
443
444 virtual void init(const double *,
445 int, int, int, int,
446 int, int, int, int,
447 int, int, int, int,
448 double, int);
449
450 virtual void start();
451 virtual void next();
452
453 int ready() const { return icur < iend; }
454
455 int i() const { return i_; }
456 int j() const { return j_; }
457 int k() const { return k_; }
458 int l() const { return l_; }
459
460 int nint() const { return iend*jend*kend*lend; }
461
462 double val() const { return buf[index]*scale_; }
463};
464
466 protected:
467 Ref<TwoBodyInt> tbi;
469
470 int iend;
471
472 int icur;
473 int jcur;
474 int kcur;
475 int lcur;
476
477 public:
480
481 virtual ~TwoBodyIntIter();
482
483 virtual void start();
484 virtual void next();
485
486 int ready() const { return (icur < iend); }
487
488 int ishell() const { return icur; }
489 int jshell() const { return jcur; }
490 int kshell() const { return kcur; }
491 int lshell() const { return lcur; }
492
493 virtual double scale() const;
494
495 ShellQuartetIter& current_quartet();
496};
497
498// //////////////////////////////////////////////////////////////////////////
499
501 protected:
502 Ref<TwoBodyTwoCenterInt> tbi; // help me obi wan
504 ShellPairIter spi;
505
506 int redund;
507
508 int istart;
509 int jstart;
510
511 int iend;
512 int jend;
513
514 int icur;
515 int jcur;
516
517 int ij;
518
519 public:
523 virtual ~TwoBodyTwoCenterIntIter();
524
525 virtual void start(int ist=0, int jst=0, int ien=0, int jen=0);
526 virtual void next();
527
528 int ready() const { return (icur < iend); }
529
530 int ishell() const { return icur; }
531 int jshell() const { return jcur; }
532
533 int ijshell() const { return ij; }
534
535 int redundant() const { return redund; }
536 void set_redundant(int i) { redund=i; }
537
538 virtual double scale() const;
539
540 Ref<TwoBodyTwoCenterInt> two_body_int() { return tbi; }
541
542 ShellPairIter& current_pair();
543
544 virtual bool cloneable() const;
545 virtual Ref<TwoBodyTwoCenterIntIter> clone();
546};
547
548// //////////////////////////////////////////////////////////////////////////
549
554class TwoBodyDerivInt : public RefCount {
555
556 private:
557 double *log2_to_double_;
558
559 protected:
560 // this is who created me
561 Integral *integral_;
562
567
568 double *buffer_;
569
571 const Ref<GaussianBasisSet>&b1,
572 const Ref<GaussianBasisSet>&b2,
573 const Ref<GaussianBasisSet>&b3,
574 const Ref<GaussianBasisSet>&b4);
575 public:
576 virtual ~TwoBodyDerivInt();
577
579 int nbasis() const;
580
582 int nbasis1() const;
584 int nbasis2() const;
586 int nbasis3() const;
588 int nbasis4() const;
589
591 int nshell() const;
592
594 int nshell1() const;
596 int nshell2() const;
598 int nshell3() const;
600 int nshell4() const;
601
604
613
632 const double * buffer() const;
633
642 virtual void compute_shell(int sh0, int sh1, int sh2, int sh3,
643 DerivCenters& dercenters) = 0;
644
647 virtual int log2_shell_bound(int= -1,int= -1,int= -1,int= -1) = 0;
648
651 double shell_bound(int= -1,int= -1,int= -1,int= -1);
652
654 Integral *integral() const { return integral_; }
655
658 virtual bool cloneable() const;
659
663
664};
665
666// //////////////////////////////////////////////////////////////////////////
667
672
673 private:
674 double *log2_to_double_;
675
676 protected:
677 // this is who created me
678 Integral *integral_;
679
683
684 double *buffer_;
685
687 const Ref<GaussianBasisSet>&b1,
688 const Ref<GaussianBasisSet>&b2,
689 const Ref<GaussianBasisSet>&b3);
690 public:
692
694 int nbasis() const;
695
697 int nbasis1() const;
699 int nbasis2() const;
701 int nbasis3() const;
702
704 int nshell() const;
705
707 int nshell1() const;
709 int nshell2() const;
711 int nshell3() const;
712
715
722
726 const double * buffer() const;
727
730 virtual void compute_shell(int,int,int,DerivCenters&) = 0;
731
734 virtual int log2_shell_bound(int= -1,int= -1,int= -1) = 0;
735
738 double shell_bound(int= -1,int= -1,int= -1);
739
740};
741
742// //////////////////////////////////////////////////////////////////////////
743
748
749 private:
750 double *log2_to_double_;
751
752 protected:
753 // this is who created me
754 Integral *integral_;
755
758
759 double *buffer_;
760
762 const Ref<GaussianBasisSet>&b1,
763 const Ref<GaussianBasisSet>&b2);
764 public:
766
768 int nbasis() const;
769
771 int nbasis1() const;
773 int nbasis2() const;
774
776 int nshell() const;
777
779 int nshell1() const;
781 int nshell2() const;
782
785
790
794 const double * buffer() const;
795
798 virtual void compute_shell(int,int,DerivCenters&) = 0;
799
802 virtual int log2_shell_bound(int= -1,int= -1) = 0;
803
806 double shell_bound(int= -1,int= -1);
807
808};
809
811
814 protected:
816
817 public:
820 virtual ~TwoBodyTwoCenterIntOp();
821
824 void process_spec_ltri(SCMatrixLTriBlock*);
825 void process_spec_rectsub(SCMatrixRectSubBlock*);
826 void process_spec_ltrisub(SCMatrixLTriSubBlock*);
827
828 bool cloneable() const;
830
832};
833
834// //////////////////////////////////////////////////////////////////////////
835
839class TwoBodyIntEval : public RefCount {
840
841 private:
842 double *log2_to_double_;
843
844 protected:
845 // this is who created me
846 Integral *integral_;
847
848 std::vector< Ref<GaussianBasisSet> > bs_;
849 double *buffer_;
850
851 int redundant_;
852
854 const std::vector< Ref<GaussianBasisSet> >&bs);
855
856 public:
857 virtual ~TwoBodyIntEval();
858
861
865 virtual TwoBodyOperSet::type type() const =0;
867 virtual const Ref<TwoBodyOperSetDescr>& descr() const =0;
868
873 virtual const double * buffer(TwoBodyOper::type type = TwoBodyOper::eri) const;
874
878 virtual void compute_shell(int,int,int,int) = 0;
879
886 std::pair<std::map<TwoBodyOper::type,const double*>,std::array<unsigned long,4> >
887 compute_shell_arrays(int,int,int,int);
888
892 virtual int log2_shell_bound(int= -1,int= -1,int= -1,int= -1) = 0;
893
897 double shell_bound(int= -1,int= -1,int= -1,int= -1);
898
901 virtual int redundant() const { return redundant_; }
903 virtual void set_redundant(int i) { redundant_ = i; }
904
906 virtual void set_integral_storage(size_t storage);
907
910 virtual bool cloneable() const;
911
915
917 Integral *integral() const { return integral_; }
918
919};
920
921
922} // end of namespace sc
923
924// //////////////////////////////////////////////////////////////////////////
925
926#endif
927
928// Local Variables:
929// mode: c++
930// c-file-style: "ETS"
931// End:
DerivCenters keeps track the centers that derivatives are taken with respect to.
Definition dercent.h:42
The Integral abstract class acts as a factory to provide objects that compute one and two electron in...
Definition integral.h:111
The base class for all reference counted objects.
Definition ref.h:192
A template class that maintains references counts.
Definition ref.h:361
Objects of class SCElementOp are used to perform operations on the elements of matrices.
Definition elemop.h:94
The SCMatrixBlockIter class is used to described iterates that loop through the elements in a block.
Definition blkiter.h:46
The SCMatrixLTriBlock describes a triangular piece of a matrix.
Definition block.h:253
The SCMatrixLTriSubBlock describes a triangular subblock of a matrix.
Definition block.h:288
The SCMatrixRectBlock describes a rectangular piece of a matrix.
Definition block.h:183
The SCMatrixRectSubBlock describes a rectangular piece of a matrix.
Definition block.h:219
Definition obint.h:195
Definition tbint.h:407
This is an abstract base type for classes that compute geometric derivatives of the integrals involvi...
Definition tbint.h:554
int nshell2() const
Return the number of shells on center two.
int nbasis() const
Return the number of basis functions on center one.
int nshell3() const
Return the number of shells on center three.
int nshell1() const
Return the number of shells on center one.
virtual int log2_shell_bound(int=-1, int=-1, int=-1, int=-1)=0
Return log base 2 of the maximum magnitude of any integral in a shell block.
Integral * integral() const
Return the integral factory that was used to create this object.
Definition tbint.h:654
Ref< GaussianBasisSet > basis1() const
Return the basis set on center one.
double shell_bound(int=-1, int=-1, int=-1, int=-1)
Return the maximum magnitude of any integral in a shell block.
int nshell4() const
Return the number of shells on center four.
int nbasis3() const
Return the number of basis functions on center three.
int nbasis2() const
Return the number of basis functions on center two.
virtual void compute_shell(int sh0, int sh1, int sh2, int sh3, DerivCenters &dercenters)=0
Given for shell indices, this will cause the derivative integral shell set to be computed.
Ref< GaussianBasisSet > basis() const
Return the basis set on center one.
Ref< GaussianBasisSet > basis3() const
Return the basis set on center three.
int nbasis1() const
Return the number of basis functions on center one.
virtual bool cloneable() const
Return true if the clone member can be called.
const double * buffer() const
The computed shell-set of integrals will be put in the buffer returned by this member.
Ref< GaussianBasisSet > basis2() const
Return the basis set on center two.
virtual Ref< TwoBodyDerivInt > clone()
Returns a clone of this.
Ref< GaussianBasisSet > basis4() const
Return the basis set on center four.
int nbasis4() const
Return the number of basis functions on center four.
int nshell() const
Return the number of shells on center one.
This is an abstract base type for classes that compute integrals involving two electrons and 2 functi...
Definition tbint.h:839
virtual const double * buffer(TwoBodyOper::type type=TwoBodyOper::eri) const
The computed shell integrals will be put in the buffer returned by this member.
virtual const Ref< TwoBodyOperSetDescr > & descr() const =0
return the operator set descriptor
virtual bool cloneable() const
Return true if the clone member can be called.
virtual void set_redundant(int i)
See redundant().
Definition tbint.h:903
virtual void compute_shell(int, int, int, int)=0
Given four shell indices, integrals will be computed and placed in the buffer.
std::pair< std::map< TwoBodyOper::type, const double * >, std::array< unsigned long, 4 > > compute_shell_arrays(int, int, int, int)
Given four shell indices, supported two body integral types are computed and returned.
virtual void set_integral_storage(size_t storage)
This storage is used to cache computed integrals.
Integral * integral() const
Return the integral factory that was used to create this object.
Definition tbint.h:917
virtual TwoBodyOperSet::type type() const =0
Returns the type of the operator set that this object computes.
virtual Ref< TwoBodyIntEval > clone()
Returns a clone of this.
virtual int log2_shell_bound(int=-1, int=-1, int=-1, int=-1)=0
Return log base 2 of the maximum magnitude of any integral in a shell block obtained from compute_she...
double shell_bound(int=-1, int=-1, int=-1, int=-1)
Return the maximum magnitude of any integral in a shell block obtained from compute_shell.
virtual int redundant() const
If redundant is true, then keep redundant integrals in the buffer.
Definition tbint.h:901
Ref< GaussianBasisSet > basis(size_t C) const
Return the basis set on center C.
Definition tbint.h:465
This is an abstract base type for classes that compute integrals involving two electrons and 2 functi...
Definition tbint.h:61
virtual void set_integral_storage(size_t storage)
This storage is used to cache computed integrals.
int nbasis2() const
Return the number of basis functions on center two.
virtual int redundant() const
If redundant is true, then keep redundant integrals in the buffer.
Definition tbint.h:166
virtual int log2_shell_bound(int=-1, int=-1, int=-1, int=-1)=0
Return log base 2 of the maximum magnitude of any integral in a shell block obtained from compute_she...
std::pair< std::map< TwoBodyOper::type, const double * >, std::array< unsigned long, 4 > > compute_shell_arrays(int, int, int, int)
Given four shell indices, supported two body integral types are computed and returned.
int nbasis3() const
Return the number of basis functions on center three.
virtual void set_redundant(int i)
See redundant().
Definition tbint.h:168
virtual const Ref< TwoBodyOperSetDescr > & descr() const =0
return the operator set descriptor
virtual bool cloneable() const
Return true if the clone member can be called.
int nbasis1() const
Return the number of basis functions on center one.
int nshell2() const
Return the number of shells on center two.
int nshell3() const
Return the number of shells on center three.
virtual Ref< TwoBodyInt > clone()
Returns a clone of this.
int nbasis4() const
Return the number of basis functions on center four.
int nshell1() const
Return the number of shells on center one.
virtual void compute_shell(int, int, int, int)=0
Given four shell indices, integrals will be computed and placed in the buffer.
int nshell() const
Return the number of shells on center one.
double shell_bound(int=-1, int=-1, int=-1, int=-1)
Return the maximum magnitude of any integral in a shell block obtained from compute_shell.
int nbasis() const
Return the number of basis functions on center one.
virtual const double * buffer(TwoBodyOper::type type=TwoBodyOper::eri) const
The computed shell integrals will be put in the buffer returned by this member.
Ref< GaussianBasisSet > basis4() const
Return the basis set on center four.
int nshell4() const
Return the number of shells on center four.
Ref< GaussianBasisSet > basis2() const
Return the basis set on center two.
virtual TwoBodyOperSet::type type() const =0
Returns the type of the operator set that this object computes.
Ref< GaussianBasisSet > basis1() const
Return the basis set on center one.
Integral * integral() const
Return the integral factory that was used to create this object.
Definition tbint.h:182
Ref< GaussianBasisSet > basis(size_t c=0) const
Return the basis set on center c.
Ref< GaussianBasisSet > basis3() const
Return the basis set on center three.
This is an abstract base type for classes that compute three centers integrals involving two electron...
Definition tbint.h:671
Ref< GaussianBasisSet > basis1() const
Return the basis set on center one.
int nbasis() const
Return the number of basis functions on center one.
int nbasis3() const
Return the number of basis functions on center three.
virtual int log2_shell_bound(int=-1, int=-1, int=-1)=0
Return log base 2 of the maximum magnitude of any integral in a shell block.
const double * buffer() const
The computed shell integrals will be put in the buffer returned by this member.
Ref< GaussianBasisSet > basis2() const
Return the basis set on center two.
int nbasis2() const
Return the number of basis functions on center two.
Ref< GaussianBasisSet > basis3() const
Return the basis set on center three.
int nshell() const
Return the number of shells on center one.
int nshell2() const
Return the number of shells on center two.
int nbasis1() const
Return the number of basis functions on center one.
double shell_bound(int=-1, int=-1, int=-1)
Return the maximum magnitude of any integral in a shell block.
virtual void compute_shell(int, int, int, DerivCenters &)=0
Given for shell indices, this will cause the integral buffer to be filled in.
Ref< GaussianBasisSet > basis() const
Return the basis set on center one.
int nshell1() const
Return the number of shells on center one.
int nshell3() const
Return the number of shells on center three.
This is an abstract base type for classes that compute integrals involving two electrons in three Gau...
Definition tbint.h:191
virtual TwoBodyOperSet::type type() const =0
Returns the type of the operator set that this object computes.
Ref< GaussianBasisSet > basis1() const
Return the basis set on center one.
int redundant() const
If redundant is true, then keep redundant integrals in the buffer.
Definition tbint.h:279
int nshell() const
Return the number of shells on center one.
virtual bool cloneable() const
Return true if the clone member can be called.
Ref< GaussianBasisSet > basis2() const
Return the basis set on center two.
int nbasis3() const
Return the number of basis functions on center three.
virtual void compute_shell(int, int, int)=0
Given three shell indices, integrals will be computed and placed in the buffer.
virtual void set_integral_storage(size_t storage)
This storage is used to cache computed integrals.
Ref< GaussianBasisSet > basis3() const
Return the basis set on center three.
virtual const Ref< TwoBodyOperSetDescr > & descr() const =0
return the operator set descriptor
double shell_bound(int=-1, int=-1, int=-1)
Return the maximum magnitude of any integral in a shell block obtained from compute_shell.
Ref< GaussianBasisSet > basis(size_t c=0) const
Return the basis set on center c.
int nshell1() const
Return the number of shells on center one.
int nbasis2() const
Return the number of basis functions on center two.
int nbasis() const
Return the number of basis functions on center one.
virtual const double * buffer(TwoBodyOper::type type=TwoBodyOper::eri) const
The computed shell integrals will be put in the buffer returned by this member.
virtual Ref< TwoBodyThreeCenterInt > clone()
Returns a clone of this.
virtual int log2_shell_bound(int=-1, int=-1, int=-1)=0
Return log base 2 of the maximum magnitude of any integral in a shell block obtained from compute_she...
Integral * integral() const
Return the integral factory that was used to create this object.
Definition tbint.h:295
int nshell3() const
Return the number of shells on center three.
int nbasis1() const
Return the number of basis functions on center one.
int nshell2() const
Return the number of shells on center two.
void set_redundant(int i)
See redundant().
Definition tbint.h:281
This is an abstract base type for classes that compute two centers integrals involving two electrons.
Definition tbint.h:747
int nbasis() const
Return the number of basis functions on center one.
Ref< GaussianBasisSet > basis1() const
Return the basis set on center one.
Ref< GaussianBasisSet > basis2() const
Return the basis set on center two.
virtual void compute_shell(int, int, DerivCenters &)=0
Given for shell indices, this will cause the integral buffer to be filled in.
Ref< GaussianBasisSet > basis() const
Return the basis set on center one.
int nbasis1() const
Return the number of basis functions on center one.
int nshell() const
Return the number of shells on center one.
int nshell1() const
Return the number of shells on center one.
int nshell2() const
Return the number of shells on center two.
virtual int log2_shell_bound(int=-1, int=-1)=0
Return log base 2 of the maximum magnitude of any integral in a shell block.
double shell_bound(int=-1, int=-1)
Return the maximum magnitude of any integral in a shell block.
int nbasis2() const
Return the number of basis functions on center two.
const double * buffer() const
The computed shell integrals will be put in the buffer returned by this member.
Definition tbint.h:500
The 2-body analog of OneBodyIntOp.
Definition tbint.h:813
void process_spec_rect(SCMatrixRectBlock *)
Matrices should call these members when the type of block is known.
void process(SCMatrixBlockIter &)
This is the fallback routine to process blocks and is called by process_spec members that are not ove...
Ref< SCElementOp > clone()
Returns a clone of this object.
bool cloneable() const
Returns true if this SCElementOp supports the clone() member.
int has_side_effects()
By default this returns nonzero.
This is an abstract base type for classes that compute integrals involving two electrons in two Gauss...
Definition tbint.h:305
int nshell2() const
Return the number of shells on center two.
virtual Ref< TwoBodyTwoCenterInt > clone()
Returns a clone of this.
Ref< GaussianBasisSet > basis(size_t c=0) const
Return the basis set on center c.
int nshell1() const
Return the number of shells on center one.
virtual TwoBodyOperSet::type type() const =0
Returns the type of the operator set that this object computes.
int nshell() const
Return the number of shells on center one.
int redundant() const
If redundant is true, then keep redundant integrals in the buffer.
Definition tbint.h:385
virtual void set_integral_storage(size_t storage)
This storage is used to cache computed integrals.
int nbasis1() const
Return the number of basis functions on center one.
virtual const Ref< TwoBodyOperSetDescr > & descr() const =0
return the operator set descriptor
virtual bool cloneable() const
Return true if the clone member can be called.
virtual int log2_shell_bound(int=-1, int=-1)=0
Return log base 2 of the maximum magnitude of any integral in a shell block obtained from compute_she...
int nbasis2() const
Return the number of basis functions on center two.
virtual const double * buffer(TwoBodyOper::type type=TwoBodyOper::eri) const
The computed shell integrals will be put in the buffer returned by this member.
void set_redundant(int i)
See redundant().
Definition tbint.h:387
Integral * integral() const
Return the integral factory that was used to create this object.
Definition tbint.h:401
double shell_bound(int=-1, int=-1)
Return the maximum magnitude (as a double) of any integral in a shell block obtained from compute_she...
int nbasis() const
Return the number of basis functions on center one.
Ref< GaussianBasisSet > basis1() const
Return the basis set on center one.
Ref< GaussianBasisSet > basis2() const
Return the basis set on center two.
virtual void compute_shell(int, int)=0
Given four shell indices, integrals will be computed and placed in the buffer.
Contains all MPQC code up to version 3.
Definition mpqcin.h:14
Describes types of integrals of 2-body operators.
Definition tbint.h:48
value
Definition nbint.h:49
@ _11_O_22
4-center integral in chemistry convention
Definition tbint.h:51
@ _1_O_2
2-center integral
Definition tbint.h:55
@ _11_O_2
3-center integral
Definition tbint.h:53
type
Definition operator.h:344
type
types of known two-body operators
Definition operator.h:318
@ eri
two-body Coulomb
Definition operator.h:319

Generated at Wed Sep 25 2024 02:45:29 for MPQC 3.0.0-alpha using the documentation package Doxygen 1.12.0.