MPQC  3.0.0-alpha
tbintlibint2.h
1 //
2 // tbintlibint2.h
3 //
4 // Copyright (C) 2001 Edward Valeev
5 //
6 // Author: Edward Valeev <evaleev@vt.edu>
7 // Maintainer: EV
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_libint2_tbint_h
29 #define _chemistry_qc_libint2_tbint_h
30 
31 #include <chemistry/qc/basis/tbint.h>
32 #include <chemistry/qc/libint2/int2e.h>
33 #include <chemistry/qc/libint2/tbosar.h>
34 
35 namespace sc {
36 
38 class TwoBodyIntLibint2 : public TwoBodyInt {
39 
40  TwoBodyOperSet::type int2etype_;
42  Ref<IntParams> params_;
43 
44  protected:
45  Ref<Int2eLibint2> int2elibint2_;
46 
47  public:
48  typedef IntParamsG12::ContractedGeminal ContractedGeminal;
50  const Ref<GaussianBasisSet>&b1,
51  const Ref<GaussianBasisSet>&b2,
52  const Ref<GaussianBasisSet>&b3,
53  const Ref<GaussianBasisSet>&b4,
54  size_t storage, TwoBodyOperSet::type int2etype,
55  const Ref<IntParams>& params);
56  virtual ~TwoBodyIntLibint2();
57 
58  TwoBodyOperSet::type type() const { return int2etype_; }
59  const Ref<TwoBodyOperSetDescr>& descr() const { return descr_; }
60 
61  int log2_shell_bound(int,int,int,int);
62  void compute_shell(int,int,int,int);
63 
64  size_t used_storage() const { return int2elibint2_->storage_used(); }
65 
66  const double *buffer(TwoBodyOper::type te_type) const {
67  return int2elibint2_->buffer( descr_->opertype(te_type) );
68  }
69 
70  bool cloneable() const;
72 
73  private:
75 
79 };
80 
83 
84  TwoBodyOperSet::type int2etype_;
86  Ref<IntParams> params_;
87 
88  protected:
89  Ref<Int2eLibint2> int2elibint2_;
90 
91  public:
92  typedef IntParamsG12::ContractedGeminal ContractedGeminal;
94  const Ref<GaussianBasisSet>&b1,
95  const Ref<GaussianBasisSet>&b2,
96  const Ref<GaussianBasisSet>&b3,
97  size_t storage, TwoBodyOperSet::type int2etype,
98  const Ref<IntParams>& params);
100 
101  TwoBodyOperSet::type type() const { return int2etype_; }
102  const Ref<TwoBodyOperSetDescr>& descr() const { return descr_; }
103 
104  int log2_shell_bound(int,int,int);
105  void compute_shell(int,int,int);
106 
107  size_t used_storage() const { return int2elibint2_->storage_used(); }
108 
109  const double *buffer(TwoBodyOper::type te_type) const {
110  return int2elibint2_->buffer( descr_->opertype(te_type) );
111  }
112 
113  bool cloneable() const;
115 
116  private:
118 
122 };
123 
126 
127  TwoBodyOperSet::type int2etype_;
129  Ref<IntParams> params_;
130 
131  protected:
132  Ref<Int2eLibint2> int2elibint2_;
133 
134  public:
135  typedef IntParamsG12::ContractedGeminal ContractedGeminal;
137  const Ref<GaussianBasisSet>&b1,
138  const Ref<GaussianBasisSet>&b2,
139  size_t storage, TwoBodyOperSet::type int2etype,
140  const Ref<IntParams>& params);
141  virtual ~TwoBodyTwoCenterIntLibint2();
142 
143  TwoBodyOperSet::type type() const { return int2etype_; }
144  const Ref<TwoBodyOperSetDescr>& descr() const { return descr_; }
145 
146  bool cloneable() const;
148 
149  int log2_shell_bound(int,int);
150  void compute_shell(int,int);
151 
152  size_t used_storage() const { return int2elibint2_->storage_used(); }
153 
154  const double *buffer(TwoBodyOper::type te_type) const {
155  return int2elibint2_->buffer( descr_->opertype(te_type) );
156  }
157 
158  private:
160 
164 };
165 
169  protected:
170  Ref<Int2eLibint2> int2elibint2_;
171 
172  public:
174  const Ref<GaussianBasisSet>&b1,
175  const Ref<GaussianBasisSet>&b2,
176  const Ref<GaussianBasisSet>&b3,
177  const Ref<GaussianBasisSet>&b4,
178  size_t storage, TwoBodyOperSet::type int2etype);
179  virtual ~TwoBodyDerivIntLibint2();
180 
181  int log2_shell_bound(int,int,int,int);
182  void compute_shell(int,int,int,int,DerivCenters&);
183 
184  size_t used_storage() const { return int2elibint2_->storage_used(); }
185 };
186 
187  namespace libint2 {
188 
189  template <class Int2e>
190  struct Int2eCreator {
191  Ref<Int2e> operator()(Integral*integral,
192  const Ref<GaussianBasisSet>& b1,
193  const Ref<GaussianBasisSet>& b2,
194  const Ref<GaussianBasisSet>& b3,
195  const Ref<GaussianBasisSet>& b4,
196  size_t storage,
197  const Ref<IntParams>& params) {
198  return new Int2e(integral,b1,b2,b3,b4,storage,params);
199  }
200  };
201 
202  }
203 
204 }
205 
206 #endif
207 
208 // Local Variables:
209 // mode: c++
210 // c-file-style: "CLJ"
211 // End:
sc::TwoBodyThreeCenterIntLibint2::descr
const Ref< TwoBodyOperSetDescr > & descr() const
return the operator set descriptor
Definition: tbintlibint2.h:102
sc::TwoBodyThreeCenterIntLibint2::type
TwoBodyOperSet::type type() const
Returns the type of the operator set that this object computes.
Definition: tbintlibint2.h:101
sc::TwoBodyInt
This is an abstract base type for classes that compute integrals involving two electrons and 2 functi...
Definition: tbint.h:61
sc::TwoBodyTwoCenterInt
This is an abstract base type for classes that compute integrals involving two electrons in two Gauss...
Definition: tbint.h:305
sc::TwoBodyThreeCenterIntLibint2::buffer
const double * buffer(TwoBodyOper::type te_type) const
The computed shell integrals will be put in the buffer returned by this member.
Definition: tbintlibint2.h:109
sc::TwoBodyThreeCenterInt::integral
Integral * integral() const
Return the integral factory that was used to create this object.
Definition: tbint.h:295
sc::TwoBodyTwoCenterIntLibint2::type
TwoBodyOperSet::type type() const
Returns the type of the operator set that this object computes.
Definition: tbintlibint2.h:143
sc::TwoBodyOperSet::type
type
Definition: operator.h:344
sc::Ref
A template class that maintains references counts.
Definition: ref.h:361
sc::TwoBodyThreeCenterIntLibint2
This implements 3-center 2-body integrals in the IntLibint2 library.
Definition: tbintlibint2.h:82
sc::TwoBodyThreeCenterIntLibint2::clone
Ref< TwoBodyThreeCenterInt > clone()
Returns a clone of this.
sc::TwoBodyInt::integral
Integral * integral() const
Return the integral factory that was used to create this object.
Definition: tbint.h:182
sc::TwoBodyThreeCenterIntLibint2::log2_shell_bound
int log2_shell_bound(int, int, int)
Return log base 2 of the maximum magnitude of any integral in a shell block obtained from compute_she...
sc::TwoBodyTwoCenterIntLibint2::clone
Ref< TwoBodyTwoCenterInt > clone()
Returns a clone of this.
sc::TwoBodyTwoCenterIntLibint2::cloneable
bool cloneable() const
Return true if the clone member can be called.
sc::TwoBodyIntLibint2::cloneable
bool cloneable() const
Return true if the clone member can be called.
sc::TwoBodyTwoCenterIntLibint2::log2_shell_bound
int log2_shell_bound(int, int)
Return log base 2 of the maximum magnitude of any integral in a shell block obtained from compute_she...
sc::TwoBodyIntLibint2::buffer
const double * buffer(TwoBodyOper::type te_type) const
The computed shell integrals will be put in the buffer returned by this member.
Definition: tbintlibint2.h:66
sc::TwoBodyTwoCenterIntLibint2::compute_shell
void compute_shell(int, int)
Given four shell indices, integrals will be computed and placed in the buffer.
sc::TwoBodyDerivIntLibint2::log2_shell_bound
int log2_shell_bound(int, int, int, int)
Return log base 2 of the maximum magnitude of any integral in a shell block.
sc::TwoBodyDerivIntLibint2::compute_shell
void compute_shell(int, int, int, int, DerivCenters &)
Given for shell indices, this will cause the derivative integral shell set to be computed.
sc::TwoBodyIntLibint2::type
TwoBodyOperSet::type type() const
Returns the type of the operator set that this object computes.
Definition: tbintlibint2.h:58
sc::TwoBodyDerivInt
This is an abstract base type for classes that compute geometric derivatives of the integrals involvi...
Definition: tbint.h:554
sc::other
SpinCase1 other(SpinCase1 S)
given 1-spin return the other 1-spin
sc::TwoBodyDerivInt::integral
Integral * integral() const
Return the integral factory that was used to create this object.
Definition: tbint.h:654
sc::Integral
The Integral abstract class acts as a factory to provide objects that compute one and two electron in...
Definition: integral.h:111
sc::TwoBodyIntLibint2
This implements 4-center two-electron integrals in the IntLibint2 library.
Definition: tbintlibint2.h:38
sc::TwoBodyThreeCenterInt
This is an abstract base type for classes that compute integrals involving two electrons in three Gau...
Definition: tbint.h:191
sc::TwoBodyIntLibint2::descr
const Ref< TwoBodyOperSetDescr > & descr() const
return the operator set descriptor
Definition: tbintlibint2.h:59
sc::TwoBodyTwoCenterInt::integral
Integral * integral() const
Return the integral factory that was used to create this object.
Definition: tbint.h:401
sc::TwoBodyOper::type
type
types of known two-body operators
Definition: operator.h:318
sc::TwoBodyTwoCenterIntLibint2::descr
const Ref< TwoBodyOperSetDescr > & descr() const
return the operator set descriptor
Definition: tbintlibint2.h:144
sc::TwoBodyIntLibint2::compute_shell
void compute_shell(int, int, int, int)
Given four shell indices, integrals will be computed and placed in the buffer.
sc::libint2::Int2eCreator
Definition: tbintlibint2.h:190
sc::TwoBodyThreeCenterIntLibint2::compute_shell
void compute_shell(int, int, int)
Given three shell indices, integrals will be computed and placed in the buffer.
sc::TwoBodyTwoCenterIntLibint2
This implements 2-center 2-body integrals in the IntLibint2 library.
Definition: tbintlibint2.h:125
sc::TwoBodyTwoCenterIntLibint2::buffer
const double * buffer(TwoBodyOper::type te_type) const
The computed shell integrals will be put in the buffer returned by this member.
Definition: tbintlibint2.h:154
sc::TwoBodyIntLibint2::log2_shell_bound
int log2_shell_bound(int, int, int, int)
Return log base 2 of the maximum magnitude of any integral in a shell block obtained from compute_she...
sc::TwoBodyIntLibint2::clone
Ref< TwoBodyInt > clone()
Returns a clone of this.
sc::DerivCenters
DerivCenters keeps track the centers that derivatives are taken with respect to.
Definition: dercent.h:42
sc
Contains all MPQC code up to version 3.
Definition: mpqcin.h:14
sc::TwoBodyDerivIntLibint2
This implements electron repulsion derivative integrals in the IntV3 library.
Definition: tbintlibint2.h:168
sc::TwoBodyThreeCenterIntLibint2::cloneable
bool cloneable() const
Return true if the clone member can be called.

Generated at Sun Jan 26 2020 23:23:58 for MPQC 3.0.0-alpha using the documentation package Doxygen 1.8.16.