MPQC 3.0.0-alpha
Loading...
Searching...
No Matches
sointegral.h
1//
2// sointegral.h --- definition of the Integral class
3//
4// Copyright (C) 1998 Limit Point Systems, Inc.
5//
6// Author: Curtis Janssen <cljanss@limitpt.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_sointegral_h
29#define _chemistry_qc_basis_sointegral_h
30
31#include <chemistry/qc/basis/integral.h>
32#include <chemistry/qc/basis/tbint.h>
33#include <chemistry/qc/basis/sobasis.h>
34
35namespace sc {
36
39class OneBodySOInt : public RefCount {
40 protected:
42
43 Ref<SOBasis> b1_;
44 Ref<SOBasis> b2_;
45
46 double *buffer_;
47
48 int only_totally_symmetric_;
49 public:
51 virtual ~OneBodySOInt();
52
53 Ref<SOBasis> basis() const;
54 Ref<SOBasis> basis1() const;
55 Ref<SOBasis> basis2() const;
56
58 const double * buffer() const { return buffer_; }
59
63 virtual void compute_shell(int so_shell1, int so_shell2);
64
65 // an index of -1 for a shell indicates any shell
66 //virtual int log2_shell_bound(int= -1,int= -1) = 0;
67
68 virtual void reinitialize();
69
70 int only_totally_symmetric() const { return only_totally_symmetric_; }
71 void set_only_totally_symmetric(int i) { only_totally_symmetric_ = i; }
72};
73
74
78 protected:
80
81 Ref<SOBasis> b1_;
82 Ref<SOBasis> b2_;
83
84 double *buffer_;
85
86 int only_totally_symmetric_;
87 public:
89 virtual ~OneBodySODerivInt();
90
91 Ref<SOBasis> basis() const;
92 Ref<SOBasis> basis1() const;
93 Ref<SOBasis> basis2() const;
94
96 const double * buffer() const { return buffer_; }
97
101 virtual void compute_shell(int so_shell1, int so_shell2);
102
103 // an index of -1 for a shell indicates any shell
104 //virtual int log2_shell_bound(int= -1,int= -1) = 0;
105
106 virtual void reinitialize();
107
108 int only_totally_symmetric() const { return only_totally_symmetric_; }
109 void set_only_totally_symmetric(int i) { only_totally_symmetric_ = i; }
110};
111
114class TwoBodySOInt : public RefCount {
115 protected:
116 Ref<TwoBodyInt> tb_;
117
118 Ref<SOBasis> b1_;
119 Ref<SOBasis> b2_;
120 Ref<SOBasis> b3_;
121 Ref<SOBasis> b4_;
122
123 double *buffer_;
124
125 int redundant_;
126 int only_totally_symmetric_;
127 public:
129 virtual ~TwoBodySOInt();
130
131 Ref<SOBasis> basis() const;
132 Ref<SOBasis> basis1() const;
133 Ref<SOBasis> basis2() const;
134 Ref<SOBasis> basis3() const;
135 Ref<SOBasis> basis4() const;
136
138 const double * buffer() const { return buffer_; }
139
145 virtual void compute_shell(int so_shell1, int so_shell2, int so_shell3, int so_shell4);
146
147 // an index of -1 for a shell indicates any shell
148 //virtual int log2_shell_bound(int= -1,int= -1,int= -1,int= -1) = 0;
149
150 // if redundant is true, then keep redundant integrals in buffer_. The
151 // default is true.
152 int redundant() const { return redundant_; }
153 // cannot do nonredundant at the moment
154 //void set_redundant(int i) { redundant_ = i; }
155
156 int only_totally_symmetric() const { return only_totally_symmetric_; }
157 void set_only_totally_symmetric(int i) { only_totally_symmetric_ = i; }
158};
159
163 protected:
165
166 Ref<SOBasis> b1_;
167 Ref<SOBasis> b2_;
168 Ref<SOBasis> b3_;
169 Ref<SOBasis> b4_;
170
171 double *buffer_;
172
173 int redundant_;
174 int only_totally_symmetric_;
175 public:
177 virtual ~TwoBodySODerivInt();
178
179 Ref<SOBasis> basis() const;
180 Ref<SOBasis> basis1() const;
181 Ref<SOBasis> basis2() const;
182 Ref<SOBasis> basis3() const;
183 Ref<SOBasis> basis4() const;
184
186 const double * buffer() const { return buffer_; }
187
193 virtual void compute_shell(int so_shell1, int so_shell2, int so_shell3, int so_shell4);
194
195 // an index of -1 for a shell indicates any shell
196 //virtual int log2_shell_bound(int= -1,int= -1,int= -1,int= -1) = 0;
197
198 // if redundant is true, then keep redundant integrals in buffer_. The
199 // default is true.
200 int redundant() const { return redundant_; }
201 // cannot do nonredundant at the moment
202 //void set_redundant(int i) { redundant_ = i; }
203
204 int only_totally_symmetric() const { return only_totally_symmetric_; }
205 void set_only_totally_symmetric(int i) { only_totally_symmetric_ = i; }
206};
207
208}
209
210#endif
211
212// Local Variables:
213// mode: c++
214// c-file-style: "CLJ"
215// End:
OneBodySODerivInt computes two-center one-electron integrals in a symmetry-adapted basis.
Definition sointegral.h:77
virtual void compute_shell(int so_shell1, int so_shell2)
computes an SO shell doublet of integrals
const double * buffer() const
TODO document OneBodySODerivInt::buffer()
Definition sointegral.h:96
OneBodySOInt computes two-center one-electron integrals in a symmetry-adapted basis.
Definition sointegral.h:39
const double * buffer() const
TODO document OneBodySOInt::buffer()
Definition sointegral.h:58
virtual void compute_shell(int so_shell1, int so_shell2)
computes an SO shell doublet of integrals
The base class for all reference counted objects.
Definition ref.h:192
A template class that maintains references counts.
Definition ref.h:361
TwoBodySODerivInt computes four-center two-electron derivative integrals in a symmetry-adapted basis.
Definition sointegral.h:162
const double * buffer() const
TODO document TwoBodySODerivInt::buffer()
Definition sointegral.h:186
virtual void compute_shell(int so_shell1, int so_shell2, int so_shell3, int so_shell4)
computes an SO shell quartet of derivative integrals
TwoBodySOInt computes four-center two-electron integrals in a symmetry-adapted basis.
Definition sointegral.h:114
virtual void compute_shell(int so_shell1, int so_shell2, int so_shell3, int so_shell4)
computes an SO shell quartet of integrals
const double * buffer() const
TODO document TwoBodySOInt::buffer()
Definition sointegral.h:138
Contains all MPQC code up to version 3.
Definition mpqcin.h:14

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