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
37
class
AccumEffectiveH
:
public
BlockedSCElementOp2
{
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
:
54
AccumEffectiveH
(
SCF
*);
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
// ----------------------------
75
class
GSGeneralEffH
:
public
AccumEffectiveH
{
76
protected
:
77
void
init();
78
79
public
:
80
GSGeneralEffH
(
SCF
*);
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
// ----------------------------
99
class
GSHighSpinEffH
:
public
AccumEffectiveH
{
100
protected
:
101
void
init();
102
103
public
:
104
GSHighSpinEffH
(
SCF
*);
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.