MPQC  2.3.1
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:
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:
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:
sc::OneBodySOInt
Definition: sointegral.h:41
sc::Ref< OneBodyInt >
sc::RefCount
The base class for all reference counted objects.
Definition: ref.h:194
sc::TwoBodySOInt
Definition: sointegral.h:74

Generated at Sun Jan 26 2020 23:33:04 for MPQC 2.3.1 using the documentation package Doxygen 1.8.16.