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

Generated at Sun Jan 26 2020 23:23:59 for MPQC 3.0.0-alpha using the documentation package Doxygen 1.8.16.