11
11
** [cf. Gauss and Stanton, JCP 103, 3561-3577 (1995)]
13
15
** The storage a naming convention for each of the four spin cases
16
17
** Spin Case Storage Name
17
18
** ---------- --------- -------
18
** WMNIE (M>N,EI) "WMNIE"
19
** Wmnie (m>n,ei) "Wmnie"
20
** WMnIe (Mn,eI) "WMnIe"
21
** WmNiE (mN,Ei) "WmNiE"
19
** WMNIE (M>N,EI) "WMNIE (M>N,EI)"
20
** Wmnie (m>n,ei) "Wmnie (m>n,ei)"
21
** WMnIe (Mn,eI) "WMnIe (Mn,eI)"
22
** WmNiE (mN,Ei) "WmNiE (mN,Ei)"
23
** ---------- --------- -------
24
** WMNIE (M>N,IE) "WMNIE"
25
** Wmnie (m>n,ie) "Wmnie"
26
** WMnIe (Mn,Ie) "WMnIe"
27
** WmNiE (mN,iE) "WmNiE"
22
28
** -------------------------------
30
** Labels have been changed to the above. Also, all 8 of the above plus
31
** plus the following for RHF are now stored by cchbar.
32
** 2WMnIe - WnMIe (Mn,Ie) "2WMnIe - WnMIe"
33
** WMnIe - 2WnMIe (Mn,Ie) "WMnIe - 2WnMIe"
34
** 2WMnIe - WnMIe (Mn,eI) "2WMnIe - WnMIe (Mn,eI)"
35
** WMnIe - 2WnMIe (Mn,eI) "WMnIe - 2WnMIe (Mn,eI)"
39
extern purge_Wmnie(void);
27
41
void Wmnie_build(void) {
28
42
dpdbuf4 W, Wmnie, WMNIE, WMnIe, WmNiE, WMniE, WmNIe;
31
45
dpdfile2 t1, tIA, tia;
33
if(params.ref == 0 || params.ref == 1) { /** RHF or ROHF **/
47
if(params.ref == 0) { /** RHF **/
49
dpd_buf4_init(&E, CC_EINTS, 0, 0, 10, 0, 10, 0, "E <ij|ka>");
50
dpd_buf4_copy(&E, CC_HBAR, "WMnIe");
53
/* D(Mn,Fe) * T(I,F) --> W(Mn,Ie) */
54
dpd_buf4_init(&WMnIe, CC_HBAR, 0, 0, 10, 0, 10, 0, "WMnIe");
55
dpd_buf4_init(&D, CC_DINTS, 0, 0, 5, 0, 5, 0, "D <ij|ab>");
56
dpd_file2_init(&t1, CC_OEI, 0, 0, 1, "tIA");
57
dpd_contract244(&t1, &D, &WMnIe, 1, 2, 1, 1, 1);
60
/* W(Mn,Ie) --> W(Mn,eI) */
61
dpd_buf4_sort(&WMnIe, CC_HBAR, pqsr, 0, 11, "WMnIe (Mn,eI)");
62
dpd_buf4_sort(&WMnIe, CC_HBAR, qpsr, 0, 11, "WMnIe (nM,eI)");
63
dpd_buf4_close(&WMnIe);
65
/* make spin-combinations */
66
dpd_buf4_init(&WMnIe, CC_HBAR, 0, 0, 10, 0, 10, 0, "WMnIe");
67
dpd_buf4_copy(&WMnIe, CC_HBAR, "WMnIe - 2WnMIe");
68
dpd_buf4_copy(&WMnIe, CC_HBAR, "2WMnIe - WnMIe");
69
dpd_buf4_close(&WMnIe);
71
dpd_buf4_init(&WMnIe, CC_HBAR, 0, 0, 10, 0, 10, 0, "WMnIe");
72
dpd_buf4_sort_axpy(&WMnIe, CC_HBAR, qprs, 0, 10, "WMnIe - 2WnMIe", -2.0);
73
dpd_buf4_close(&WMnIe);
75
dpd_buf4_init(&W, CC_HBAR, 0, 0, 10, 0, 10, 0, "2WMnIe - WnMIe");
76
dpd_buf4_scm(&W, 2.0);
78
dpd_buf4_init(&WMnIe, CC_HBAR, 0, 0, 10, 0, 10, 0, "WMnIe");
79
dpd_buf4_sort_axpy(&WMnIe, CC_HBAR, qprs, 0, 10, "2WMnIe - WnMIe", -1.0);
80
dpd_buf4_close(&WMnIe);
82
dpd_buf4_init(&W, CC_HBAR, 0, 0, 10, 0, 10, 0, "2WMnIe - WnMIe");
83
dpd_buf4_sort(&W, CC_HBAR, pqsr, 0, 11, "2WMnIe - WnMIe (Mn,eI)");
85
dpd_buf4_init(&W, CC_HBAR, 0, 0, 10, 0, 10, 0, "WMnIe - 2WnMIe");
86
dpd_buf4_sort(&W, CC_HBAR, pqsr, 0, 11, "WMnIe - 2WnMIe (Mn,eI)");
90
else if(params.ref == 1) { /** ROHF **/
35
92
/* E(M>N,EI) --> W(M>N,EI) */
36
93
dpd_buf4_init(&E, CC_EINTS, 0, 2, 10, 2, 10, 0, "E <ij||ka> (i>j,ka)");
37
dpd_buf4_sort(&E, CC_HBAR, pqsr, 2, 11, "WMNIE");
38
dpd_buf4_sort(&E, CC_HBAR, pqsr, 2, 11, "Wmnie");
94
dpd_buf4_sort(&E, CC_HBAR, pqsr, 2, 11, "WMNIE (M>N,EI)");
95
dpd_buf4_sort(&E, CC_HBAR, pqsr, 2, 11, "Wmnie (m>n,ei)");
39
96
dpd_buf4_close(&E);
42
98
/* D(M>N,EF) * T(I,F) --> W(M>N,EI) */
43
dpd_buf4_init(&WMNIE, CC_HBAR, 0, 2, 11, 2, 11, 0, "WMNIE");
99
dpd_buf4_init(&WMNIE, CC_HBAR, 0, 2, 11, 2, 11, 0, "WMNIE (M>N,EI)");
44
100
dpd_buf4_init(&D_a, CC_DINTS, 0, 2, 5, 2, 5,0, "D <ij||ab> (i>j,ab)");
45
101
dpd_file2_init(&t1, CC_OEI, 0, 0, 1, "tIA");
46
102
dpd_contract424(&D_a,&t1,&WMNIE, 3, 1, 0, -1, 1);
83
137
dpd_file2_close(&t1);
84
138
dpd_buf4_close(&D);
85
139
/* W(mN,iE) --> W(mN,Ei) */
86
dpd_buf4_sort(&WmNiE, CC_HBAR, pqsr, 0, 11, "WmNiE");
140
dpd_buf4_sort(&WmNiE, CC_HBAR, pqsr, 0, 11, "WmNiE (mN,Ei)");
141
dpd_buf4_close(&WmNiE);
145
/* also put "normal" sorted versions in CC_HBAR */
146
dpd_buf4_init(&WMNIE, CC_HBAR, 0, 2, 11, 2, 11, 0, "WMNIE (M>N,EI)");
147
dpd_buf4_sort(&WMNIE, CC_HBAR, pqsr, 2, 10, "WMNIE");
148
dpd_buf4_close(&WMNIE);
149
dpd_buf4_init(&Wmnie, CC_HBAR, 0, 2, 11, 2, 11, 0, "Wmnie (m>n,ei)");
150
dpd_buf4_sort(&Wmnie, CC_HBAR, pqsr, 2, 10, "Wmnie");
151
dpd_buf4_close(&Wmnie);
152
dpd_buf4_init(&WMnIe, CC_HBAR, 0, 0, 11, 0, 11, 0, "WMnIe (Mn,eI)");
153
dpd_buf4_sort(&WMnIe, CC_HBAR, pqsr, 0, 10, "WMnIe");
154
dpd_buf4_close(&WMnIe);
155
dpd_buf4_init(&WmNiE, CC_HBAR, 0, 0, 11, 0, 11, 0, "WmNiE (mN,Ei)");
156
dpd_buf4_sort(&WmNiE, CC_HBAR, pqsr, 0, 10, "WmNiE");
87
157
dpd_buf4_close(&WmNiE);
89
159
else if(params.ref == 2) { /** UHF **/
94
164
/* <M>N||IE> --> W(M>N,EI) */
95
165
dpd_buf4_init(&E, CC_EINTS, 0, 2, 20, 2, 20, 0, "E <IJ||KA> (I>J,KA)");
96
dpd_buf4_sort(&E, CC_HBAR, pqsr, 2, 21, "WMNIE");
166
dpd_buf4_sort(&E, CC_HBAR, pqsr, 2, 21, "WMNIE (M>N,EI)");
97
167
dpd_buf4_close(&E);
99
169
/* <M>N||EF> T(I,F) --> W(M>N,EI) */
100
dpd_buf4_init(&W, CC_HBAR, 0, 2, 21, 2, 21, 0, "WMNIE");
170
dpd_buf4_init(&W, CC_HBAR, 0, 2, 21, 2, 21, 0, "WMNIE (M>N,EI)");
101
171
dpd_buf4_init(&D, CC_DINTS, 0, 2, 5, 2, 5, 0, "D <IJ||AB> (I>J,AB)");
102
172
dpd_contract424(&D, &tIA, &W, 3, 1, 0, -1, 1);
103
173
dpd_buf4_close(&D);
104
174
dpd_buf4_close(&W);
107
176
/* <m>n||ie> --> W(m>n,ei) */
108
177
dpd_buf4_init(&E, CC_EINTS, 0, 12, 30, 12, 30, 0, "E <ij||ka> (i>j,ka)");
109
dpd_buf4_sort(&E, CC_HBAR, pqsr, 12, 31, "Wmnie");
178
dpd_buf4_sort(&E, CC_HBAR, pqsr, 12, 31, "Wmnie (m>n,ei)");
110
179
dpd_buf4_close(&E);
112
181
/* <m>n||ef> T(i,f) --> W(m>n,ei) */
113
dpd_buf4_init(&W, CC_HBAR, 0, 12, 31, 12, 31, 0, "Wmnie");
182
dpd_buf4_init(&W, CC_HBAR, 0, 12, 31, 12, 31, 0, "Wmnie (m>n,ei)");
114
183
dpd_buf4_init(&D, CC_DINTS, 0, 12, 15, 12, 15, 0, "D <ij||ab> (i>j,ab)");
115
184
dpd_contract424(&D, &tia, &W, 3, 1, 0, -1, 1);
116
185
dpd_buf4_close(&D);
143
211
dpd_contract424(&D, &tia, &Z, 3, 1, 0, 1, 0);
144
212
dpd_buf4_close(&D);
145
213
/* Z(Nm,Ei) --> W(mN,Ei) */
146
dpd_buf4_sort_axpy(&Z, CC_HBAR, qprs, 23, 26, "WmNiE", 1);
214
dpd_buf4_sort_axpy(&Z, CC_HBAR, qprs, 23, 26, "WmNiE (mN,Ei)", 1);
147
215
dpd_buf4_close(&Z);
149
217
dpd_file2_close(&tIA);
150
218
dpd_file2_close(&tia);
220
/* also put "normal" sorted versions in CC_HBAR */
221
dpd_buf4_init(&WMNIE, CC_HBAR, 0, 2, 21, 2, 21, 0, "WMNIE (M>N,EI)");
222
dpd_buf4_sort(&WMNIE, CC_HBAR, pqsr, 2, 20, "WMNIE");
223
dpd_buf4_close(&WMNIE);
224
dpd_buf4_init(&Wmnie, CC_HBAR, 0, 12, 31, 12, 31, 0, "Wmnie (m>n,ei)");
225
dpd_buf4_sort(&Wmnie, CC_HBAR, pqsr, 12, 30, "Wmnie");
226
dpd_buf4_close(&Wmnie);
227
dpd_buf4_init(&WMnIe, CC_HBAR, 0, 22, 25, 22, 25, 0, "WMnIe (Mn,eI)");
228
dpd_buf4_sort(&WMnIe, CC_HBAR, pqsr, 22, 24, "WMnIe");
229
dpd_buf4_close(&WMnIe);
230
dpd_buf4_init(&WmNiE, CC_HBAR, 0, 23, 26, 23, 26, 0, "WmNiE (mN,Ei)");
231
dpd_buf4_sort(&WmNiE, CC_HBAR, pqsr, 23, 27, "WmNiE");
232
dpd_buf4_close(&WmNiE);