MPQC 2.3.1

- Main Page
- Related Pages
- Classes
- Files

- File List

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 #ifdef __GNUC__
32 #pragma interface
33 #endif
34
35 #include <chemistry/qc/basis/integral.h>
36 #include <chemistry/qc/basis/tbint.h>
37 #include <chemistry/qc/basis/sobasis.h>
38
39 namespace sc {
40
41 class OneBodySOInt : public RefCount {
42 protected:
43 Ref<OneBodyInt> ob_;
44
45 Ref<SOBasis> b1_;
46 Ref<SOBasis> b2_;
47
48 double *buffer_;
49
50 int only_totally_symmetric_;
51 public:
52 OneBodySOInt(const Ref<OneBodyInt> &);
53 virtual ~OneBodySOInt();
54
55 Ref<SOBasis> basis() const;
56 Ref<SOBasis> basis1() const;
57 Ref<SOBasis> basis2() const;
58
59 const double * buffer() const { return buffer_; }
60
61 virtual void compute_shell(int,int);
62
63 // an index of -1 for a shell indicates any shell
64 //virtual int log2_shell_bound(int= -1,int= -1) = 0;
65
66 virtual void reinitialize();
67
68 int only_totally_symmetric() const { return only_totally_symmetric_; }
69 void set_only_totally_symmetric(int i) { only_totally_symmetric_ = i; }
70 };
71
72
73
74 class TwoBodySOInt : public RefCount {
75 protected:
76 Ref<TwoBodyInt> tb_;
77
78 Ref<SOBasis> b1_;
79 Ref<SOBasis> b2_;
80 Ref<SOBasis> b3_;
81 Ref<SOBasis> b4_;
82
83 double *buffer_;
84
85 int redundant_;
86 int only_totally_symmetric_;
87 public:
88 TwoBodySOInt(const Ref<TwoBodyInt> &);
89 virtual ~TwoBodySOInt();
90
91 Ref<SOBasis> basis() const;
92 Ref<SOBasis> basis1() const;
93 Ref<SOBasis> basis2() const;
94 Ref<SOBasis> basis3() const;
95 Ref<SOBasis> basis4() const;
96
97 const double * buffer() const { return buffer_; }
98
99 virtual void compute_shell(int,int,int,int);
100
101 // an index of -1 for a shell indicates any shell
102 //virtual int log2_shell_bound(int= -1,int= -1,int= -1,int= -1) = 0;
103
104 // if redundant is true, then keep redundant integrals in buffer_. The
105 // default is true.
106 int redundant() const { return redundant_; }
107 // cannot do nonredundant at the moment
108 //void set_redundant(int i) { redundant_ = i; }
109
110 int only_totally_symmetric() const { return only_totally_symmetric_; }
111 void set_only_totally_symmetric(int i) { only_totally_symmetric_ = i; }
112 };
113
114 }
115
116 #endif
117
118 // Local Variables:
119 // mode: c++
120 // c-file-style: "CLJ"
121 // End: