3
#include <libdpd/dpd.h>
7
void HC1_F(int i, int C_irr);
8
void HC1_Wamef(int i, int C_irr);
9
void HC1_Wmnie(int i, int C_irr);
10
void HC1_Wmnij(int i, int C_irr);
11
void HC1_Wmbij(int i, int C_irr);
12
void HC1_Wmbej(int i, int C_irr);
13
void HC1_Wabei(int i, int C_irr);
14
void purge_HC1(int C_irr);
15
void purge_Wmnie(int C_irr);
16
void purge_Wmbij(int C_irr);
17
void purge_Wabei(int C_irr);
19
void cc3_HC1 (int i, int C_irr) {
23
/* HC1_Wmnij(i, C_irr); */
24
/* HC1_Wmbij(i, C_irr); */
25
/* HC1_Wmbej(i, C_irr); */
28
if (params.ref == 1) purge_HC1(C_irr);
33
/* constructs matrix elements of [H, C1] for CC3 EOM code */
35
void HC1_F(int i, int C_irr) {
37
dpdfile2 FME, Fme, Cme, CME;
39
char CME_lbl[32], Cme_lbl[32];
40
sprintf(CME_lbl, "%s %d", "CME", i);
41
sprintf(Cme_lbl, "%s %d", "Cme", i);
45
/* HC1_F() Fme = +C_n^f <mn||ef> */
47
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
49
dpd_file2_init(&FME, CC3_HC1, C_irr, 0, 1, "HC1 FME");
50
dpd_buf4_init(&D, CC_DINTS, 0, 0, 5, 0, 5, 0, "D 2<ij|ab> - <ij|ba>");
51
dpd_dot13(&CME, &D, &FME, 0, 0, 1.0, 0.0);
53
dpd_file2_close(&FME);
55
dpd_file2_close(&CME);
58
else if(params.ref == 1) { /** ROHF **/
59
/* HC1_F() Fme = +C_n^f <mn||ef> */
61
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
62
dpd_file2_init(&Cme, EOM_Cme, C_irr, 0, 1, Cme_lbl);
64
dpd_file2_init(&FME, CC3_HC1, C_irr, 0, 1, "HC1 FME");
65
dpd_file2_init(&Fme, CC3_HC1, C_irr, 0, 1, "HC1 Fme");
67
dpd_buf4_init(&D_anti, CC_DINTS, 0, 0, 5, 0, 5, 0, "D <ij||ab>");
68
dpd_buf4_init(&D, CC_DINTS, 0, 0, 5, 0, 5, 0, "D <ij|ab>");
69
dpd_dot13(&CME, &D_anti, &FME, 0, 0, 1.0, 0.0);
70
dpd_dot13(&Cme, &D, &FME, 0, 0, 1.0, 1.0);
71
dpd_dot13(&Cme, &D_anti, &Fme, 0, 0, 1.0, 0.0);
72
dpd_dot13(&CME, &D, &Fme, 0, 0, 1.0, 1.0);
73
dpd_buf4_close(&D_anti);
76
dpd_file2_close(&FME);
77
dpd_file2_close(&Fme);
79
dpd_file2_close(&CME);
80
dpd_file2_close(&Cme);
83
else if(params.ref == 2) { /** UHF **/
84
/* HC1_F() Fme = +C_n^f <mn||ef> */
86
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
87
dpd_file2_init(&Cme, EOM_Cme, C_irr, 2, 3, Cme_lbl);
89
dpd_file2_init(&FME, CC3_HC1, C_irr, 0, 1, "HC1 FME");
90
dpd_file2_init(&Fme, CC3_HC1, C_irr, 2, 3, "HC1 Fme");
92
dpd_buf4_init(&D, CC_DINTS, 0, 20, 20, 20, 20, 0, "D <IJ||AB> (IA,JB)");
93
dpd_contract422(&D, &CME, &FME, 0, 0, 1.0, 0.0);
95
dpd_buf4_init(&D, CC_DINTS, 0, 20, 30, 20, 30, 0, "D <Ij|Ab> (IA,jb)");
96
dpd_contract422(&D, &Cme, &FME, 0, 0, 1.0, 1.0);
98
dpd_buf4_init(&D, CC_DINTS, 0, 30, 30, 30, 30, 0, "D <ij||ab> (ia,jb)");
99
dpd_contract422(&D, &Cme, &Fme, 0, 0, 1.0, 0.0);
101
dpd_buf4_init(&D, CC_DINTS, 0, 30, 20, 30, 20, 0, "D <Ij|Ab> (ia,JB)");
102
dpd_contract422(&D, &CME, &Fme, 0, 0, 1.0, 1.0);
105
dpd_file2_close(&FME);
106
dpd_file2_close(&Fme);
108
dpd_file2_close(&CME);
109
dpd_file2_close(&Cme);
116
void HC1_Wamef(int i, int C_irr) {
117
dpdbuf4 Wamef, WAMEF, WAmEf, WaMeF, W, D_a, D;
119
char CME_lbl[32], Cme_lbl[32];
120
sprintf(CME_lbl, "%s %d", "CME", i);
121
sprintf(Cme_lbl, "%s %d", "Cme", i);
123
if(params.ref == 0) { /** RHF **/
124
/* HC1_Wamef(): Wamef = -Cna <nm||ef> */
126
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
128
dpd_buf4_init(&W, CC3_HC1, C_irr, 11, 5, 11, 5, 0, "HC1 WAmEf (Am,Ef)");
129
dpd_buf4_init(&D, CC_DINTS, 0, 0, 5, 0, 5, 0, "D <ij|ab>");
130
dpd_contract244(&CME, &D, &W, 0, 0, 0, -1, 0.0);
132
dpd_buf4_sort(&W, CC3_HC1, qprs, 10, 5, "HC1 WAmEf (mA,Ef)");
135
dpd_file2_close(&CME);
138
else if(params.ref == 1) { /** ROHF **/
139
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
140
dpd_file2_init(&Cme, EOM_Cme, C_irr, 0, 1, Cme_lbl);
142
/* C(N,A) <NM||EF> --> W(AM,E>F) */
143
dpd_buf4_init(&WAMEF, CC3_HC1, C_irr, 11, 7, 11, 7, 0, "HC1 WAMEF (AM,E>F)");
144
dpd_buf4_init(&D, CC_DINTS, 0, 0, 7, 0, 7, 0, "D <ij||ab> (ij,a>b)");
145
dpd_contract244(&CME, &D, &WAMEF, 0, 0, 0, -1, 0.0);
147
dpd_buf4_close(&WAMEF);
149
/* C(n,a) <nm||ef> --> W(am,e>f) */
150
dpd_buf4_init(&Wamef, CC3_HC1, C_irr, 11, 7, 11, 7, 0, "HC1 Wamef (am,e>f)");
151
dpd_buf4_init(&D, CC_DINTS, 0, 0, 7, 0, 7, 0, "D <ij||ab> (ij,a>b)");
152
dpd_contract244(&Cme, &D, &Wamef, 0, 0, 0, -1, 0.0);
154
dpd_buf4_close(&Wamef);
156
/* C(N,A) <Nm|Ef> --> W(Am,Ef) */
157
dpd_buf4_init(&WAmEf, CC3_HC1, C_irr, 11, 5, 11, 5, 0, "HC1 WAmEf (Am,Ef)");
158
dpd_buf4_init(&D, CC_DINTS, 0, 0, 5, 0, 5, 0, "D <ij|ab>");
159
dpd_contract244(&CME, &D, &WAmEf, 0, 0, 0, -1, 0.0);
161
dpd_buf4_close(&WAmEf);
163
/* C(n,a) <nM|eF> --> W(aM,eF) */
164
dpd_buf4_init(&WaMeF, CC3_HC1, C_irr, 11, 5, 11, 5, 0, "HC1 WaMeF (aM,eF)");
165
dpd_buf4_init(&D, CC_DINTS, 0, 0, 5, 0, 5, 0, "D <ij|ab>");
166
dpd_contract244(&Cme, &D, &WaMeF, 0, 0, 0, -1, 0.0);
168
dpd_buf4_close(&WaMeF);
170
dpd_file2_close(&CME);
171
dpd_file2_close(&Cme);
174
else if(params.ref == 2) { /** UHF **/
176
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
177
dpd_file2_init(&Cme, EOM_Cme, C_irr, 2, 3, Cme_lbl);
179
/* T(N,A) <NM||EF> --> W(AM,E>F) */
180
dpd_buf4_init(&WAMEF, CC3_HC1, C_irr, 21, 7, 21, 7, 0, "HC1 WAMEF (AM,E>F)");
181
dpd_buf4_init(&D, CC_DINTS, 0, 0, 7, 0, 7, 0, "D <IJ||AB> (IJ,A>B)");
182
dpd_contract244(&CME, &D, &WAMEF, 0, 0, 0, -1, 0.0);
184
dpd_buf4_close(&WAMEF);
186
/* T(n,a) <nm||ef> --> W(am,e>f) */
187
dpd_buf4_init(&Wamef, CC3_HC1, C_irr, 31, 17, 31, 17, 0, "HC1 Wamef (am,e>f)");
188
dpd_buf4_init(&D, CC_DINTS, 0, 10, 17, 10, 17, 0, "D <ij||ab> (ij,a>b)");
189
dpd_contract244(&Cme, &D, &Wamef, 0, 0, 0, -1, 0.0);
191
dpd_buf4_close(&Wamef);
193
/* T(N,A) <Nm|Ef> --> W(Am,Ef) */
194
dpd_buf4_init(&WAmEf, CC3_HC1, C_irr, 26, 28, 26, 28, 0, "HC1 WAmEf (Am,Ef)");
195
dpd_buf4_init(&D, CC_DINTS, 0, 22, 28, 22, 28, 0, "D <Ij|Ab>");
196
dpd_contract244(&CME, &D, &WAmEf, 0, 0, 0, -1, 0.0);
198
dpd_buf4_close(&WAmEf);
200
/* T(n,a) <nM|eF> --> W(aM,eF) */
201
dpd_buf4_init(&WaMeF, CC3_HC1, C_irr, 25, 29, 25, 29, 0, "HC1 WaMeF (aM,eF)");
202
dpd_buf4_init(&D, CC_DINTS, 0, 23, 29, 23, 29, 0, "D <iJ|aB>");
203
dpd_contract244(&Cme, &D, &WaMeF, 0, 0, 0, -1, 0.0);
205
dpd_buf4_close(&WaMeF);
208
dpd_buf4_init(&WAMEF, CC3_HC1, C_irr, 21, 7, 21, 7, 0, "HC1 WAMEF (AM,E>F)");
209
dpd_buf4_sort(&WAMEF, CC3_HC1, qprs, 20, 7, "HC1 WAMEF (MA,F>E)");
210
dpd_buf4_close(&WAMEF);
211
dpd_buf4_init(&WAMEF, CC3_HC1, C_irr, 20, 7, 20, 7, 0, "HC1 WAMEF (MA,F>E)");
212
dpd_buf4_scm(&WAMEF, -1.0);
213
dpd_buf4_close(&WAMEF);
215
dpd_buf4_init(&Wamef, CC3_HC1, C_irr, 31, 17, 31, 17, 0, "HC1 Wamef (am,e>f)");
216
dpd_buf4_sort(&Wamef, CC3_HC1, qprs, 30, 17, "HC1 Wamef (ma,f>e)");
217
dpd_buf4_close(&Wamef);
218
dpd_buf4_init(&Wamef, CC3_HC1, C_irr, 30, 17, 30, 17, 0, "HC1 Wamef (ma,f>e)");
219
dpd_buf4_scm(&Wamef, -1.0);
220
dpd_buf4_close(&Wamef);
222
dpd_buf4_init(&WAmEf, CC3_HC1, C_irr, 26, 28, 26, 28, 0, "HC1 WAmEf (Am,Ef)");
223
dpd_buf4_sort(&WAmEf, CC3_HC1, qpsr, 27, 29, "HC1 WAmEf (mA,fE)");
224
dpd_buf4_close(&WAmEf);
226
dpd_buf4_init(&WaMeF, CC3_HC1, C_irr, 25, 29, 25, 29, 0, "HC1 WaMeF (aM,eF)");
227
dpd_buf4_sort(&WaMeF, CC3_HC1, qpsr, 24, 28, "HC1 WaMeF (Ma,Fe)");
228
dpd_buf4_close(&WaMeF);
230
dpd_file2_close(&CME);
231
dpd_file2_close(&Cme);
238
void HC1_Wmnie(int i, int C_irr) {
239
dpdbuf4 W, Wmnie, WMNIE, WMnIe, WmNiE, WMniE, WmNIe;
242
char CME_lbl[32], Cme_lbl[32];
243
sprintf(CME_lbl, "%s %d", "CME", i);
244
sprintf(Cme_lbl, "%s %d", "Cme", i);
246
if(params.ref == 0) { /** RHF **/
247
/* HC1_Wmnie(): Wmnie = + Cif <mn||fe> */
249
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
251
/* C(I,F) * D(Mn,Fe) --> W(Mn,Ie) */
252
dpd_buf4_init(&WMnIe, CC3_HC1, C_irr, 0, 10, 0, 10, 0, "HC1 WMnIe (Mn,Ie)");
253
dpd_buf4_init(&D, CC_DINTS, 0, 0, 5, 0, 5, 0, "D <ij|ab>");
254
dpd_contract244(&CME, &D, &WMnIe, 1, 2, 1, 1, 0.0);
255
dpd_file2_close(&CME);
257
/* W(Mn,Ie) --> W(Mn,eI) */
258
/* dpd_buf4_sort(&WMnIe, CC3_HC1, pqsr, 0, 11, "HC1 WMnIe (Mn,eI)"); */
259
dpd_buf4_close(&WMnIe);
262
else if(params.ref == 1) { /** ROHF **/
263
/* HC1_Wmnie(): Wmnie = + Cif <mn||fe> */
265
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
266
dpd_file2_init(&Cme, EOM_Cme, C_irr, 0, 1, Cme_lbl);
268
/* D(M>N,EF) * C(I,F) --> W(M>N,EI) */
269
dpd_buf4_init(&WMNIE, CC3_HC1, C_irr, 2, 11, 2, 11, 0, "HC1 WMNIE (M>N,EI)");
270
dpd_buf4_init(&D_a, CC_DINTS, 0, 2, 5, 2, 5,0, "D <ij||ab> (i>j,ab)");
271
dpd_contract424(&D_a,&CME,&WMNIE, 3, 1, 0, -1, 0);
272
dpd_buf4_close(&D_a);
273
dpd_buf4_close(&WMNIE);
275
/* D(m>n,ef) * C(i,f) --> W(m>n,ei) */
276
dpd_buf4_init(&Wmnie, CC3_HC1, C_irr, 2, 11, 2, 11, 0, "HC1 Wmnie (m>n,ei)");
277
dpd_buf4_init(&D_a, CC_DINTS, 0, 2, 5, 2, 5, 0, "D <ij||ab> (i>j,ab)");
278
dpd_contract424(&D_a, &Cme, &Wmnie, 3, 1, 0, -1, 0);
279
dpd_buf4_close(&D_a);
280
dpd_buf4_close(&Wmnie);
282
/* D(Mn,Fe) * C(I,F) --> W(Mn,Ie) */
283
dpd_buf4_init(&WMnIe, CC_TMP0, C_irr, 0, 10, 0, 10, 0, "HC1 WMnIe (Mn,Ie)");
284
dpd_buf4_init(&D, CC_DINTS, 0, 0, 5, 0, 5, 0, "D <ij|ab>");
285
dpd_contract244(&CME, &D, &WMnIe, 1, 2, 1, 1, 0);
287
/* W(Mn,Ie) --> W(Mn,eI) */
288
dpd_buf4_sort(&WMnIe, CC3_HC1, pqsr, 0, 11, "HC1 WMnIe (Mn,eI)");
289
dpd_buf4_close(&WMnIe);
291
/* D(mN,fE) * C(i,f) --> W(mN,iE) */
292
dpd_buf4_init(&WmNiE, CC_TMP1, C_irr, 0, 10, 0, 10, 0, "HC1 WmNiE (mN,iE)");
293
dpd_buf4_init(&D, CC_DINTS, 0, 0, 5, 0, 5, 0, "D <ij|ab>");
294
dpd_contract244(&Cme,&D,&WmNiE, 1, 2, 1, 1, 0);
296
/* W(mN,iE) --> W(mN,Ei) */
297
dpd_buf4_sort(&WmNiE, CC3_HC1, pqsr, 0, 11, "HC1 WmNiE (mN,Ei)");
298
dpd_buf4_close(&WmNiE);
300
dpd_file2_close(&CME);
301
dpd_file2_close(&Cme);
303
purge_Wmnie(C_irr); /* before sorting here */
305
/* also put "normal" sorted versions in CC_HBAR */
306
dpd_buf4_init(&WMNIE, CC3_HC1, C_irr, 2, 11, 2, 11, 0, "HC1 WMNIE (M>N,EI)");
307
dpd_buf4_sort(&WMNIE, CC3_HC1, pqsr, 2, 10, "HC1 WMNIE (M>N,IE)");
308
dpd_buf4_close(&WMNIE);
309
dpd_buf4_init(&Wmnie, CC3_HC1, C_irr, 2, 11, 2, 11, 0, "HC1 Wmnie (m>n,ei)");
310
dpd_buf4_sort(&Wmnie, CC3_HC1, pqsr, 2, 10, "HC1 Wmnie (m>n,ie)");
311
dpd_buf4_close(&Wmnie);
312
dpd_buf4_init(&WMnIe, CC3_HC1, C_irr, 0, 11, 0, 11, 0, "HC1 WMnIe (Mn,eI)");
313
dpd_buf4_sort(&WMnIe, CC3_HC1, pqsr, 0, 10, "HC1 WMnIe (Mn,Ie)");
314
dpd_buf4_close(&WMnIe);
315
dpd_buf4_init(&WmNiE, CC3_HC1, C_irr, 0, 11, 0, 11, 0, "HC1 WmNiE (mN,Ei)");
316
dpd_buf4_sort(&WmNiE, CC3_HC1, pqsr, 0, 10, "HC1 WmNiE (mN,iE)");
317
dpd_buf4_close(&WmNiE);
319
else if(params.ref == 2) { /** UHF **/
321
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
322
dpd_file2_init(&Cme, EOM_Cme, C_irr, 2, 3, Cme_lbl);
324
/* <M>N||EF> T(I,F) --> W(M>N,EI) */
325
dpd_buf4_init(&W, CC3_HC1, C_irr, 2, 21, 2, 21, 0, "HC1 WMNIE (M>N,EI)");
326
dpd_buf4_init(&D, CC_DINTS, 0, 2, 5, 2, 5, 0, "D <IJ||AB> (I>J,AB)");
327
dpd_contract424(&D, &CME, &W, 3, 1, 0, -1, 0);
331
/* <m>n||ef> T(i,f) --> W(m>n,ei) */
332
dpd_buf4_init(&W, CC3_HC1, C_irr, 12, 31, 12, 31, 0, "HC1 Wmnie (m>n,ei)");
333
dpd_buf4_init(&D, CC_DINTS, 0, 12, 15, 12, 15, 0, "D <ij||ab> (i>j,ab)");
334
dpd_contract424(&D, &Cme, &W, 3, 1, 0, -1, 0);
338
/* Z(nM,eI) = <nM|eF> T(I,F) */
339
dpd_buf4_init(&Z, CC_TMP1, C_irr, 23, 25, 23, 25, 0, "Z(nM,eI)");
340
dpd_buf4_init(&D, CC_DINTS, 0, 23, 29, 23, 29, 0, "D <iJ|aB>");
341
dpd_contract424(&D, &CME, &Z, 3, 1, 0, 1, 0);
343
/* Z(nM,eI) --> W(Mn,eI) */
344
dpd_buf4_sort(&Z, CC3_HC1, qprs, 22, 25, "HC1 WMnIe (Mn,eI)");
347
/* Z(Nm,Ei) = <Nm|Ef> T(i,f) */
348
dpd_buf4_init(&Z, CC_TMP1, C_irr, 22, 26, 22, 26, 0, "Z(Nm,Ei)");
349
dpd_buf4_init(&D, CC_DINTS, 0, 22, 28, 22, 28, 0, "D <Ij|Ab>");
350
dpd_contract424(&D, &Cme, &Z, 3, 1, 0, 1, 0);
352
/* Z(Nm,Ei) --> W(mN,Ei) */
353
dpd_buf4_sort(&Z, CC3_HC1, qprs, 23, 26, "HC1 WmNiE (mN,Ei)");
356
dpd_file2_close(&CME);
357
dpd_file2_close(&Cme);
359
/* also put "normal" sorted versions in CC3_HC1 */
360
dpd_buf4_init(&WMNIE, CC3_HC1, C_irr, 2, 21, 2, 21, 0, "HC1 WMNIE (M>N,EI)");
361
dpd_buf4_sort(&WMNIE, CC3_HC1, pqsr, 2, 20, "HC1 WMNIE (M>N,IE)");
362
dpd_buf4_close(&WMNIE);
363
dpd_buf4_init(&Wmnie, CC3_HC1, C_irr, 12, 31, 12, 31, 0, "HC1 Wmnie (m>n,ei)");
364
dpd_buf4_sort(&Wmnie, CC3_HC1, pqsr, 12, 30, "HC1 Wmnie (m>n,ie)");
365
dpd_buf4_close(&Wmnie);
366
dpd_buf4_init(&WMnIe, CC3_HC1, C_irr, 22, 25, 22, 25, 0, "HC1 WMnIe (Mn,eI)");
367
dpd_buf4_sort(&WMnIe, CC3_HC1, pqsr, 22, 24, "HC1 WMnIe (Mn,Ie)");
368
dpd_buf4_close(&WMnIe);
369
dpd_buf4_init(&WmNiE, CC3_HC1, C_irr, 23, 26, 23, 26, 0, "HC1 WmNiE (mN,Ei)");
370
dpd_buf4_sort(&WmNiE, CC3_HC1, pqsr, 23, 27, "HC1 WmNiE (mN,iE)");
371
dpd_buf4_close(&WmNiE);
377
void HC1_Wmnij(int i, int C_irr)
379
dpdbuf4 WMNIJ, Wmnij, WMnIj, W;
380
dpdbuf4 Eijka, Eijka_anti, Eaijk, Eaijk_anti;
382
char CME_lbl[32], Cme_lbl[32];
383
sprintf(CME_lbl, "%s %d", "CME", i);
384
sprintf(Cme_lbl, "%s %d", "Cme", i);
386
if(params.ref == 0) { /** RHF **/
387
/** HC1_Wmnij(): Wmnij = + P(ij) Cje <mn||ie> */
389
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
391
dpd_buf4_init(&WMnIj, CC3_HC1, C_irr, 0, 0, 0, 0, 0, "HC1 WMnIj (Mn,Ij)");
392
dpd_buf4_init(&Eaijk, CC_EINTS, 0, 11, 0, 11, 0, 0, "E <ai|jk>");
393
dpd_contract244(&CME, &Eaijk, &WMnIj, 1, 0, 1, 1, 0.0);
394
dpd_buf4_close(&Eaijk);
396
dpd_buf4_init(&Eijka, CC_EINTS, 0, 0, 10, 0, 10, 0, "E <ij|ka>");
397
dpd_contract424(&Eijka, &CME, &WMnIj, 3, 1, 0, 1, 1.0);
398
dpd_buf4_close(&Eijka);
399
dpd_buf4_close(&WMnIj);
401
dpd_file2_close(&CME);
404
else if(params.ref == 1) { /** ROHF **/
405
/** HC1_Wmnij(): Wmnij = + P(ij) Cje <mn||ie> */
407
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
408
dpd_file2_init(&Cme, EOM_Cme, C_irr, 0, 1, Cme_lbl);
410
dpd_buf4_init(&Eijka_anti, CC_EINTS, 0, 2, 10, 2, 10, 0, "E <ij||ka> (i>j,ka)");
411
dpd_buf4_init(&Eijka, CC_EINTS, 0, 0, 10, 0, 10, 0, "E <ij|ka>");
412
dpd_buf4_init(&Eaijk_anti, CC_EINTS, 0, 11, 2, 11, 0, 1, "E <ai|jk>");
413
dpd_buf4_init(&Eaijk, CC_EINTS, 0, 11, 0, 11, 0, 0, "E <ai|jk>");
415
dpd_buf4_init(&WMNIJ, CC3_HC1, C_irr, 2, 0, 2, 2, 0, "HC1 WMNIJ (M>N,I>J)");
416
dpd_contract424(&Eijka_anti, &CME, &WMNIJ, 3, 1, 0, 1, 0.0);
417
dpd_contract244(&CME, &Eaijk_anti, &WMNIJ, 1, 0, 1, 1, 1);
418
dpd_buf4_close(&WMNIJ);
420
dpd_buf4_init(&Wmnij, CC3_HC1, C_irr, 2, 0, 2, 2, 0, "HC1 Wmnij (m>n,i>j)");
421
dpd_contract424(&Eijka_anti, &Cme, &Wmnij, 3, 1, 0, 1, 0.0);
422
dpd_contract244(&Cme, &Eaijk_anti, &Wmnij, 1, 0, 1, 1, 1);
423
dpd_buf4_close(&Wmnij);
425
dpd_buf4_init(&WMnIj, CC3_HC1, C_irr, 0, 0, 0, 0, 0, "HC1 WMnIj (Mn,Ij)");
426
dpd_contract424(&Eijka, &Cme, &WMnIj, 3, 1, 0, 1, 0.0);
427
dpd_contract244(&CME, &Eaijk, &WMnIj, 1, 0, 1, 1, 1);
428
dpd_buf4_close(&WMnIj);
430
dpd_buf4_close(&Eijka_anti);
431
dpd_buf4_close(&Eijka);
432
dpd_buf4_close(&Eaijk_anti);
433
dpd_buf4_close(&Eaijk);
435
dpd_file2_close(&CME);
436
dpd_file2_close(&Cme);
439
else if(params.ref == 2) { /*** UHF ***/
440
/** HC1_Wmnij(): Wmnij = + P(ij) Cje <mn||ie> */
442
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
443
dpd_file2_init(&Cme, EOM_Cme, C_irr, 2, 3, Cme_lbl);
445
dpd_buf4_init(&WMNIJ, CC3_HC1, C_irr, 2, 0, 2, 2, 0, "HC1 WMNIJ (M>N,I>J)");
446
dpd_buf4_init(&Eijka, CC_EINTS, 0, 2, 20, 2, 20, 0, "E <IJ||KA> (I>J,KA)");
447
dpd_buf4_init(&Eaijk, CC_EINTS, 0, 21, 2, 21, 0, 1, "E <AI|JK>");
448
dpd_contract424(&Eijka, &CME, &WMNIJ, 3, 1, 0, 1, 0.0);
449
dpd_contract244(&CME, &Eaijk, &WMNIJ, 1, 0, 1, 1, 1.0);
450
dpd_buf4_close(&Eijka);
451
dpd_buf4_close(&Eaijk);
452
dpd_buf4_close(&WMNIJ);
454
dpd_buf4_init(&Wmnij, CC3_HC1, C_irr, 12, 10, 12, 12, 0, "HC1 Wmnij (m>n,i>j)");
455
dpd_buf4_init(&Eijka, CC_EINTS, 0, 12, 30, 12, 30, 0, "E <ij||ka> (i>j,ka)");
456
dpd_buf4_init(&Eaijk, CC_EINTS, 0, 31, 12, 31, 10, 1, "E <ai|jk>");
457
dpd_contract424(&Eijka, &Cme, &Wmnij, 3, 1, 0, 1, 0.0);
458
dpd_contract244(&Cme, &Eaijk, &Wmnij, 1, 0, 1, 1, 1.0);
459
dpd_buf4_close(&Eijka);
460
dpd_buf4_close(&Eaijk);
461
dpd_buf4_close(&Wmnij);
463
dpd_buf4_init(&WMnIj, CC3_HC1, C_irr, 22, 22, 22, 22, 0, "HC1 WMnIj (Mn,Ij)");
464
dpd_buf4_init(&Eijka, CC_EINTS, 0, 22, 24, 22, 24, 0, "E <Ij|Ka>");
465
dpd_buf4_init(&Eaijk, CC_EINTS, 0, 26, 22, 26, 22, 0, "E <Ai|Jk>");
466
dpd_contract424(&Eijka, &Cme, &WMnIj, 3, 1, 0, 1, 0.0);
467
dpd_contract244(&CME, &Eaijk, &WMnIj, 1, 0, 1, 1, 1.0);
468
dpd_buf4_close(&Eijka);
469
dpd_buf4_close(&Eaijk);
470
dpd_buf4_close(&WMnIj);
472
dpd_file2_close(&CME);
473
dpd_file2_close(&Cme);
478
void HC1_Wmbij(int i, int C_irr)
480
dpdbuf4 W, Wmnij, I, Z, Z1, Z2, C, D;
482
char CME_lbl[32], Cme_lbl[32];
483
sprintf(CME_lbl, "%s %d", "CME", i);
484
sprintf(Cme_lbl, "%s %d", "Cme", i);
486
if(params.ref == 0) { /** RHF **/
487
/* HC1_Wmbij = +P(ij) Cie <mb||ej> - Cnb <mn||ij> */
489
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
490
dpd_buf4_init(&W, CC3_HC1, C_irr, 10, 0, 10, 0, 0, "HC1 WMbIj (Mb,Ij)");
492
/** - C_n^b <Mn|Ij> -> W(Mb,Ij) **/
493
dpd_buf4_init(&I, CC_AINTS, 0, 0, 0, 0, 0, 0, "A <ij|kl>");
494
dpd_contract424(&I, &CME, &W, 1, 0, 1, -1.0, 0.0);
497
/* <Mb||Ie> Cje -> W(Mb,Ij) */
498
dpd_buf4_init(&C, CC_CINTS, 0, 10, 10, 10, 10, 0, "C <ia|jb>");
499
dpd_contract424(&C, &CME, &W, 3, 1, 0, 1.0, 1.0);
502
/* CIE <Mb|Ej> -> W(Mb,Ij) */
503
dpd_buf4_init(&D, CC_DINTS, 0, 10, 11, 10, 11, 0, "D <ij|ab> (ib,aj)");
504
dpd_contract244(&CME, &D, &W, 1, 2, 1, 1.0, 1.0);
507
dpd_buf4_sort(&W, CC3_HC1, rspq, 0, 10, "HC1 WMbIj (Ij,Mb)");
510
dpd_file2_close(&CME);
513
else if(params.ref == 1) { /** ROHF **/
514
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
515
dpd_file2_init(&Cme, EOM_Cme, C_irr, 0, 1, Cme_lbl);
517
/** - C_N^B <MN||IJ> --> W(MB,IJ) **/
518
dpd_buf4_init(&Wmnij, CC_AINTS, 0, 0, 2, 0, 0, 1, "A <ij|kl>");
519
dpd_buf4_init(&W, CC3_HC1, C_irr, 10, 2, 10, 2, 0, "HC1 WMBIJ (MB,I>J)");
520
dpd_contract424(&Wmnij, &CME, &W, 1, 0, 1, -1.0, 0.0);
522
dpd_buf4_close(&Wmnij);
524
/** - C_n^b <mn||ij> **/
525
dpd_buf4_init(&Wmnij, CC_AINTS, 0, 0, 2, 0, 0, 1, "A <ij|kl>");
526
dpd_buf4_init(&W, CC3_HC1, C_irr, 10, 2, 10, 2, 0, "HC1 Wmbij (mb,i>j)");
527
dpd_contract424(&Wmnij, &Cme, &W, 1, 0, 1, -1.0, 0.0);
529
dpd_buf4_close(&Wmnij);
531
/** - C_n^b <Mn|Ij> **/
532
dpd_buf4_init(&Wmnij, CC_AINTS, 0, 0, 0, 0, 0, 0, "A <ij|kl>");
533
dpd_buf4_init(&W, CC3_HC1, C_irr, 10, 0, 10, 0, 0, "HC1 WMbIj (Mb,Ij)");
534
dpd_contract424(&Wmnij, &Cme, &W, 1, 0, 1, -1.0, 0.0);
536
dpd_buf4_close(&Wmnij);
538
/** - C_N^B <mN|iJ> **/
539
dpd_buf4_init(&Wmnij, CC_AINTS, 0, 0, 0, 0, 0, 0, "A <ij|kl>");
540
dpd_buf4_init(&W, CC3_HC1, C_irr, 10, 0, 10, 0, 0, "HC1 WmBiJ (mB,iJ)");
541
dpd_contract424(&Wmnij, &CME, &W, 1, 0, 1, -1.0, 0.0);
543
dpd_buf4_close(&Wmnij);
545
/* term 2: - P(ij) <mb||ei> Cje -> Wmbij */
547
/** + P(IJ) C_J^E <MB||IE> -> WMBIJ **/
548
dpd_buf4_init(&Z2, CC_TMP0, C_irr, 10, 0, 10, 0, 0, "Z1(MB,IJ)");
549
dpd_buf4_init(&C, CC_CINTS, 0, 10, 10, 10, 10, 0, "C <ia||jb>");
550
dpd_contract424(&C, &CME, &Z2, 3, 1, 0, 1.0, 0.0);
553
dpd_buf4_sort(&Z2, CC_TMP1, pqsr, 10, 0, "Z2(MB,JI)");
555
dpd_buf4_init(&Z1, CC_TMP1, C_irr, 10, 0, 10, 0, 0, "Z2(MB,JI)");
556
dpd_buf4_axpy(&Z1, &Z2, -1.0);
558
dpd_buf4_init(&W, CC3_HC1, C_irr, 10, 0, 10, 2, 0, "HC1 WMBIJ (MB,I>J)");
559
dpd_buf4_axpy(&Z2, &W, 1.0);
563
/** - P(ij) C_j^e ( <mb||ie> ) -> WMBIJ **/
565
dpd_buf4_init(&Z2, CC_TMP0, C_irr, 10, 0, 10, 0, 0, "Z1(mb,ij)");
566
dpd_buf4_init(&C, CC_CINTS, 0, 10, 10, 10, 10, 0, "C <ia||jb>");
567
dpd_contract424(&C, &Cme, &Z2, 3, 1, 0, 1.0, 0.0);
570
dpd_buf4_sort(&Z2, CC_TMP1, pqsr, 10, 0, "Z2(mb,ji)");
572
dpd_buf4_init(&Z1, CC_TMP1, C_irr, 10, 0, 10, 0, 0, "Z2(mb,ji)");
573
dpd_buf4_axpy(&Z1, &Z2, -1.0);
575
dpd_buf4_init(&W, CC3_HC1, C_irr, 10, 0, 10, 2, 0, "HC1 Wmbij (mb,i>j)");
576
dpd_buf4_axpy(&Z2, &W, 1.0);
580
/* <Mb||Ie> Cje -> W(Mb,Ij) */
581
dpd_buf4_init(&W, CC3_HC1, C_irr, 10, 0, 10, 0, 0, "HC1 WMbIj (Mb,Ij)");
582
dpd_buf4_init(&C, CC_CINTS, 0, 10, 10, 10, 10, 0, "C <ia|jb>");
583
dpd_contract424(&C, &Cme, &W, 3, 1, 0, 1.0, 1.0);
586
/* CIE <Mb|Ej> -> W(Mb,Ij) */
587
dpd_buf4_init(&D, CC_DINTS, 0, 10, 11, 10, 11, 0, "D <ij|ab> (ib,aj)");
588
dpd_contract244(&CME, &D, &W, 1, 2, 1, 1.0, 1.0);
592
/** C_J^E <mB||iE> = Cje <mB|iE> **/
593
dpd_buf4_init(&W, CC3_HC1, C_irr, 10, 0, 10, 0, 0, "HC1 WmBiJ (mB,iJ)");
594
dpd_buf4_init(&C, CC_CINTS, 0, 10, 10, 10, 10, 0, "C <ia|jb>");
595
dpd_contract424(&C, &CME, &W, 3, 1, 0, 1.0, 1.0);
598
/** -C_i^e <mB||Je> = +Cie <mB|eJ> = +Cie <mJ|eB> **/
599
dpd_buf4_init(&D, CC_DINTS, 0, 10, 11, 10, 11, 0, "D <ij|ab> (ib,aj)");
600
dpd_contract244(&Cme, &D, &W, 1, 2, 1, 1.0, 1.0);
604
/* do purge before sort */
607
/* do final sort to get (Ij,Mb) */
609
dpd_buf4_init(&W, CC3_HC1, C_irr, 10, 2, 10, 2, 0, "HC1 WMBIJ (MB,I>J)");
610
dpd_buf4_sort(&W, CC3_HC1, rspq, 2, 10, "HC1 WMBIJ (I>J,MB)");
612
dpd_buf4_init(&W, CC3_HC1, C_irr, 10, 2, 10, 2, 0, "HC1 Wmbij (mb,i>j)");
613
dpd_buf4_sort(&W, CC3_HC1, rspq, 2, 10, "HC1 Wmbij (i>j,mb)");
615
dpd_buf4_init(&W, CC3_HC1, C_irr, 10, 0, 10, 0, 0, "HC1 WMbIj (Mb,Ij)");
616
dpd_buf4_sort(&W, CC3_HC1, rspq, 0, 10, "HC1 WMbIj (Ij,Mb)");
618
dpd_buf4_init(&W, CC3_HC1, C_irr, 10, 0, 10, 0, 0, "HC1 WmBiJ (mB,iJ)");
619
dpd_buf4_sort(&W, CC3_HC1, rspq, 0, 10, "HC1 WmBiJ (iJ,mB)");
622
dpd_file2_close(&CME);
623
dpd_file2_close(&Cme);
625
else if(params.ref == 2) { /** UHF **/
626
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
627
dpd_file2_init(&Cme, EOM_Cme, C_irr, 2, 3, Cme_lbl);
629
/** - C_N^B W_MNIJ --> W(MB,IJ) **/
630
dpd_buf4_init(&Wmnij, CC_AINTS, 0, 0, 2, 0, 0, 1, "A <IJ|KL>");
631
dpd_buf4_init(&W, CC3_HC1, C_irr, 20, 2, 20, 2, 0, "HC1 WMBIJ (MB,I>J)");
632
dpd_contract424(&Wmnij, &CME, &W, 1, 0, 1, -1.0, 0.0);
634
dpd_buf4_close(&Wmnij);
636
/** - C_n^b W_mnij **/
637
dpd_buf4_init(&Wmnij, CC_AINTS, 0, 10, 12, 10, 10, 1, "A <ij|kl>");
638
dpd_buf4_init(&W, CC3_HC1, C_irr, 30, 12, 30, 12, 0, "HC1 Wmbij (mb,i>j)");
639
dpd_contract424(&Wmnij, &Cme, &W, 1, 0, 1, -1.0, 0.0);
641
dpd_buf4_close(&Wmnij);
643
/** - C_n^b W_MnIj **/
644
dpd_buf4_init(&Wmnij, CC_AINTS, 0, 22, 22, 22, 22, 0, "A <Ij|Kl>");
645
dpd_buf4_init(&W, CC3_HC1, C_irr, 24, 22, 24, 22, 0, "HC1 WMbIj (Mb,Ij)");
646
dpd_contract424(&Wmnij, &Cme, &W, 1, 0, 1, -1.0, 0.0);
648
dpd_buf4_close(&Wmnij);
650
/** - C_N^B W_mNiJ **/
651
dpd_buf4_init(&Wmnij, CC_AINTS, 0, 22, 22, 22, 22, 0, "A <Ij|Kl>");
652
dpd_buf4_sort(&Wmnij, CC_TMP0, qpsr, 23, 23, "A <iJ|kL>");
653
dpd_buf4_close(&Wmnij);
654
dpd_buf4_init(&Wmnij, CC_TMP0, 0, 23, 23, 23, 23, 0, "A <iJ|kL>");
655
dpd_buf4_init(&W, CC3_HC1, C_irr, 27, 23, 27, 23, 0, "HC1 WmBiJ (mB,iJ)");
656
dpd_contract424(&Wmnij, &CME, &W, 1, 0, 1, -1.0, 0.0);
658
dpd_buf4_close(&Wmnij);
660
/* term 2: - P(ij) <mb||ei> Cje -> Wmbij */
662
/** + P(IJ) C_J^E <MB||IE> -> WMBIJ **/
663
dpd_buf4_init(&Z2, CC_TMP0, C_irr, 20, 0, 20, 0, 0, "Z1(MB,IJ)");
664
dpd_buf4_init(&C, CC_CINTS, 0, 20, 20, 20, 20, 0, "C <IA||JB>");
665
dpd_contract424(&C, &CME, &Z2, 3, 1, 0, 1.0, 0.0);
668
dpd_buf4_sort(&Z2, CC_TMP1, pqsr, 20, 0, "Z2(MB,JI)");
670
dpd_buf4_init(&Z1, CC_TMP1, C_irr, 20, 0, 20, 0, 0, "Z2(MB,JI)");
671
dpd_buf4_axpy(&Z1, &Z2, -1.0);
673
dpd_buf4_init(&W, CC3_HC1, C_irr, 20, 0, 20, 2, 0, "HC1 WMBIJ (MB,I>J)");
674
dpd_buf4_axpy(&Z2, &W, 1.0);
678
/** - P(ij) C_j^e ( <mb||ie> ) -> WMBIJ **/
680
dpd_buf4_init(&Z2, CC_TMP0, C_irr, 30, 10, 30, 10, 0, "Z1(mb,ij)");
681
dpd_buf4_init(&C, CC_CINTS, 0, 30, 30, 30, 30, 0, "C <ia||jb>");
682
dpd_contract424(&C, &Cme, &Z2, 3, 1, 0, 1.0, 0.0);
685
dpd_buf4_sort(&Z2, CC_TMP1, pqsr, 30, 10, "Z2(mb,ji)");
687
dpd_buf4_init(&Z1, CC_TMP1, C_irr, 30, 10, 30, 10, 0, "Z2(mb,ji)");
688
dpd_buf4_axpy(&Z1, &Z2, -1.0);
690
dpd_buf4_init(&W, CC3_HC1, C_irr, 30, 10, 30, 12, 0, "HC1 Wmbij (mb,i>j)");
691
dpd_buf4_axpy(&Z2, &W, 1.0);
695
/* <Mb||Ie> Cje -> W(Mb,Ij) */
696
dpd_buf4_init(&W, CC3_HC1, C_irr, 24, 22, 24, 22, 0, "HC1 WMbIj (Mb,Ij)");
697
dpd_buf4_init(&C, CC_CINTS, 0, 24, 24, 24, 24, 0, "C <Ia|Jb>");
698
dpd_contract424(&C, &Cme, &W, 3, 1, 0, 1.0, 1.0);
701
/* CIE <Mb|Ej> -> W(Mb,Ij) */
702
dpd_buf4_init(&D, CC_DINTS, 0, 24, 26, 24, 26, 0, "D <Ij|Ab> (Ib,Aj)");
703
dpd_contract244(&CME, &D, &W, 1, 2, 1, 1.0, 1.0);
707
/** C_J^E <mB||iE> = C^J_E <mB|iE> **/
708
dpd_buf4_init(&W, CC3_HC1, C_irr, 27, 23, 27, 23, 0, "HC1 WmBiJ (mB,iJ)");
709
dpd_buf4_init(&C, CC_CINTS, 0, 27, 27, 27, 27, 0, "C <iA|jB>");
710
dpd_contract424(&C, &CME, &W, 3, 1, 0, 1.0, 1.0);
713
/** -C_i^e <mB||Je> = +Cie <mB|eJ> = +Cie <mJ|eB> **/
714
dpd_buf4_init(&D, CC_DINTS, 0, 27, 25, 27, 25, 0, "D <iJ|aB> (iB,aJ)");
715
dpd_contract244(&Cme, &D, &W, 1, 2, 1, 1.0, 1.0);
719
/** do final sort to (Ij,Mb) **/
720
dpd_buf4_init(&W, CC3_HC1, C_irr, 20, 2, 20, 2, 0, "HC1 WMBIJ (MB,I>J)");
721
dpd_buf4_sort(&W, CC3_HC1, rspq, 2, 20, "HC1 WMBIJ (I>J,MB)");
724
dpd_buf4_init(&W, CC3_HC1, C_irr, 30, 12, 30, 12, 0, "HC1 Wmbij (mb,i>j)");
725
dpd_buf4_sort(&W, CC3_HC1, rspq, 12, 30, "HC1 Wmbij (i>j,mb)");
728
dpd_buf4_init(&W, CC3_HC1, C_irr, 24, 22, 24, 22, 0, "HC1 WMbIj (Mb,Ij)");
729
dpd_buf4_sort(&W, CC3_HC1, rspq, 22, 24, "HC1 WMbIj (Ij,Mb)");
732
dpd_buf4_init(&W, CC3_HC1, C_irr, 27, 23, 27, 23, 0, "HC1 WmBiJ (mB,iJ)");
733
dpd_buf4_sort(&W, CC3_HC1, rspq, 23, 27, "HC1 WmBiJ (iJ,mB)");
736
dpd_file2_close(&CME);
737
dpd_file2_close(&Cme);
743
void HC1_Wmbej(int i, int C_irr) {
744
dpdbuf4 WMBEJ, Wmbej, WMbEj, WmBeJ, WmBEj, WMbeJ;
745
dpdbuf4 D, C, F, E, X, Y, W, Z;
747
char CME_lbl[32], Cme_lbl[32];
748
sprintf(CME_lbl, "%s %d", "CME", i);
749
sprintf(Cme_lbl, "%s %d", "Cme", i);
751
if(params.ref == 0) { /** RHF **/
752
/* Cjf <mb||ef> -> Wmbej */
754
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
756
dpd_buf4_init(&WMbEj, CC_TMP0, C_irr, 10, 11, 10, 11, 0, "WMbEj");
757
dpd_buf4_init(&F, CC_FINTS, 0, 10, 5, 10, 5, 0, "F <ia|bc>");
758
dpd_contract424(&F, &CME, &WMbEj, 3, 1, 0, 1, 0.0);
760
dpd_buf4_close(&WMbEj);
763
dpd_buf4_init(&Z, CC_TMP0, C_irr, 11, 11, 11, 11, 0, "Z(bM,eJ)");
764
dpd_buf4_init(&F, CC_FINTS, 0, 11, 5, 11, 5, 0, "F <ai|bc>");
765
dpd_contract424(&F, &CME, &Z, 3, 1, 0, -1, 0);
768
dpd_buf4_sort(&Z, CC_TMP0, qpsr, 10, 10, "WMbeJ"); /* (Mb,Je) */
771
/* - Cnb <mn||ej> -> Wmbej */
773
dpd_buf4_init(&E, CC_EINTS, 0, 11, 0, 11, 0, 0, "E <ai|jk>");
774
dpd_buf4_init(&WMbEj, CC_TMP0, C_irr, 10, 11, 10, 11, 0, "WMbEj");
775
dpd_contract424(&E, &CME, &WMbEj, 3, 0, 1, -1, 1.0);
776
dpd_buf4_close(&WMbEj);
779
dpd_buf4_init(&E, CC_EINTS, 0, 0, 10, 0, 10, 0, "E <ij|ka>");
780
dpd_buf4_init(&WMbeJ, CC_TMP0, C_irr, 10, 10, 10, 10, 0, "WMbeJ");
781
dpd_contract424(&E, &CME, &WMbeJ, 1, 0, 1, 1, 1.0);
782
dpd_buf4_close(&WMbeJ);
785
dpd_file2_close(&CME);
787
/* Sort to (ME,JB) */
789
dpd_buf4_init(&WMbEj, CC_TMP0, C_irr, 10, 11, 10, 11, 0, "WMbEj");
790
dpd_buf4_sort(&WMbEj, CC3_HC1, prsq, 10, 10, "HC1 WMbEj (ME,jb)");
791
dpd_buf4_close(&WMbEj);
793
dpd_buf4_init(&WMbeJ, CC_TMP0, C_irr, 10, 10, 10, 10, 0, "WMbeJ");
794
dpd_buf4_sort(&WMbeJ, CC3_HC1, psrq, 10, 10, "HC1 WMbeJ (Me,Jb)");
795
dpd_buf4_close(&WMbeJ);
798
else if(params.ref == 1) { /** ROHF **/
801
/* + Cjf <mb||ef> -> Wmbej*/
802
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
803
dpd_file2_init(&Cme, EOM_Cme, C_irr, 0, 1, Cme_lbl);
805
dpd_buf4_init(&F, CC_FINTS, 0, 10, 5, 10, 5, 1, "F <ia|bc>");
806
dpd_buf4_init(&WMBEJ, CC_TMP0, C_irr, 10, 11, 10, 11, 0, "WMBEJ");
807
dpd_contract424(&F, &CME, &WMBEJ, 3, 1, 0, 1, 0);
808
dpd_buf4_close(&WMBEJ);
809
dpd_buf4_init(&Wmbej, CC_TMP0, C_irr, 10, 11, 10, 11, 0, "Wmbej");
810
dpd_contract424(&F, &Cme, &Wmbej, 3, 1, 0, 1, 0);
811
dpd_buf4_close(&Wmbej);
814
dpd_buf4_init(&F, CC_FINTS, 0, 10, 5, 10, 5, 0, "F <ia|bc>");
815
dpd_buf4_init(&WMbEj, CC_TMP0, C_irr, 10, 11, 10, 11, 0, "WMbEj");
816
dpd_contract424(&F, &Cme, &WMbEj, 3, 1, 0, 1, 0);
817
dpd_buf4_close(&WMbEj);
818
dpd_buf4_init(&WmBeJ, CC_TMP0, C_irr, 10, 11, 10, 11, 0, "WmBeJ");
819
dpd_contract424(&F, &CME, &WmBeJ, 3, 1, 0, 1, 0);
820
dpd_buf4_close(&WmBeJ);
822
dpd_buf4_init(&WMbeJ, CC_TMP0, C_irr, 10, 10, 10, 10, 0, "WMbeJ");
823
dpd_contract244(&CME, &F, &WMbeJ, 1, 2, 1, -1, 0);
824
dpd_buf4_close(&WMbeJ);
825
dpd_buf4_init(&WmBEj, CC_TMP0, C_irr, 10, 10, 10, 10, 0, "WmBEj");
826
dpd_contract244(&Cme, &F, &WmBEj, 1, 2, 1, -1, 0);
827
dpd_buf4_close(&WmBEj);
830
/* - Cnb <mn||ej> -> Wmbej */
832
dpd_buf4_init(&E, CC_EINTS, 0, 0, 11, 2, 11, 0, "E <ij||ka> (i>j,ak)");
833
dpd_buf4_init(&WMBEJ, CC_TMP0, C_irr, 10, 11, 10, 11, 0, "WMBEJ");
834
dpd_contract424(&E, &CME, &WMBEJ, 1, 0, 1, 1, 1);
835
dpd_buf4_close(&WMBEJ);
836
dpd_buf4_init(&Wmbej, CC_TMP0, C_irr, 10, 11, 10, 11, 0, "Wmbej");
837
dpd_contract424(&E, &Cme, &Wmbej, 1, 0, 1, 1, 1);
838
dpd_buf4_close(&Wmbej);
841
dpd_buf4_init(&E, CC_EINTS, 0, 11, 0, 11, 0, 0, "E <ai|jk>");
842
dpd_buf4_init(&WMbEj, CC_TMP0, C_irr, 10, 11, 10, 11, 0, "WMbEj");
843
dpd_contract424(&E, &Cme, &WMbEj, 3, 0, 1, -1, 1);
844
dpd_buf4_close(&WMbEj);
845
dpd_buf4_init(&WmBeJ, CC_TMP0, C_irr, 10, 11, 10, 11, 0, "WmBeJ");
846
dpd_contract424(&E, &CME, &WmBeJ, 3, 0, 1, -1, 1);
847
dpd_buf4_close(&WmBeJ);
850
dpd_buf4_init(&E, CC_EINTS, 0, 0, 10, 0, 10, 0, "E <ij|ka>");
851
dpd_buf4_init(&WMbeJ, CC_TMP0, C_irr, 10, 10, 10, 10, 0, "WMbeJ");
852
dpd_contract424(&E, &Cme, &WMbeJ, 1, 0, 1, 1, 1);
853
dpd_buf4_close(&WMbeJ);
854
dpd_buf4_init(&WmBEj, CC_TMP0, C_irr, 10, 10, 10, 10, 0, "WmBEj");
855
dpd_contract424(&E, &CME, &WmBEj, 1, 0, 1, 1, 1);
856
dpd_buf4_close(&WmBEj);
859
/* Convert to (ME,JB) for remaining terms */
861
dpd_buf4_init(&WMBEJ, CC_TMP0, C_irr, 10, 11, 10, 11, 0, "WMBEJ");
862
dpd_buf4_sort(&WMBEJ, CC3_HC1, prsq, 10, 10, "HC1 WMBEJ (ME,JB)");
863
dpd_buf4_close(&WMBEJ);
865
dpd_buf4_init(&Wmbej, CC_TMP0, C_irr, 10, 11, 10, 11, 0, "Wmbej");
866
dpd_buf4_sort(&Wmbej, CC3_HC1, prsq, 10, 10, "HC1 Wmbej (me,jb)");
867
dpd_buf4_close(&Wmbej);
869
dpd_buf4_init(&WMbEj, CC_TMP0, C_irr, 10, 11, 10, 11, 0, "WMbEj");
870
dpd_buf4_sort(&WMbEj, CC3_HC1, prsq, 10, 10, "HC1 WMbEj (ME,jb)");
871
dpd_buf4_close(&WMbEj);
873
dpd_buf4_init(&WmBeJ, CC_TMP0, C_irr, 10, 11, 10, 11, 0, "WmBeJ");
874
dpd_buf4_sort(&WmBeJ, CC3_HC1, prsq, 10, 10, "HC1 WmBeJ (me,JB)");
875
dpd_buf4_close(&WmBeJ);
877
dpd_buf4_init(&WMbeJ, CC_TMP0, C_irr, 10, 10, 10, 10, 0, "WMbeJ");
878
dpd_buf4_sort(&WMbeJ, CC3_HC1, psrq, 10, 10, "HC1 WMbeJ (Me,Jb)");
879
dpd_buf4_close(&WMbeJ);
881
dpd_buf4_init(&WmBEj, CC_TMP0, C_irr, 10, 10, 10, 10, 0, "WmBEj");
882
dpd_buf4_sort(&WmBEj, CC3_HC1, psrq, 10, 10, "HC1 WmBEj (mE,jB)");
883
dpd_buf4_close(&WmBEj);
886
else if(params.ref == 2) { /** UHF **/
888
/* F -> Wmbej */ /* + Cjf <mb||ef> -> Wmbej*/
890
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
891
dpd_file2_init(&Cme, EOM_Cme, C_irr, 2, 3, Cme_lbl);
893
dpd_buf4_init(&W, CC_TMP0, C_irr, 20, 21, 20, 21, 0, "WMBEJ");
894
dpd_buf4_init(&F, CC_FINTS, 0, 20, 5, 20, 5, 1, "F <IA|BC>");
895
dpd_contract424(&F, &CME, &W, 3, 1, 0, 1, 0.0);
899
dpd_buf4_init(&W, CC_TMP0, C_irr, 30, 31, 30, 31, 0, "Wmbej");
900
dpd_buf4_init(&F, CC_FINTS, 0, 30, 15, 30, 15, 1, "F <ia|bc>");
901
dpd_contract424(&F, &Cme, &W, 3, 1, 0, 1, 0.0);
905
dpd_buf4_init(&W, CC_TMP0, C_irr, 24, 26, 24, 26, 0, "WMbEj");
906
dpd_buf4_init(&F, CC_FINTS, 0, 24, 28, 24, 28, 0, "F <Ia|Bc>");
907
dpd_contract424(&F, &Cme, &W, 3, 1, 0, 1, 0.0);
911
dpd_buf4_init(&W, CC_TMP0, C_irr, 27, 25, 27, 25, 0, "WmBeJ");
912
dpd_buf4_init(&F, CC_FINTS, 0, 27, 29, 27, 29, 0, "F <iA|bC>");
913
dpd_contract424(&F, &CME, &W, 3, 1, 0, 1, 0.0);
917
dpd_buf4_init(&W, CC_TMP0, C_irr, 24, 24, 24, 24, 0, "WMbeJ");
918
dpd_buf4_init(&F, CC_FINTS, 0, 24, 28, 24, 28, 0, "F <Ia|Bc>");
919
dpd_contract244(&CME, &F, &W, 1, 2, 1, -1, 0.0);
923
dpd_buf4_init(&W, CC_TMP0, C_irr, 27, 27, 27, 27, 0, "WmBEj");
924
dpd_buf4_init(&F, CC_FINTS, 0, 27, 29, 27, 29, 0, "F <iA|bC>");
925
dpd_contract244(&Cme, &F, &W, 1, 2, 1, -1, 0.0);
929
/* - Cnb <mn||ej> -> Wmbej */
931
dpd_buf4_init(&W, CC_TMP0, C_irr, 20, 21, 20, 21, 0, "WMBEJ");
932
dpd_buf4_init(&E, CC_EINTS, 0, 0, 21, 2, 21, 0, "E <IJ||KA> (I>J,AK)");
933
dpd_contract424(&E, &CME, &W, 1, 0, 1, 1, 1);
937
dpd_buf4_init(&W, CC_TMP0, C_irr, 30, 31, 30, 31, 0, "Wmbej");
938
dpd_buf4_init(&E, CC_EINTS, 0, 10, 31, 12, 31, 0, "E <ij||ka> (i>j,ak)");
939
dpd_contract424(&E, &Cme, &W, 1, 0, 1, 1, 1);
943
dpd_buf4_init(&W, CC_TMP0, C_irr, 24, 26, 24, 26, 0, "WMbEj");
944
dpd_buf4_init(&E, CC_EINTS, 0, 22, 26, 22, 26, 0, "E <Ij|Ak>");
945
dpd_contract424(&E, &Cme, &W, 1, 0, 1, -1, 1);
949
dpd_buf4_init(&W, CC_TMP0, C_irr, 27, 25, 27, 25, 0, "WmBeJ");
950
dpd_buf4_init(&E, CC_EINTS, 0, 23, 25, 23, 25, 0, "E <iJ|aK>");
951
dpd_contract424(&E, &CME, &W, 1, 0, 1, -1, 1);
955
dpd_buf4_init(&W, CC_TMP0, C_irr, 24, 24, 24, 24, 0, "WMbeJ");
956
dpd_buf4_init(&E, CC_EINTS, 0, 22, 24, 22, 24, 0, "E <Ij|Ka>");
957
dpd_contract424(&E, &Cme, &W, 1, 0, 1, 1, 1);
961
dpd_buf4_init(&W, CC_TMP0, C_irr, 27, 27, 27, 27, 0, "WmBEj");
962
dpd_buf4_init(&E, CC_EINTS, 0, 23, 27, 23, 27, 0, "E <iJ|kA>");
963
dpd_contract424(&E, &CME, &W, 1, 0, 1, 1, 1);
967
/* Convert to (ME,JB) for remaining terms */
969
dpd_buf4_init(&W, CC_TMP0, C_irr, 20, 21, 20, 21, 0, "WMBEJ");
970
dpd_buf4_sort(&W, CC3_HC1, prsq, 20, 20, "HC1 WMBEJ (ME,JB)");
973
dpd_buf4_init(&W, CC_TMP0, C_irr, 30, 31, 30, 31, 0, "Wmbej");
974
dpd_buf4_sort(&W, CC3_HC1, prsq, 30, 30, "HC1 Wmbej (me,jb)");
977
dpd_buf4_init(&W, CC_TMP0, C_irr, 24, 26, 24, 26, 0, "WMbEj");
978
dpd_buf4_sort(&W, CC3_HC1, prsq, 20, 30, "HC1 WMbEj (ME,jb)");
981
dpd_buf4_init(&W, CC_TMP0, C_irr, 27, 25, 27, 25, 0, "WmBeJ");
982
dpd_buf4_sort(&W, CC3_HC1, prsq, 30, 20, "HC1 WmBeJ (me,JB)");
985
dpd_buf4_init(&W, CC_TMP0, C_irr, 24, 24, 24, 24, 0, "WMbeJ");
986
dpd_buf4_sort(&W, CC3_HC1, psrq, 24, 24, "HC1 WMbeJ (Me,Jb)");
989
dpd_buf4_init(&W, CC_TMP0, C_irr, 27, 27, 27, 27, 0, "WmBEj");
990
dpd_buf4_sort(&W, CC3_HC1, psrq, 27, 27, "HC1 WmBEj (mE,jB)");
999
void HC1_Wabei(int i, int C_irr) {
1000
dpdbuf4 Z, Z1, Z2, Z3;
1001
dpdbuf4 B, C, D, E, F, W;
1003
char CME_lbl[32], Cme_lbl[32];
1005
sprintf(CME_lbl, "%s %d", "CME", i);
1006
sprintf(Cme_lbl, "%s %d", "Cme", i);
1008
if(params.ref == 0) { /** RHF **/
1010
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
1012
dpd_buf4_init(&Z1, CC_TMP0, C_irr, 5, 11, 5, 11, 0, "CC3 Z(Ab,Ei)");
1013
dpd_buf4_init(&Z2, CC_TMP0, C_irr, 11, 5, 11, 5, 0, "CC3 Z(Ei,Ab)");
1015
/* Z1(Ab,Ei) <-- <Ab|Ef> * C(i,f) */
1016
dpd_buf4_init(&B, CC_BINTS, 0, 5, 5, 5, 5, 0, "B <ab|cd>");
1017
dpd_contract424(&B, &CME, &Z1, 3, 1, 0, 1, 0);
1020
/* Z1(Ab,Ei) <-- - C(M,A) * <Mb|Ei> */
1021
dpd_buf4_init(&D, CC_DINTS, 0, 10, 11, 10, 11, 0, "D <ij|ab> (ib,aj)");
1022
dpd_contract244(&CME, &D, &Z1, 0, 0, 0, -1, 1);
1025
/* Z2(Ei,Ab) <-- - <mA,iE> C(m,b) */
1026
dpd_buf4_init(&C, CC_CINTS, 0, 10, 10, 10, 10, 0, "C <ia|jb>");
1027
dpd_buf4_sort(&C, CC_TMP0, qpsr, 11, 11, "CC3 Z(Ei,Am)");
1030
dpd_buf4_init(&Z, CC_TMP0, 0, 11, 11, 11, 11, 0, "CC3 Z(Ei,Am)");
1031
dpd_contract424(&Z, &CME, &Z2, 3, 0, 0, -1, 0);
1034
dpd_buf4_close(&Z2);
1036
/* W(Ab,Ei) = Z1(Ab,Ei) + Z2(Ei,Ab) */
1037
dpd_buf4_sort_axpy(&Z1, CC_TMP0, rspq, 11, 5, "CC3 Z(Ei,Ab)", 1);
1038
dpd_buf4_close(&Z1);
1039
dpd_buf4_init(&Z2, CC_TMP0, C_irr, 11, 5, 11, 5, 0, "CC3 Z(Ei,Ab)");
1040
dpd_buf4_sort(&Z2, CC3_HC1, qpsr, 10, 5, "CC3 WAbEi (Ie,Ab)");
1042
dpd_file2_close(&CME);
1045
else if (params.ref == 1) { /* ROHF */
1046
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
1047
dpd_file2_init(&Cme, EOM_Cme, C_irr, 0, 1, Cme_lbl);
1049
dpd_buf4_init(&Z1, CC_TMP0, C_irr, 7, 11, 7, 11, 0, "WABEI (A>B,EI)");
1050
dpd_buf4_init(&B, CC_BINTS, 0, 7, 5, 5, 5, 1, "B <ab|cd>");
1051
dpd_contract424(&B, &CME, &Z1, 3, 1, 0, 1.0, 0.0);
1053
dpd_buf4_close(&Z1);
1055
dpd_buf4_init(&Z1, CC_TMP0, C_irr, 7, 11, 7, 11, 0, "Wabei (a>b,ei)");
1056
dpd_buf4_init(&B, CC_BINTS, 0, 7, 5, 5, 5, 1, "B <ab|cd>");
1057
dpd_contract424(&B, &Cme, &Z1, 3, 1, 0, 1.0, 0.0);
1059
dpd_buf4_close(&Z1);
1061
dpd_buf4_init(&Z1, CC_TMP0, C_irr, 5, 11, 5, 11, 0, "WAbEi (Ab,Ei)");
1062
dpd_buf4_init(&B, CC_BINTS, 0, 5, 5, 5, 5, 0, "B <ab|cd>");
1063
dpd_contract424(&B, &Cme, &Z1, 3, 1, 0, 1.0, 0.0);
1065
dpd_buf4_close(&Z1);
1067
dpd_buf4_init(&Z1, CC_TMP0, C_irr, 5, 11, 5, 11, 0, "WaBeI (aB,eI)");
1068
dpd_buf4_init(&B, CC_BINTS, 0, 5, 5, 5, 5, 0, "B <ab|cd>");
1069
dpd_contract424(&B, &CME, &Z1, 3, 1, 0, 1.0, 0.0);
1071
dpd_buf4_close(&Z1);
1073
/** -CMA <MI||EB> + CMB <MI||EA> **/
1075
dpd_buf4_init(&Z1, CC_TMP1, C_irr, 5, 11, 5, 11, 0, "Z (AB,EI)");
1077
dpd_buf4_init(&C, CC_CINTS, 0, 10, 11, 10, 11, 0, "C <ia||jb> (ia,bj)");
1078
dpd_contract244(&CME, &C, &Z1, 0, 0, 0, 1.0, 0.0);
1081
dpd_buf4_sort(&Z1, CC_TMP1, qprs, 5, 11, "Z (BA,EI)");
1083
dpd_buf4_init(&W, CC_TMP0, C_irr, 5, 11, 7, 11, 0, "WABEI (A>B,EI)");
1084
dpd_buf4_axpy(&Z1, &W, 1.0);
1085
dpd_buf4_close(&Z1);
1086
dpd_buf4_init(&Z1, CC_TMP1, C_irr, 5, 11, 5, 11, 0, "Z (BA,EI)");
1087
dpd_buf4_axpy(&Z1, &W, -1.0);
1088
dpd_buf4_close(&Z1);
1091
/** -Cma <mi||eb> + Cmb <mi||ea> **/
1093
dpd_buf4_init(&Z1, CC_TMP1, C_irr, 5, 11, 5, 11, 0, "Z (ab,ei)");
1095
dpd_buf4_init(&C, CC_CINTS, 0, 10, 11, 10, 11, 0, "C <ia||jb> (ia,bj)");
1096
dpd_contract244(&Cme, &C, &Z1, 0, 0, 0, 1.0, 0.0);
1099
dpd_buf4_sort(&Z1, CC_TMP1, qprs, 5, 11, "Z (ba,ei)");
1101
dpd_buf4_init(&W, CC_TMP0, C_irr, 5, 11, 7, 11, 0, "Wabei (a>b,ei)");
1102
dpd_buf4_axpy(&Z1, &W, 1.0);
1103
dpd_buf4_close(&Z1);
1104
dpd_buf4_init(&Z1, CC_TMP1, C_irr, 5, 11, 5, 11, 0, "Z (ba,ei)");
1105
dpd_buf4_axpy(&Z1, &W, -1.0);
1106
dpd_buf4_close(&Z1);
1109
/** -CMA <Mi||Eb> - Cmb <mA||iE> **/
1111
dpd_buf4_init(&Z1, CC_TMP0, C_irr, 5, 11, 5, 11, 0, "WAbEi (Ab,Ei)");
1112
dpd_buf4_init(&D, CC_DINTS, 0, 10, 11, 10, 11, 0, "D <ij|ab> (ib,aj)");
1113
dpd_contract244(&CME, &D, &Z1, 0, 0, 0, -1.0, 1.0);
1115
dpd_buf4_close(&Z1);
1117
dpd_buf4_init(&Z1, CC_TMP1, C_irr, 5, 11, 5, 11, 0, "WAbEi (bA,Ei)");
1118
dpd_buf4_init(&C, CC_CINTS, 0, 10, 11, 10, 11, 0, "C <ia|jb> (ia,bj)");
1119
dpd_contract244(&Cme, &C, &Z1, 0, 0, 0, -1.0, 0.0);
1122
dpd_buf4_sort_axpy(&Z1, CC_TMP0, qprs, 5, 11, "WAbEi (Ab,Ei)", 1.0);
1123
dpd_buf4_close(&Z1);
1126
dpd_buf4_init(&Z1, CC_TMP0, C_irr, 5, 11, 5, 11, 0, "WaBeI (aB,eI)");
1127
dpd_buf4_init(&D, CC_DINTS, 0, 10, 11, 10, 11, 0, "D <ij|ab> (ib,aj)");
1128
dpd_contract244(&Cme, &D, &Z1, 0, 0, 0, -1.0, 1.0);
1130
dpd_buf4_close(&Z1);
1132
dpd_buf4_init(&Z1, CC_TMP1, C_irr, 5, 11, 5, 11, 0, "WaBeI (Ba,eI)");
1133
dpd_buf4_init(&C, CC_CINTS, 0, 10, 11, 10, 11, 0, "C <ia|jb> (ia,bj)");
1134
dpd_contract244(&CME, &C, &Z1, 0, 0, 0, -1.0, 0.0);
1137
dpd_buf4_sort_axpy(&Z1, CC_TMP0, qprs, 5, 11, "WaBeI (aB,eI)", 1.0);
1138
dpd_buf4_close(&Z1);
1140
dpd_file2_close(&CME);
1141
dpd_file2_close(&Cme);
1143
/* final sort to (EI,AB) */
1145
dpd_buf4_init(&W, CC_TMP0, C_irr, 5, 11, 7, 11, 0, "WABEI (A>B,EI)");
1146
dpd_buf4_sort(&W, CC_TMP0, rspq, 11, 7, "WABEI (EI,A>B)");
1148
dpd_buf4_init(&W, CC_TMP0, C_irr, 5, 11, 7, 11, 0, "Wabei (a>b,ei)");
1149
dpd_buf4_sort(&W, CC_TMP0, rspq, 11, 7, "Wabei (ei,a>b)");
1151
dpd_buf4_init(&W, CC_TMP0, C_irr, 5, 11, 5, 11, 0, "WAbEi (Ab,Ei)");
1152
dpd_buf4_sort(&W, CC_TMP0, rspq, 11, 5, "WAbEi (Ei,Ab)");
1154
dpd_buf4_init(&W, CC_TMP0, C_irr, 5, 11, 5, 11, 0, "WaBeI (aB,eI)");
1155
dpd_buf4_sort(&W, CC_TMP0, rspq, 11, 5, "WaBeI (eI,aB)");
1160
/* final sort to Wabei (IE,AB) */
1161
dpd_buf4_init(&W, CC_TMP0, C_irr, 11, 7, 11, 7, 0, "WABEI (EI,A>B)");
1162
dpd_buf4_sort(&W, CC3_HC1, qprs, 10, 7, "HC1 WABEI (IE,A>B)");
1164
dpd_buf4_init(&W, CC_TMP0, C_irr, 11, 7, 11, 7, 0, "Wabei (ei,a>b)");
1165
dpd_buf4_sort(&W, CC3_HC1, qprs, 10, 7, "HC1 Wabei (ie,a>b)");
1167
dpd_buf4_init(&W, CC_TMP0, C_irr, 11, 5, 11, 5, 0, "WAbEi (Ei,Ab)");
1168
dpd_buf4_sort(&W, CC3_HC1, qprs, 10, 5, "HC1 WAbEi (iE,Ab)");
1170
dpd_buf4_init(&W, CC_TMP0, C_irr, 11, 5, 11, 5, 0, "WaBeI (eI,aB)");
1171
dpd_buf4_sort(&W, CC3_HC1, qprs, 10, 5, "HC1 WaBeI (Ie,aB)");
1174
else if (params.ref == 2) { /* UHF */
1175
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
1176
dpd_file2_init(&Cme, EOM_Cme, C_irr, 2, 3, Cme_lbl);
1178
/* term 1, Cif <ab||ef> */
1180
dpd_buf4_init(&Z1, CC_TMP0, C_irr, 7, 21, 7, 21, 0, "WABEI (A>B,EI)");
1181
dpd_buf4_init(&B, CC_BINTS, 0, 7, 5, 5, 5, 1, "B <AB|CD>");
1182
dpd_contract424(&B, &CME, &Z1, 3, 1, 0, 1.0, 0.0);
1184
dpd_buf4_close(&Z1);
1186
dpd_buf4_init(&Z1, CC_TMP0, C_irr, 17, 31, 17, 31, 0, "Wabei (a>b,ei)");
1187
dpd_buf4_init(&B, CC_BINTS, 0, 17, 15, 15, 15, 1, "B <ab|cd>");
1188
dpd_contract424(&B, &Cme, &Z1, 3, 1, 0, 1.0, 0.0);
1190
dpd_buf4_close(&Z1);
1192
dpd_buf4_init(&Z1, CC_TMP0, C_irr, 28, 26, 28, 26, 0, "WAbEi (Ab,Ei)");
1193
dpd_buf4_init(&B, CC_BINTS, 0, 28, 28, 28, 28, 0, "B <Ab|Cd>");
1194
dpd_contract424(&B, &Cme, &Z1, 3, 1, 0, 1.0, 0.0);
1196
dpd_buf4_close(&Z1);
1198
dpd_buf4_init(&Z, CC_TMP0, C_irr, 24, 28, 24, 28, 0, "Z(Ie,Ba)");
1199
dpd_buf4_init(&B, CC_BINTS, 0, 28, 28, 28, 28, 0, "B <Ab|Cd>");
1200
dpd_contract244(&CME, &B, &Z, 1, 0, 0, 1.0, 0.0);
1202
/** Z(Ie,Ba) --> W'(aB,eI) **/
1203
/* srqp seems to have a bug
1204
dpd_buf4_sort(&Z, CC_TMP0, srqp, 29, 25, "WaBeI (aB,eI)");
1206
dpd_buf4_sort(&Z, CC_TMP0, rspq, 28, 24, "WaBeI (Ba,Ie) 1");
1208
dpd_buf4_init(&Z, CC_TMP0, C_irr, 28, 24, 28, 24, 0, "WaBeI (Ba,Ie)");
1209
dpd_buf4_sort(&Z, CC_TMP0, qpsr, 29, 25, "WaBeI (aB,eI)");
1213
/* -CMA <MI||EB> + CMB <MI||EA> **/
1215
dpd_buf4_init(&Z1, CC_TMP1, C_irr, 5, 21, 5, 21, 0, "Z (AB,EI)");
1217
dpd_buf4_init(&C, CC_CINTS, 0, 20, 21, 20, 21, 0, "C <IA||JB> (IA,BJ)");
1218
dpd_contract244(&CME, &C, &Z1, 0, 0, 0, 1.0, 0.0);
1221
dpd_buf4_sort(&Z1, CC_TMP1, qprs, 5, 21, "Z (BA,EI)");
1223
dpd_buf4_init(&W, CC_TMP0, C_irr, 5, 21, 7, 21, 0, "WABEI (A>B,EI)");
1224
dpd_buf4_axpy(&Z1, &W, 1.0);
1225
dpd_buf4_close(&Z1);
1226
dpd_buf4_init(&Z1, CC_TMP1, C_irr, 5, 21, 5, 21, 0, "Z (BA,EI)");
1227
dpd_buf4_axpy(&Z1, &W, -1.0);
1228
dpd_buf4_close(&Z1);
1230
/** -Cma <mi||eb> + Cmb <mi||ea> **/
1232
dpd_buf4_init(&Z1, CC_TMP1, C_irr, 15, 31, 15, 31, 0, "Z (ab,ei)");
1234
dpd_buf4_init(&C, CC_CINTS, 0, 30, 31, 30, 31, 0, "C <ia||jb> (ia,bj)");
1235
dpd_contract244(&Cme, &C, &Z1, 0, 0, 0, 1.0, 0.0);
1238
dpd_buf4_sort(&Z1, CC_TMP1, qprs, 15, 31, "Z (ba,ei)");
1240
dpd_buf4_init(&W, CC_TMP0, C_irr, 15, 31, 17, 31, 0, "Wabei (a>b,ei)");
1241
dpd_buf4_axpy(&Z1, &W, 1.0);
1242
dpd_buf4_close(&Z1);
1243
dpd_buf4_init(&Z1, CC_TMP1, C_irr, 15, 31, 15, 31, 0, "Z (ba,ei)");
1244
dpd_buf4_axpy(&Z1, &W, -1.0);
1245
dpd_buf4_close(&Z1);
1247
/** -CMA <Mi||Eb> - Cmb <mA|iE> **/
1249
dpd_buf4_init(&Z1, CC_TMP0, C_irr, 28, 26, 28, 26, 0, "WAbEi (Ab,Ei)");
1250
dpd_buf4_init(&D, CC_DINTS, 0, 24, 26, 24, 26, 0, "D <Ij|Ab> (Ib,Aj)");
1251
dpd_contract244(&CME, &D, &Z1, 0, 0, 0, -1.0, 1.0);
1253
dpd_buf4_close(&Z1);
1255
dpd_buf4_init(&Z1, CC_TMP1, C_irr, 29, 26, 29, 26, 0, "WAbEi (bA,Ei)");
1256
dpd_buf4_init(&C, CC_CINTS, 0, 27, 26, 27, 26, 0, "C <Ai|Bj> (iA,Bj)");
1257
dpd_contract244(&Cme, &C, &Z1, 0, 0, 0, -1.0, 0.0);
1260
dpd_buf4_sort_axpy(&Z1, CC_TMP0, qprs, 28, 26, "WAbEi (Ab,Ei)", 1.0);
1261
dpd_buf4_close(&Z1);
1264
dpd_buf4_init(&Z1, CC_TMP0, C_irr, 29, 25, 29, 25, 0, "WaBeI (aB,eI)");
1265
dpd_buf4_init(&D, CC_DINTS, 0, 27, 25, 27, 25, 0, "D <iJ|aB> (iB,aJ)");
1266
dpd_contract244(&Cme, &D, &Z1, 0, 0, 0, -1.0, 1.0);
1268
dpd_buf4_close(&Z1);
1270
dpd_buf4_init(&Z1, CC_TMP1, C_irr, 28, 25, 28, 25, 0, "WaBeI (Ba,eI)");
1271
dpd_buf4_init(&C, CC_CINTS, 0, 24, 25, 24, 25, 0, "C <Ia|Jb> (Ia,bJ)");
1272
dpd_contract244(&CME, &C, &Z1, 0, 0, 0, -1.0, 0.0);
1275
dpd_buf4_sort_axpy(&Z1, CC_TMP0, qprs, 29, 25, "WaBeI (aB,eI)", 1.0);
1276
dpd_buf4_close(&Z1);
1278
/* final sort and storage */
1279
dpd_buf4_init(&W, CC_TMP0, C_irr, 7, 21, 7, 21, 0, "WABEI (A>B,EI)");
1280
dpd_buf4_sort(&W, CC_TMP0, rspq, 21, 7, "WABEI (EI,A>B)");
1283
dpd_buf4_init(&W, CC_TMP0, C_irr, 21, 7, 21, 7, 0, "WABEI (EI,A>B)");
1284
dpd_buf4_sort(&W, CC3_HC1, qprs, 20, 7, "HC1 WABEI (IE,B>A)");
1287
dpd_buf4_init(&W, CC3_HC1, C_irr, 20, 7, 20, 7, 0, "HC1 WABEI (IE,B>A)");
1288
dpd_buf4_scm(&W, -1.0);
1291
/* final sort and storage */
1292
dpd_buf4_init(&W, CC_TMP0, C_irr, 17, 31, 17, 31, 0, "Wabei (a>b,ei)");
1293
dpd_buf4_sort(&W, CC_TMP0, rspq, 31, 17, "Wabei (ei,a>b)");
1296
dpd_buf4_init(&W, CC_TMP0, C_irr, 31, 17, 31, 17, 0, "Wabei (ei,a>b)");
1297
dpd_buf4_sort(&W, CC3_HC1, qprs, 30, 17, "HC1 Wabei (ie,b>a)");
1300
dpd_buf4_init(&W, CC3_HC1, C_irr, 30, 17, 30, 17, 0, "HC1 Wabei (ie,b>a)");
1301
dpd_buf4_scm(&W, -1.0);
1304
/* final sort and storage */
1305
dpd_buf4_init(&W, CC_TMP0, C_irr, 28, 26, 28, 26, 0, "WAbEi (Ab,Ei)");
1306
dpd_buf4_sort(&W, CC_TMP0, rspq, 26, 28, "WAbEi (Ei,Ab)");
1308
dpd_buf4_init(&W, CC_TMP0, C_irr, 26, 28, 26, 28, 0, "WAbEi (Ei,Ab)");
1309
dpd_buf4_sort(&W, CC3_HC1, qpsr, 27, 29, "HC1 WAbEi (iE,bA)");
1312
/* final sort and storage */
1313
dpd_buf4_init(&W, CC_TMP0, C_irr, 29, 25, 29, 25, 0, "WaBeI (aB,eI)");
1314
dpd_buf4_sort(&W, CC_TMP0, rspq, 25, 29, "WaBeI (eI,aB)");
1316
dpd_buf4_init(&W, CC_TMP0, C_irr, 25, 29, 25, 29, 0, "WaBeI (eI,aB)");
1317
dpd_buf4_sort(&W, CC3_HC1, qpsr, 24, 28, "HC1 WaBeI (Ie,Ba)");
1320
dpd_file2_close(&CME);
1321
dpd_file2_close(&Cme);
1325
void purge_HC1(int C_irr) {
1326
dpdfile2 FAE, Fmi, FME, Fme;
1328
int *occpi, *virtpi;
1329
int h, a, b, e, f, i, j, m, n;
1330
int A, B, E, F, I, J, M, N;
1331
int mn, ei, ma, ef, me, jb, mb, ij, ab;
1332
int asym, bsym, esym, fsym, isym, jsym, msym, nsym;
1333
int *occ_off, *vir_off;
1334
int *occ_sym, *vir_sym;
1335
int *openpi, nirreps;
1337
nirreps = moinfo.nirreps;
1338
occpi = moinfo.occpi; virtpi = moinfo.virtpi;
1339
occ_off = moinfo.occ_off; vir_off = moinfo.vir_off;
1340
occ_sym = moinfo.occ_sym; vir_sym = moinfo.vir_sym;
1341
openpi = moinfo.openpi;
1343
/* Purge FME matrix elements */
1344
dpd_file2_init(&FME, CC3_HC1, C_irr, 0, 1, "HC1 FME");
1345
dpd_file2_mat_init(&FME);
1346
dpd_file2_mat_rd(&FME);
1347
for(h=0; h < nirreps; h++) {
1348
for(m=0; m<occpi[h]; m++)
1349
for(e=(virtpi[h]-openpi[h]); e<virtpi[h]; e++)
1350
FME.matrix[h][m][e] = 0.0;
1352
dpd_file2_mat_wrt(&FME);
1353
dpd_file2_mat_close(&FME);
1354
dpd_file2_close(&FME);
1356
/* Purge Fme matrix elements */
1357
dpd_file2_init(&Fme, CC3_HC1, C_irr, 0, 1, "HC1 Fme");
1358
dpd_file2_mat_init(&Fme);
1359
dpd_file2_mat_rd(&Fme);
1360
for(h=0; h < nirreps; h++) {
1361
for(e=0; e<virtpi[h]; e++)
1362
for(m=(occpi[h]-openpi[h]); m<occpi[h]; m++)
1363
Fme.matrix[h][m][e] = 0.0;
1365
dpd_file2_mat_wrt(&Fme);
1366
dpd_file2_mat_close(&Fme);
1367
dpd_file2_close(&Fme);
1369
/* Purge Wmnij matrix elements */
1370
dpd_file4_init(&W, CC3_HC1, C_irr, 2, 2,"HC1 Wmnij (m>n,i>j)");
1371
for(h=0; h < nirreps; h++) {
1372
dpd_file4_mat_irrep_init(&W, h);
1373
dpd_file4_mat_irrep_rd(&W, h);
1374
for(mn=0; mn < W.params->rowtot[h]; mn++) {
1375
m = W.params->roworb[h][mn][0];
1376
n = W.params->roworb[h][mn][1];
1377
msym = W.params->psym[m];
1378
nsym = W.params->qsym[n];
1379
M = m - occ_off[msym];
1380
N = n - occ_off[nsym];
1381
for(ij=0; ij < W.params->coltot[h]; ij++) {
1382
i = W.params->colorb[h][ij][0];
1383
j = W.params->colorb[h][ij][1];
1384
isym = W.params->rsym[i];
1385
jsym = W.params->ssym[j];
1386
I = i - occ_off[isym];
1387
J = j - occ_off[jsym];
1388
if ((I >= (occpi[isym] - openpi[isym])) ||
1389
(J >= (occpi[jsym] - openpi[jsym])) ||
1390
(M >= (occpi[msym] - openpi[msym])) ||
1391
(N >= (occpi[nsym] - openpi[nsym])) )
1392
W.matrix[h][mn][ij] = 0.0;
1395
dpd_file4_mat_irrep_wrt(&W, h);
1396
dpd_file4_mat_irrep_close(&W, h);
1398
dpd_file4_close(&W);
1400
dpd_file4_init(&W, CC3_HC1, C_irr, 0, 0,"HC1 WMnIj (Mn,Ij)");
1401
for(h=0; h < nirreps; h++) {
1402
dpd_file4_mat_irrep_init(&W, h);
1403
dpd_file4_mat_irrep_rd(&W, h);
1404
for(mn=0; mn < W.params->rowtot[h]; mn++) {
1405
n = W.params->roworb[h][mn][1];
1406
nsym = W.params->qsym[n];
1407
N = n - occ_off[nsym];
1408
for(ij=0; ij < W.params->coltot[h]; ij++) {
1409
j = W.params->colorb[h][ij][1];
1410
jsym = W.params->ssym[j];
1411
J = j - occ_off[jsym];
1412
if ((J >= (occpi[jsym] - openpi[jsym])) ||
1413
(N >= (occpi[nsym] - openpi[nsym])) )
1414
W.matrix[h][mn][ij] = 0.0;
1417
dpd_file4_mat_irrep_wrt(&W, h);
1418
dpd_file4_mat_irrep_close(&W, h);
1420
dpd_file4_close(&W);
1423
/* Purge Wmbej matrix elements */
1424
dpd_file4_init(&W, CC3_HC1, C_irr, 10, 10,"HC1 WMBEJ (ME,JB)");
1425
for(h=0; h < nirreps; h++) {
1426
dpd_file4_mat_irrep_init(&W, h);
1427
dpd_file4_mat_irrep_rd(&W, h);
1428
for(me=0; me < W.params->rowtot[h]; me++) {
1429
e = W.params->roworb[h][me][1];
1430
esym = W.params->qsym[e];
1431
E = e - vir_off[esym];
1432
for(jb=0; jb < W.params->coltot[h]; jb++) {
1433
b = W.params->colorb[h][jb][1];
1434
bsym = W.params->ssym[b];
1435
B = b - vir_off[bsym];
1436
if ((E >= (virtpi[esym] - openpi[esym])) ||
1437
(B >= (virtpi[bsym] - openpi[bsym])) )
1438
W.matrix[h][me][jb] = 0.0;
1441
dpd_file4_mat_irrep_wrt(&W, h);
1442
dpd_file4_mat_irrep_close(&W, h);
1444
dpd_file4_close(&W);
1447
dpd_file4_init(&W, CC3_HC1, C_irr, 10, 10,"HC1 Wmbej (me,jb)");
1448
for(h=0; h < nirreps; h++) {
1449
dpd_file4_mat_irrep_init(&W, h);
1450
dpd_file4_mat_irrep_rd(&W, h);
1451
for(me=0; me < W.params->rowtot[h]; me++) {
1452
m = W.params->roworb[h][me][0];
1453
msym = W.params->psym[m];
1454
M = m - occ_off[msym];
1455
for(jb=0; jb < W.params->coltot[h]; jb++) {
1456
j = W.params->colorb[h][jb][0];
1457
jsym = W.params->rsym[j];
1458
J = j - occ_off[jsym];
1459
if ((M >= (occpi[msym] - openpi[msym])) ||
1460
(J >= (occpi[jsym] - openpi[jsym])) )
1461
W.matrix[h][me][jb] = 0.0;
1464
dpd_file4_mat_irrep_wrt(&W, h);
1465
dpd_file4_mat_irrep_close(&W, h);
1467
dpd_file4_close(&W);
1470
dpd_file4_init(&W, CC3_HC1, C_irr, 10, 10,"HC1 WMbEj (ME,jb)");
1471
for(h=0; h < nirreps; h++) {
1472
dpd_file4_mat_irrep_init(&W, h);
1473
dpd_file4_mat_irrep_rd(&W, h);
1474
for(me=0; me < W.params->rowtot[h]; me++) {
1475
e = W.params->roworb[h][me][1];
1476
esym = W.params->qsym[e];
1477
E = e - vir_off[esym];
1478
for(jb=0; jb < W.params->coltot[h]; jb++) {
1479
j = W.params->colorb[h][jb][0];
1480
jsym = W.params->rsym[j];
1481
J = j - occ_off[jsym];
1482
if ((E >= (virtpi[esym] - openpi[esym])) ||
1483
(J >= (occpi[jsym] - openpi[jsym])) )
1484
W.matrix[h][me][jb] = 0.0;
1487
dpd_file4_mat_irrep_wrt(&W, h);
1488
dpd_file4_mat_irrep_close(&W, h);
1490
dpd_file4_close(&W);
1493
dpd_file4_init(&W, CC3_HC1, C_irr, 10, 10,"HC1 WmBeJ (me,JB)");
1494
for(h=0; h < nirreps; h++) {
1495
dpd_file4_mat_irrep_init(&W, h);
1496
dpd_file4_mat_irrep_rd(&W, h);
1497
for(me=0; me < W.params->rowtot[h]; me++) {
1498
m = W.params->roworb[h][me][0];
1499
msym = W.params->psym[m];
1500
M = m - occ_off[msym];
1501
for(jb=0; jb < W.params->coltot[h]; jb++) {
1502
b = W.params->colorb[h][jb][1];
1503
bsym = W.params->ssym[b];
1504
B = b - vir_off[bsym];
1505
if ((M >= (occpi[msym] - openpi[msym])) ||
1506
(B >= (virtpi[bsym] - openpi[bsym])) )
1507
W.matrix[h][me][jb] = 0.0;
1510
dpd_file4_mat_irrep_wrt(&W, h);
1511
dpd_file4_mat_irrep_close(&W, h);
1513
dpd_file4_close(&W);
1516
dpd_file4_init(&W, CC3_HC1, C_irr, 10, 10,"HC1 WmBEj (mE,jB)");
1517
for(h=0; h < nirreps; h++) {
1518
dpd_file4_mat_irrep_init(&W, h);
1519
dpd_file4_mat_irrep_rd(&W, h);
1520
for(me=0; me < W.params->rowtot[h]; me++) {
1521
m = W.params->roworb[h][me][0];
1522
e = W.params->roworb[h][me][1];
1523
msym = W.params->psym[m];
1524
esym = W.params->qsym[e];
1525
M = m - occ_off[msym];
1526
E = e - vir_off[esym];
1527
for(jb=0; jb < W.params->coltot[h]; jb++) {
1528
j = W.params->colorb[h][jb][0];
1529
b = W.params->colorb[h][jb][1];
1530
jsym = W.params->rsym[j];
1531
bsym = W.params->ssym[b];
1532
J = j - occ_off[jsym];
1533
B = b - vir_off[bsym];
1534
if ((M >= (occpi[msym] - openpi[msym])) ||
1535
(E >= (virtpi[esym] - openpi[esym])) ||
1536
(J >= (occpi[jsym] - openpi[jsym])) ||
1537
(B >= (virtpi[bsym] - openpi[bsym])) )
1538
W.matrix[h][me][jb] = 0.0;
1541
dpd_file4_mat_irrep_wrt(&W, h);
1542
dpd_file4_mat_irrep_close(&W, h);
1544
dpd_file4_close(&W);
1547
/* Purge Wamef matrix elements */
1548
dpd_file4_init(&W, CC3_HC1, C_irr, 11, 7,"HC1 WAMEF (AM,E>F)");
1549
for(h=0; h < nirreps; h++) {
1550
dpd_file4_mat_irrep_init(&W, h);
1551
dpd_file4_mat_irrep_rd(&W, h);
1552
for(ma=0; ma < W.params->rowtot[h]; ma++) {
1553
a = W.params->roworb[h][ma][0];
1554
asym = W.params->psym[a];
1555
A = a - vir_off[asym];
1556
for(ef=0; ef< W.params->coltot[h]; ef++) {
1557
e = W.params->colorb[h][ef][0];
1558
f = W.params->colorb[h][ef][1];
1559
esym = W.params->rsym[e];
1560
fsym = W.params->ssym[f];
1561
E = e - vir_off[esym];
1562
F = f - vir_off[fsym];
1563
if ((A >= (virtpi[asym] - openpi[asym])) ||
1564
(E >= (virtpi[esym] - openpi[esym])) ||
1565
(F >= (virtpi[fsym] - openpi[fsym])) )
1566
W.matrix[h][ma][ef] = 0.0;
1569
dpd_file4_mat_irrep_wrt(&W, h);
1570
dpd_file4_mat_irrep_close(&W, h);
1572
dpd_file4_close(&W);
1574
dpd_file4_init(&W, CC3_HC1, C_irr, 11, 7,"HC1 Wamef (am,e>f)");
1575
for(h=0; h < nirreps; h++) {
1576
dpd_file4_mat_irrep_init(&W, h);
1577
dpd_file4_mat_irrep_rd(&W, h);
1578
for(ma=0; ma < W.params->rowtot[h]; ma++) {
1579
m = W.params->roworb[h][ma][1];
1580
msym = W.params->qsym[m];
1581
M = m - occ_off[msym];
1582
for(ef=0; ef< W.params->coltot[h]; ef++) {
1583
if (M >= (occpi[msym] - openpi[msym]))
1584
W.matrix[h][ma][ef] = 0.0;
1587
dpd_file4_mat_irrep_wrt(&W, h);
1588
dpd_file4_mat_irrep_close(&W, h);
1590
dpd_file4_close(&W);
1592
dpd_file4_init(&W, CC3_HC1, C_irr, 11, 5,"HC1 WAmEf (Am,Ef)");
1593
for(h=0; h < nirreps; h++) {
1594
dpd_file4_mat_irrep_init(&W, h);
1595
dpd_file4_mat_irrep_rd(&W, h);
1596
for(ma=0; ma < W.params->rowtot[h]; ma++) {
1597
a = W.params->roworb[h][ma][0];
1598
m = W.params->roworb[h][ma][1];
1599
asym = W.params->psym[a];
1600
msym = W.params->qsym[m];
1601
M = m - occ_off[msym];
1602
A = a - vir_off[asym];
1603
for(ef=0; ef< W.params->coltot[h]; ef++) {
1604
e = W.params->colorb[h][ef][0];
1605
esym = W.params->rsym[e];
1606
E = e - vir_off[esym];
1607
if ((A >= (virtpi[asym] - openpi[asym])) ||
1608
(M >= (occpi[msym] - openpi[msym])) ||
1609
(E >= (virtpi[esym] - openpi[esym])) )
1610
W.matrix[h][ma][ef] = 0.0;
1613
dpd_file4_mat_irrep_wrt(&W, h);
1614
dpd_file4_mat_irrep_close(&W, h);
1616
dpd_file4_close(&W);
1618
dpd_file4_init(&W, CC3_HC1, C_irr, 11, 5,"HC1 WaMeF (aM,eF)");
1619
for(h=0; h < nirreps; h++) {
1620
dpd_file4_mat_irrep_init(&W, h);
1621
dpd_file4_mat_irrep_rd(&W, h);
1622
for(ma=0; ma < W.params->rowtot[h]; ma++) {
1623
for(ef=0; ef< W.params->coltot[h]; ef++) {
1624
f = W.params->colorb[h][ef][1];
1625
fsym = W.params->ssym[f];
1626
F = f - vir_off[fsym];
1627
if (F >= (virtpi[fsym] - openpi[fsym]))
1628
W.matrix[h][ma][ef] = 0.0;
1631
dpd_file4_mat_irrep_wrt(&W, h);
1632
dpd_file4_mat_irrep_close(&W, h);
1634
dpd_file4_close(&W);
1641
/* Purge Wmnie matrix elements */
1642
void purge_Wmnie(int C_irr) {
1644
int *occpi, *virtpi;
1645
int h, a, b, e, f, i, j, m, n;
1646
int A, B, E, F, I, J, M, N;
1647
int mn, ei, ma, ef, me, jb, mb, ij, ab;
1648
int asym, bsym, esym, fsym, isym, jsym, msym, nsym;
1649
int *occ_off, *vir_off;
1650
int *occ_sym, *vir_sym;
1651
int *openpi, nirreps;
1653
nirreps = moinfo.nirreps;
1654
occpi = moinfo.occpi; virtpi = moinfo.virtpi;
1655
occ_off = moinfo.occ_off; vir_off = moinfo.vir_off;
1656
occ_sym = moinfo.occ_sym; vir_sym = moinfo.vir_sym;
1657
openpi = moinfo.openpi;
1659
dpd_file4_init(&W, CC3_HC1, C_irr, 0, 11,"HC1 WMnIe (Mn,eI)");
1660
for(h=0; h < nirreps; h++) {
1661
dpd_file4_mat_irrep_init(&W, h);
1662
dpd_file4_mat_irrep_rd(&W, h);
1663
for(mn=0; mn<W.params->rowtot[h]; mn++) {
1664
n = W.params->roworb[h][mn][1];
1665
nsym = W.params->qsym[n];
1666
N = n - occ_off[nsym];
1667
for(ei=0; ei<W.params->coltot[h]; ei++) {
1668
if (N >= (occpi[nsym] - openpi[nsym]))
1669
W.matrix[h][mn][ei] = 0.0;
1672
dpd_file4_mat_irrep_wrt(&W, h);
1673
dpd_file4_mat_irrep_close(&W, h);
1676
dpd_file4_init(&W, CC3_HC1, C_irr, 2, 11, "HC1 WMNIE (M>N,EI)");
1677
for(h=0; h < W.params->nirreps; h++) {
1678
dpd_file4_mat_irrep_init(&W, h);
1679
dpd_file4_mat_irrep_rd(&W, h);
1680
for(mn=0; mn<W.params->rowtot[h]; mn++) {
1681
for(ei=0; ei<W.params->coltot[h]; ei++) {
1682
e = W.params->colorb[h][ei][0];
1683
esym = W.params->rsym[e];
1684
E = e - vir_off[esym];
1685
if (E >= (virtpi[esym] - openpi[esym]))
1686
W.matrix[h][mn][ei] = 0.0;
1689
dpd_file4_mat_irrep_wrt(&W, h);
1690
dpd_file4_mat_irrep_close(&W, h);
1692
dpd_file4_close(&W);
1694
dpd_file4_init(&W, CC3_HC1, C_irr, 2, 11,"HC1 Wmnie (m>n,ei)");
1695
for(h=0; h < nirreps; h++) {
1696
dpd_file4_mat_irrep_init(&W, h);
1697
dpd_file4_mat_irrep_rd(&W, h);
1698
for(mn=0; mn<W.params->rowtot[h]; mn++) {
1699
m = W.params->roworb[h][mn][0];
1700
n = W.params->roworb[h][mn][1];
1701
msym = W.params->psym[m];
1702
nsym = W.params->qsym[n];
1703
M = m - occ_off[msym];
1704
N = n - occ_off[nsym];
1705
for(ei=0; ei<W.params->coltot[h]; ei++) {
1706
i = W.params->colorb[h][ei][1];
1707
isym = W.params->ssym[i];
1708
I = i - occ_off[isym];
1709
if ((M >= (occpi[msym] - openpi[msym])) ||
1710
(N >= (occpi[nsym] - openpi[nsym])) ||
1711
(I >= (occpi[isym] - openpi[isym])) )
1712
W.matrix[h][mn][ei] = 0.0;
1715
dpd_file4_mat_irrep_wrt(&W, h);
1716
dpd_file4_mat_irrep_close(&W, h);
1718
dpd_file4_close(&W);
1720
dpd_file4_init(&W, CC3_HC1, C_irr, 0, 11,"HC1 WmNiE (mN,Ei)");
1721
for(h=0; h < nirreps; h++) {
1722
dpd_file4_mat_irrep_init(&W, h);
1723
dpd_file4_mat_irrep_rd(&W, h);
1724
for(mn=0; mn<W.params->rowtot[h]; mn++) {
1725
m = W.params->roworb[h][mn][0];
1726
msym = W.params->psym[m];
1727
M = m - occ_off[msym];
1728
for(ei=0; ei<W.params->coltot[h]; ei++) {
1729
e = W.params->colorb[h][ei][0];
1730
i = W.params->colorb[h][ei][1];
1731
esym = W.params->rsym[e];
1732
isym = W.params->ssym[i];
1733
E = e - vir_off[esym];
1734
I = i - occ_off[isym];
1735
if ((M >= (occpi[msym] - openpi[msym])) ||
1736
(E >= (virtpi[esym] - openpi[esym])) ||
1737
(I >= (occpi[isym] - openpi[isym])) )
1738
W.matrix[h][mn][ei] = 0.0;
1741
dpd_file4_mat_irrep_wrt(&W, h);
1742
dpd_file4_mat_irrep_close(&W, h);
1744
dpd_file4_close(&W);
1748
/* Purge WMBIJ matrix elements */
1749
void purge_Wmbij(int C_irr) {
1751
int *occpi, *virtpi;
1752
int h, a, b, e, f, i, j, m, n;
1753
int A, B, E, F, I, J, M, N;
1754
int mn, ei, ma, ef, me, jb, mb, ij, ab;
1755
int asym, bsym, esym, fsym, isym, jsym, msym, nsym;
1756
int *occ_off, *vir_off;
1757
int *occ_sym, *vir_sym;
1758
int *openpi, nirreps;
1760
nirreps = moinfo.nirreps;
1761
occpi = moinfo.occpi; virtpi = moinfo.virtpi;
1762
occ_off = moinfo.occ_off; vir_off = moinfo.vir_off;
1763
occ_sym = moinfo.occ_sym; vir_sym = moinfo.vir_sym;
1764
openpi = moinfo.openpi;
1766
dpd_file4_init(&W, CC3_HC1, C_irr, 10, 2,"HC1 WMBIJ (MB,I>J)");
1767
for(h=0; h < nirreps; h++) {
1768
dpd_file4_mat_irrep_init(&W, h);
1769
dpd_file4_mat_irrep_rd(&W, h);
1770
for(mb=0; mb<W.params->rowtot[h]; mb++) {
1771
b = W.params->roworb[h][mb][1];
1772
bsym = W.params->qsym[b];
1773
B = b - vir_off[bsym];
1774
for(ij=0; ij<W.params->coltot[h]; ij++) {
1775
if (B >= (virtpi[bsym] - openpi[bsym]))
1776
W.matrix[h][mb][ij] = 0.0;
1779
dpd_file4_mat_irrep_wrt(&W, h);
1780
dpd_file4_mat_irrep_close(&W, h);
1782
dpd_file4_close(&W);
1784
dpd_file4_init(&W, CC3_HC1, C_irr, 10, 2,"HC1 Wmbij (mb,i>j)");
1785
for(h=0; h < nirreps; h++) {
1786
dpd_file4_mat_irrep_init(&W, h);
1787
dpd_file4_mat_irrep_rd(&W, h);
1788
for(mb=0; mb<W.params->rowtot[h]; mb++) {
1789
m = W.params->roworb[h][mb][0];
1790
msym = W.params->psym[m];
1791
M = m - occ_off[msym];
1792
for(ij=0; ij<W.params->coltot[h]; ij++) {
1793
i = W.params->colorb[h][ij][0];
1794
j = W.params->colorb[h][ij][1];
1795
isym = W.params->rsym[i];
1796
jsym = W.params->ssym[j];
1797
I = i - occ_off[isym];
1798
J = j - occ_off[jsym];
1799
if ((M >= (occpi[msym] - openpi[msym])) ||
1800
(I >= (occpi[isym] - openpi[isym])) ||
1801
(J >= (occpi[jsym] - openpi[jsym])) )
1802
W.matrix[h][mb][ij] = 0.0;
1805
dpd_file4_mat_irrep_wrt(&W, h);
1806
dpd_file4_mat_irrep_close(&W, h);
1808
dpd_file4_close(&W);
1810
dpd_file4_init(&W, CC3_HC1, C_irr, 10, 0,"HC1 WMbIj (Mb,Ij)");
1811
for(h=0; h < nirreps; h++) {
1812
dpd_file4_mat_irrep_init(&W, h);
1813
dpd_file4_mat_irrep_rd(&W, h);
1814
for(mb=0; mb<W.params->rowtot[h]; mb++) {
1815
for(ij=0; ij<W.params->coltot[h]; ij++) {
1816
j = W.params->colorb[h][ij][1];
1817
jsym = W.params->ssym[j];
1818
J = j - occ_off[jsym];
1819
if (J >= (occpi[jsym] - openpi[jsym]))
1820
W.matrix[h][mb][ij] = 0.0;
1823
dpd_file4_mat_irrep_wrt(&W, h);
1824
dpd_file4_mat_irrep_close(&W, h);
1826
dpd_file4_close(&W);
1828
dpd_file4_init(&W, CC3_HC1, C_irr, 10, 0,"HC1 WmBiJ (mB,iJ)");
1829
for(h=0; h < nirreps; h++) {
1830
dpd_file4_mat_irrep_init(&W, h);
1831
dpd_file4_mat_irrep_rd(&W, h);
1832
for(mb=0; mb<W.params->rowtot[h]; mb++) {
1833
m = W.params->roworb[h][mb][0];
1834
b = W.params->roworb[h][mb][1];
1835
msym = W.params->psym[m];
1836
bsym = W.params->qsym[b];
1837
M = m - occ_off[msym];
1838
B = b - vir_off[bsym];
1839
for(ij=0; ij<W.params->coltot[h]; ij++) {
1840
i = W.params->colorb[h][ij][0];
1841
isym = W.params->rsym[i];
1842
I = i - occ_off[isym];
1843
if ((M >= (occpi[msym] - openpi[msym])) ||
1844
(B >= (virtpi[bsym] - openpi[bsym])) ||
1845
(I >= (occpi[isym] - openpi[isym])) )
1846
W.matrix[h][mb][ij] = 0.0;
1849
dpd_file4_mat_irrep_wrt(&W, h);
1850
dpd_file4_mat_irrep_close(&W, h);
1852
dpd_file4_close(&W);
1856
/* Purge Wabei matrix elements */
1857
void purge_Wabei(int C_irr) {
1860
int *occpi, *virtpi;
1861
int h, a, b, e, f, i, j, m, n;
1862
int A, B, E, F, I, J, M, N;
1863
int mn, ei, ma, ef, me, jb, mb, ij, ab;
1864
int asym, bsym, esym, fsym, isym, jsym, msym, nsym;
1865
int *occ_off, *vir_off;
1866
int *occ_sym, *vir_sym;
1867
int *openpi, nirreps;
1869
nirreps = moinfo.nirreps;
1870
occpi = moinfo.occpi; virtpi = moinfo.virtpi;
1871
occ_off = moinfo.occ_off; vir_off = moinfo.vir_off;
1872
occ_sym = moinfo.occ_sym; vir_sym = moinfo.vir_sym;
1873
openpi = moinfo.openpi;
1875
dpd_file4_init(&W, CC_TMP0, C_irr, 11, 7,"WABEI (EI,A>B)");
1876
for(h=0; h < nirreps; h++) {
1877
dpd_file4_mat_irrep_init(&W, h);
1878
dpd_file4_mat_irrep_rd(&W, h);
1879
for(ei=0; ei<W.params->rowtot[h]; ei++) {
1880
e = W.params->roworb[h][ei][0];
1881
esym = W.params->psym[e];
1882
E = e - vir_off[esym];
1883
for(ab=0; ab<W.params->coltot[h]; ab++) {
1884
a = W.params->colorb[h][ab][0];
1885
b = W.params->colorb[h][ab][1];
1886
asym = W.params->rsym[a];
1887
bsym = W.params->ssym[b];
1888
A = a - vir_off[asym];
1889
B = b - vir_off[bsym];
1890
if ((E >= (virtpi[esym] - openpi[esym])) ||
1891
(A >= (virtpi[asym] - openpi[asym])) ||
1892
(B >= (virtpi[bsym] - openpi[bsym])) )
1893
W.matrix[h][ei][ab] = 0.0;
1896
dpd_file4_mat_irrep_wrt(&W, h);
1897
dpd_file4_mat_irrep_close(&W, h);
1899
dpd_file4_close(&W);
1901
dpd_file4_init(&W, CC_TMP0, C_irr, 11, 7,"Wabei (ei,a>b)");
1902
for(h=0; h < nirreps; h++) {
1903
dpd_file4_mat_irrep_init(&W, h);
1904
dpd_file4_mat_irrep_rd(&W, h);
1905
for(ei=0; ei<W.params->rowtot[h]; ei++) {
1906
i = W.params->roworb[h][ei][1];
1907
isym = W.params->qsym[i];
1908
I = i - occ_off[isym];
1909
for(ab=0; ab<W.params->coltot[h]; ab++) {
1910
if (I >= (occpi[isym] - openpi[isym]))
1911
W.matrix[h][ei][ab] = 0.0;
1914
dpd_file4_mat_irrep_wrt(&W, h);
1915
dpd_file4_mat_irrep_close(&W, h);
1917
dpd_file4_close(&W);
1919
dpd_file4_init(&W, CC_TMP0, C_irr, 11, 5,"WAbEi (Ei,Ab)");
1920
for(h=0; h < nirreps; h++) {
1921
dpd_file4_mat_irrep_init(&W, h);
1922
dpd_file4_mat_irrep_rd(&W, h);
1923
for(ei=0; ei<W.params->rowtot[h]; ei++) {
1924
e = W.params->roworb[h][ei][0];
1925
i = W.params->roworb[h][ei][1];
1926
esym = W.params->psym[e];
1927
isym = W.params->qsym[i];
1928
E = e - vir_off[esym];
1929
I = i - occ_off[isym];
1930
for(ab=0; ab<W.params->coltot[h]; ab++) {
1931
a = W.params->colorb[h][ab][0];
1932
asym = W.params->rsym[a];
1933
bsym = W.params->ssym[b];
1934
A = a - vir_off[asym];
1935
if ((E >= (virtpi[esym] - openpi[esym])) ||
1936
(I >= (occpi[isym] - openpi[isym])) ||
1937
(A >= (virtpi[asym] - openpi[asym])) )
1938
W.matrix[h][ei][ab] = 0.0;
1941
dpd_file4_mat_irrep_wrt(&W, h);
1942
dpd_file4_mat_irrep_close(&W, h);
1944
dpd_file4_close(&W);
1946
dpd_file4_init(&W, CC_TMP0, C_irr, 11, 5,"WaBeI (eI,aB)");
1947
for(h=0; h < nirreps; h++) {
1948
dpd_file4_mat_irrep_init(&W, h);
1949
dpd_file4_mat_irrep_rd(&W, h);
1950
for(ei=0; ei<W.params->rowtot[h]; ei++) {
1951
for(ab=0; ab<W.params->coltot[h]; ab++) {
1952
b = W.params->colorb[h][ab][1];
1953
bsym = W.params->ssym[b];
1954
B = b - vir_off[bsym];
1955
if (B >= (virtpi[bsym] - openpi[bsym]))
1956
W.matrix[h][ei][ab] = 0.0;
1959
dpd_file4_mat_irrep_wrt(&W, h);
1960
dpd_file4_mat_irrep_close(&W, h);
1962
dpd_file4_close(&W);