source: ThirdParty/mpqc_open/src/lib/chemistry/qc/basis/sointegral.h

Candidate_v1.6.1
Last change on this file was 860145, checked in by Frederik Heber <heber@…>, 8 years ago

Merge commit '0b990dfaa8c6007a996d030163a25f7f5fc8a7e7' as 'ThirdParty/mpqc_open'

  • Property mode set to 100644
File size: 3.2 KB
Line 
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
39namespace sc {
40
41class 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
74class 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:
Note: See TracBrowser for help on using the repository browser.