MPQC  2.3.1
effh.h
1 //
2 // effh.h --- definition of the effective fock builder classes
3 //
4 // Copyright (C) 1996 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_scf_effh_h
29 #define _chemistry_qc_scf_effh_h
30 
31 #ifdef __GNUC__
32 #pragma interface
33 #endif
34 
35 #include <math/scmat/blkiter.h>
36 #include <math/scmat/blocked.h>
37 #include <chemistry/qc/scf/scf.h>
38 
39 namespace sc {
40 
42  protected:
43  SCF *scf_;
44  double coef_[18];
45 
46  virtual void init() =0;
47 
48  // hindex is 0 for the closed and 1 for the open shell fock matrix
49  // shelli and shellj are 0 for closed, 1 for open, and 2 for virtual
50  int index(int hindex, int shelli, int shellj);
51 
52  // converts an occupation number to a shell number
53  int shell(double);
54 
55  double& coef(int i, int j, int k) { return coef_[index(i,j,k)]; }
56 
57  public:
59  virtual ~AccumEffectiveH();
60 
61  virtual void process(SCMatrixBlockIter&,SCMatrixBlockIter&);
62 };
63 
64 // Guest & Saunders general form
65 // C O V
66 // ----------
67 // | |
68 // C | fc |
69 // | |
70 // -------------------
71 // | | |
72 // O | 2fc-fo | fc |
73 // | | |
74 // ----------------------------
75 // | | | |
76 // V | fc | fo | fc |
77 // | | | |
78 // ----------------------------
80  protected:
81  void init();
82 
83  public:
85  ~GSGeneralEffH();
86 };
87 
88 // Guest & Saunders' form for high spin
89 // C O V
90 // ----------
91 // | |
92 // C | 2fc-fo |
93 // | |
94 // -------------------
95 // | | |
96 // O | 2fc-fo | 2fc-fo |
97 // | | |
98 // ----------------------------
99 // | | | |
100 // V | fc | fo | 2fc-fo |
101 // | | | |
102 // ----------------------------
104  protected:
105  void init();
106 
107  public:
109  ~GSHighSpinEffH();
110 };
111 
112 // test form
113 // C O V
114 // ----------
115 // | |
116 // C | fo |
117 // | |
118 // -------------------
119 // | | |
120 // O | 2fc-fo | fo |
121 // | | |
122 // ----------------------------
123 // | | | |
124 // V | fc | fo | fo |
125 // | | | |
126 // ----------------------------
127 class TestEffH: public AccumEffectiveH {
128  protected:
129  void init();
130 
131  public:
132  TestEffH(SCF*);
133  ~TestEffH();
134 };
135 
136 // form for converged wavefunction
137 // C O V
138 // ----------
139 // | |
140 // C | fc |
141 // | |
142 // -------------------
143 // | | |
144 // O | 2fc-fo | fo |
145 // | | |
146 // ----------------------------
147 // | | | |
148 // V | fc | fo | fo |
149 // | | | |
150 // ----------------------------
151 class PsiEffH: public AccumEffectiveH {
152  protected:
153  void init();
154 
155  public:
156  PsiEffH(SCF*);
157  ~PsiEffH();
158 };
159 
160 }
161 
162 #endif
163 
164 // Local Variables:
165 // mode: c++
166 // c-file-style: "ETS"
167 // End:
sc::SCF
The SCF class is the base for all classes that use a self-consistent field procedure to solve an effe...
Definition: scf.h:49
sc::PsiEffH
Definition: effh.h:151
sc::AccumEffectiveH
Definition: effh.h:41
sc::SCMatrixBlockIter
The SCMatrixBlockIter class is used to described iterates that loop through the elements in a block.
Definition: blkiter.h:50
sc::BlockedSCElementOp2
Definition: blocked.h:322
sc::TestEffH
Definition: effh.h:127
sc::GSHighSpinEffH
Definition: effh.h:103
sc::GSGeneralEffH
Definition: effh.h:79

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