MPQC 3.0.0-alpha
Loading...
Searching...
No Matches
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
35namespace sc {
36
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);
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>
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:
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
A template class that maintains references counts.
Definition ref.h:361
This implements electron repulsion derivative integrals in the IntV3 library.
Definition tbintlibint2.h:168
void compute_shell(int, int, int, int, DerivCenters &)
Given for shell indices, this will cause the derivative integral shell set to be computed.
int log2_shell_bound(int, int, int, int)
Return log base 2 of the maximum magnitude of any integral in a shell block.
This is an abstract base type for classes that compute geometric derivatives of the integrals involvi...
Definition tbint.h:554
Integral * integral() const
Return the integral factory that was used to create this object.
Definition tbint.h:654
This implements 4-center two-electron integrals in the IntLibint2 library.
Definition tbintlibint2.h:38
void compute_shell(int, int, int, int)
Given four shell indices, integrals will be computed and placed in the buffer.
TwoBodyOperSet::type type() const
Returns the type of the operator set that this object computes.
Definition tbintlibint2.h:58
const Ref< TwoBodyOperSetDescr > & descr() const
return the operator set descriptor
Definition tbintlibint2.h:59
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...
bool cloneable() const
Return true if the clone member can be called.
Ref< TwoBodyInt > clone()
Returns a clone of this.
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
This is an abstract base type for classes that compute integrals involving two electrons and 2 functi...
Definition tbint.h:61
Integral * integral() const
Return the integral factory that was used to create this object.
Definition tbint.h:182
This implements 3-center 2-body integrals in the IntLibint2 library.
Definition tbintlibint2.h:82
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...
bool cloneable() const
Return true if the clone member can be called.
TwoBodyOperSet::type type() const
Returns the type of the operator set that this object computes.
Definition tbintlibint2.h:101
void compute_shell(int, int, int)
Given three shell indices, integrals will be computed and placed in the buffer.
const Ref< TwoBodyOperSetDescr > & descr() const
return the operator set descriptor
Definition tbintlibint2.h:102
Ref< TwoBodyThreeCenterInt > clone()
Returns a clone of this.
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
This is an abstract base type for classes that compute integrals involving two electrons in three Gau...
Definition tbint.h:191
Integral * integral() const
Return the integral factory that was used to create this object.
Definition tbint.h:295
This implements 2-center 2-body integrals in the IntLibint2 library.
Definition tbintlibint2.h:125
void compute_shell(int, int)
Given four shell indices, integrals will be computed and placed in the buffer.
Ref< TwoBodyTwoCenterInt > clone()
Returns a clone of this.
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
bool cloneable() const
Return true if the clone member can be called.
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...
TwoBodyOperSet::type type() const
Returns the type of the operator set that this object computes.
Definition tbintlibint2.h:143
const Ref< TwoBodyOperSetDescr > & descr() const
return the operator set descriptor
Definition tbintlibint2.h:144
This is an abstract base type for classes that compute integrals involving two electrons in two Gauss...
Definition tbint.h:305
Integral * integral() const
Return the integral factory that was used to create this object.
Definition tbint.h:401
SpinCase1 other(SpinCase1 S)
given 1-spin return the other 1-spin
Contains all MPQC code up to version 3.
Definition mpqcin.h:14
type
Definition operator.h:344
type
types of known two-body operators
Definition operator.h:318
Definition tbintlibint2.h:190

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