3
\brief Enter brief description of file here
5
#include <libdpd/dpd.h>
12
namespace psi { namespace cceom {
14
/* compute [ [H,eT1] , C1 ]
16
* [H,eT^1] matrix elements are in CC3_HET1
18
* C1 has symmetry C_irr and is read from EOM_CME with name "CME i"
20
* illustrative code that computes [H,C1] is in cc3_HC1.c
22
* output matrix elements are written to CC_HC1ET1
25
void HC1ET1_Wmbij(int i, int C_irr);
26
void HC1ET1_Wabei(int i, int C_irr);
27
void HC1ET1_Wmbij_rhf(int i, int C_irr);
28
void HC1ET1_Wabei_rhf(int i, int C_irr);
30
void cc3_HC1ET1 (int i, int C_irr) {
32
/* only need new Wmbij and Wabei for CC3 EOM energies */
34
if (params.ref == 0) {
35
HC1ET1_Wmbij_rhf(i, C_irr);
36
HC1ET1_Wabei_rhf(i, C_irr);
39
HC1ET1_Wmbij(i, C_irr);
40
HC1ET1_Wabei(i, C_irr);
46
void HC1ET1_Wmbij(int i, int C_irr)
49
dpdbuf4 C, D, E, F, Ht, W, W1, X, Z;
51
char CME_lbl[32], Cme_lbl[32];
52
sprintf(CME_lbl, "%s %d", "CME", i);
53
sprintf(Cme_lbl, "%s %d", "Cme", i);
55
if (params.ref == 1) { /** ROHF **/
56
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
57
dpd_file2_init(&Cme, EOM_Cme, C_irr, 0, 1, Cme_lbl);
59
dpd_file2_close(&CME);
60
dpd_file2_close(&Cme);
62
else if (params.ref == 2) { /** UHF **/
64
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
65
dpd_file2_init(&Cme, EOM_Cme, C_irr, 2, 3, Cme_lbl);
69
/***** Ht (MB,I>J) <--- -WMNIJ * CNB *****/
70
dpd_buf4_init(&Ht, CC3_HC1ET1, C_irr, 20, 2, 20, 2, 0, "Ht_WMBIJ (MB,I>J)");
71
dpd_buf4_init(&W, CC3_HET1, 0, 0, 2, 2, 2, 0, "CC3 WMNIJ (M>N,I>J)");
72
dpd_contract424(&W, &CME, &Ht, 1, 0, 1, -1.0, 0.0);
76
/***** Ht (mb,i>j) <--- -Wmnij * Cnb *****/
77
dpd_buf4_init(&Ht, CC3_HC1ET1, C_irr, 30, 12, 30, 12, 0, "Ht_Wmbij (mb,i>j)");
78
dpd_buf4_init(&W, CC3_HET1, 0, 10, 12, 12, 12, 0, "CC3 Wmnij (m>n,i>j)");
79
dpd_contract424(&W, &Cme, &Ht, 1, 0, 1, -1.0, 0.0);
83
/***** Ht (Mb,Ij) <--- -WMnIj * Cnb *****/
84
dpd_buf4_init(&Ht, CC3_HC1ET1, C_irr, 24, 22, 24, 22, 0, "Ht_WMbIj (Mb,Ij)");
85
dpd_buf4_init(&W, CC3_HET1, 0, 22, 22, 22, 22, 0, "CC3 WMnIj (Mn,Ij)");
86
dpd_contract424(&W, &Cme, &Ht, 1, 0, 1, -1.0, 0.0);
90
/***** Ht (mB,iJ) <--- ZBmJi <--- CNB * WNmJi *****/
91
dpd_buf4_init(&Z, CC_TMP0, C_irr, 26, 22, 26, 22, 0, "Z (Bm,Ji)");
92
dpd_buf4_init(&W, CC3_HET1, 0, 22, 22, 22, 22, 0, "CC3 WMnIj (Mn,Ij)");
93
dpd_contract244(&CME, &W, &Z, 0, 0, 0, -1.0, 0.0);
95
dpd_buf4_sort(&Z, CC3_HC1ET1, qpsr, 27, 23, "Ht_WmBiJ (mB,iJ)");
100
/***** Ht (MB,I>J) <--- -P(I/J) X (MB,JI) <--- WMBEJ(ME,JB) * CIE *****/
101
dpd_buf4_init(&Z, CC_TMP0, C_irr, 0, 20, 0, 20, 0, "Z (MI,JB)");
102
dpd_buf4_init(&W, CC3_HET1, 0, 20, 20, 20, 20, 0, "CC3 WMBEJ (ME,JB)");
103
dpd_contract424(&W, &CME, &Z, 1, 1, 1, 1.0, 0.0);
106
dpd_buf4_sort(&Z, CC_TMP0, psrq, 20, 0, "X (MB,JI)");
108
dpd_buf4_init(&X, CC_TMP0, C_irr, 20, 0, 20, 0, 0, "X (MB,JI)");
109
dpd_buf4_sort_axpy(&X, CC3_HC1ET1, pqsr, 20, 2, "Ht_WMBIJ (MB,I>J)", 1);
111
dpd_buf4_init(&Ht, CC3_HC1ET1, C_irr, 20, 0, 20, 2, 0, "Ht_WMBIJ (MB,I>J)");
112
dpd_buf4_axpy(&X, &Ht, -1);
116
/***** Ht (mb,i>j) <--- -P(i/j) X (mb,ij) <--- Wmbej (me,jb) * Cie *****/
118
dpd_buf4_init(&Z, CC_TMP0, C_irr, 10, 30, 10, 30, 0, "Z (mi,jb)");
119
dpd_buf4_init(&W, CC3_HET1, 0, 30, 30, 30, 30, 0, "CC3 Wmbej (me,jb)");
120
dpd_contract424(&W, &Cme, &Z, 1, 1, 1, 1.0, 0.0);
123
dpd_buf4_sort(&Z, CC_TMP0, psrq, 30, 10, "X (mb,ji)");
125
dpd_buf4_init(&X, CC_TMP0, C_irr, 30, 10, 30, 10, 0, "X (mb,ji)");
126
dpd_buf4_sort_axpy(&X, CC3_HC1ET1, pqsr, 30, 12, "Ht_Wmbij (mb,i>j)", 1);
128
dpd_buf4_init(&Ht, CC3_HC1ET1, C_irr, 30, 10, 30, 12, 0, "Ht_Wmbij (mb,i>j)");
129
dpd_buf4_axpy(&X, &Ht, -1);
133
/***** Ht (Mb,Ij) <--- CIE * WMbEj *****/
134
dpd_buf4_init(&Z, CC_TMP0, C_irr, 0, 30, 0, 30, 0, "Z (MI,jb)");
135
dpd_buf4_init(&W, CC3_HET1, 0, 20, 30, 20, 30, 0, "CC3 WMbEj (ME,jb)");
136
dpd_contract424(&W, &CME, &Z, 1, 1, 1, 1.0, 0.0);
138
dpd_buf4_sort_axpy(&Z, CC3_HC1ET1, psqr, 24, 22, "Ht_WMbIj (Mb,Ij)", 1);
141
/***** Ht (Mb,Ij) <--- Cje * WMbeI *****/
142
dpd_buf4_init(&Z, CC_TMP0, C_irr, 22, 24, 22, 24, 0, "Z (Mj,Ib)");
143
dpd_buf4_init(&W, CC3_HET1, 0, 24, 24, 24, 24, 0, "CC3 WMbeJ (Me,Jb)");
144
dpd_contract424(&W, &Cme, &Z, 1, 1, 1, 1.0, 0.0);
146
dpd_buf4_sort_axpy(&Z, CC3_HC1ET1, psrq, 24, 22, "Ht_WMbIj (Mb,Ij)", -1);
149
/***** Ht (mB,iJ) <--- Cie * WmBiJ *****/
150
dpd_buf4_init(&Z, CC_TMP0, C_irr, 10, 20, 10, 20, 0, "Z (mi,JB)");
151
dpd_buf4_init(&W, CC3_HET1, 0, 30, 20, 30, 20, 0, "CC3 WmBeJ (me,JB)");
152
dpd_contract424(&W, &Cme, &Z, 1, 1, 1, 1.0, 0.0);
154
dpd_buf4_sort_axpy(&Z, CC3_HC1ET1, psqr, 27, 23, "Ht_WmBiJ (mB,iJ)", 1);
157
/***** Ht (mB,iJ) <--- CJE * WmEiB *****/
158
dpd_buf4_init(&Z, CC_TMP0, C_irr, 23, 27, 23, 27, 0, "Z (mJ,iB)");
159
dpd_buf4_init(&W, CC3_HET1, 0, 27, 27, 27, 27, 0, "CC3 WmBEj (mE,jB)");
160
dpd_contract424(&W, &CME, &Z, 1, 1, 1, 1.0, 0.0);
162
dpd_buf4_sort_axpy(&Z, CC3_HC1ET1, psrq, 27, 23, "Ht_WmBiJ (mB,iJ)", -1);
166
dpd_buf4_init(&Ht, CC3_HC1ET1, C_irr, 20, 2, 20, 2, 0, "Ht_WMBIJ (MB,I>J)");
167
dpd_buf4_sort(&Ht, CC3_HC1ET1, rspq, 2, 20, "Ht_WMBIJ (I>J,MB)");
170
dpd_buf4_init(&Ht, CC3_HC1ET1, C_irr, 30, 12, 30, 12, 0, "Ht_Wmbij (mb,i>j)");
171
dpd_buf4_sort(&Ht, CC3_HC1ET1, rspq, 12, 30, "Ht_Wmbij (i>j,mb)");
174
dpd_buf4_init(&Ht, CC3_HC1ET1, C_irr, 24, 22, 24, 22, 0, "Ht_WMbIj (Mb,Ij)");
175
dpd_buf4_sort(&Ht, CC3_HC1ET1, rspq, 22, 24, "Ht_WMbIj (Ij,Mb)");
178
dpd_buf4_init(&Ht, CC3_HC1ET1, C_irr, 27, 23, 27, 23, 0, "Ht_WmBiJ (mB,iJ)");
179
dpd_buf4_sort(&Ht, CC3_HC1ET1, rspq, 23, 27, "Ht_WmBiJ (iJ,mB)");
183
/************ TEST *************/
186
dpd_buf4_init(&W, CC3_HC1ET1, 0, 0, 20, 2, 20, 0, "Ht_WMBIJ (I>J,MB)");
187
dot = dpd_buf4_dot_self(&W);
189
fprintf(outfile,"\t<WMBIJ (I>J,MB)|WMBIJ> = %15.10lf\n", dot);
191
dpd_buf4_init(&W, CC3_HC1ET1, 0, 10, 30, 12, 30, 0, "Ht_Wmbij (i>j,mb)");
192
dot = dpd_buf4_dot_self(&W);
194
fprintf(outfile,"\t<Wmbij (i>j,mb)|Wmbij> = %15.10lf\n", dot);
196
dpd_buf4_init(&W, CC3_HC1ET1, 0, 22, 24, 22, 24, 0, "Ht_WMbIj (Ij,Mb)");
197
dot = dpd_buf4_dot_self(&W);
199
fprintf(outfile,"\t<WMbIj (Ij,Mb)|WMbIj> = %15.10lf\n", dot);
201
dpd_buf4_init(&W, CC3_HC1ET1, 0, 23, 27, 23, 27, 0, "Ht_WmBiJ (iJ,mB)");
202
dot = dpd_buf4_dot_self(&W);
204
fprintf(outfile,"\t<WmBiJ (iJ,mB)|WmBiJ> = %15.10lf\n", dot);
207
dpd_file2_close(&CME);
208
dpd_file2_close(&Cme);
214
void HC1ET1_Wabei(int i, int C_irr)
217
dpdfile2 CME, Cme, tIA, tia;
218
dpdbuf4 Ht, Z, Z1, Z2, Z3, B, C, D, E, F, W, X;
220
char CME_lbl[32], Cme_lbl[32];
221
sprintf(CME_lbl, "%s %d", "CME", i);
222
sprintf(Cme_lbl, "%s %d", "Cme", i);
224
if (params.ref == 1) { /** ROHF **/
225
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
226
dpd_file2_init(&Cme, EOM_Cme, C_irr, 0, 1, Cme_lbl);
228
dpd_file2_close(&CME);
229
dpd_file2_close(&Cme);
231
else if (params.ref == 2) { /** UHF **/
232
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
233
dpd_file2_init(&Cme, EOM_Cme, C_irr, 2, 3, Cme_lbl);
234
dpd_file2_init(&tIA, CC_OEI, 0, 0, 1, "tIA");
235
dpd_file2_init(&tia, CC_OEI, 0, 2, 3, "tia");
240
/***** Ht_WABEI <--- -P(A/B) CMA * WMBEI *****/
242
dpd_buf4_init(&Z, CC_TMP0, C_irr, 5, 21, 5, 21, 0, "Z (AB,EI)");
243
dpd_buf4_init(&W, CC3_HET1, 0, 20, 21, 20, 21, 0, "CC3 WMBEJ (MB,EJ)");
244
dpd_contract244(&CME, &W, &Z, 0, 0, 0, 1.0, 0.0);
247
dpd_buf4_sort(&Z, CC_TMP0, qprs, 7, 21, "Ht_WABEI (A>B,EI)");
248
dpd_buf4_init(&Ht, CC_TMP0, C_irr, 5, 21, 7, 21, 0, "Ht_WABEI (A>B,EI)");
249
dpd_buf4_axpy(&Z, &Ht, -1);
253
/***** Ht_Wabei <--- Xbaei <--- -P(a/b) Zabei <-- Cma * Wmbei *****/
255
dpd_buf4_init(&Z, CC_TMP0, C_irr, 15, 31, 15, 31, 0, "Z (ab,ei)");
256
dpd_buf4_init(&W, CC3_HET1, 0, 30, 31, 30, 31, 0, "CC3 Wmbej (mb,ej)");
257
dpd_contract244(&Cme, &W, &Z, 0, 0, 0, 1.0, 0.0);
260
dpd_buf4_sort(&Z, CC_TMP0, qprs, 17, 31, "Ht_Wabei (a>b,ei)");
261
dpd_buf4_init(&Ht, CC_TMP0, C_irr, 15, 31, 17, 31, 0, "Ht_Wabei (a>b,ei)");
262
dpd_buf4_axpy(&Z, &Ht, -1);
266
/***** Ht_WAbEi <--- -CMA * WMbEi *****/
267
dpd_buf4_init(&Ht, CC_TMP0, C_irr, 28, 26, 28, 26, 0, "Ht_WAbEi (Ab,Ei)");
268
dpd_buf4_init(&W, CC3_HET1, 0, 24, 26, 24, 26, 0, "CC3 WMbEj (Mb,Ej)");
269
dpd_contract244(&CME, &W, &Ht, 0, 0, 0, -1.0, 0.0);
273
/***** Ht_WAbEi <--- WAmEi * Cmb *****/
274
dpd_buf4_init(&Ht, CC_TMP0, C_irr, 26, 28, 26, 28, 0, "Ht_WAbEi (Ei,Ab)");
275
dpd_buf4_init(&W, CC3_HET1, 0, 26, 26, 26, 26, 0, "CC3 WmBEj (Bm,Ej)");
276
dpd_contract424(&W, &Cme, &Ht, 1, 0, 0, 1.0, 0.0);
280
/***** Ht_WaBeI <--- -Cma * WmBeI *****/
281
dpd_buf4_init(&Ht, CC_TMP0, C_irr, 29, 25, 29, 25, 0, "Ht_WaBeI (aB,eI)");
282
dpd_buf4_init(&W, CC3_HET1, 0, 27, 25, 27, 25, 0, "CC3 WmBeJ (mB,eJ)");
283
dpd_contract244(&Cme, &W, &Ht, 0, 0, 0, -1.0, 0.0);
287
/***** Ht_WaBeI <--- WaMeI * CMB *****/
288
dpd_buf4_init(&Ht, CC_TMP0, C_irr, 25, 29, 25, 29, 0, "Ht_WaBeI (eI,aB)");
289
dpd_buf4_init(&W, CC3_HET1, 0, 25, 25, 25, 25, 0, "CC3 WMbeJ (bM,eJ)");
290
dpd_contract424(&W, &CME, &Ht, 1, 0, 0, 1.0, 0.0);
296
/***** Ht_WABEI <--- <AB||EF> * CIF *****/
297
dpd_buf4_init(&Ht, CC_TMP0, C_irr, 7, 21, 7, 21, 0, "Ht_WABEI (A>B,EI)");
298
dpd_buf4_init(&B, CC_BINTS, 0, 7, 5, 5, 5, 1, "B <AB|CD>");
299
dpd_contract424(&B, &CME, &Ht, 3, 1, 0, 1.0, 1.0);
304
/***** Ht_Wabei <--- <ab||ef> * Cif *****/
305
dpd_buf4_init(&Ht, CC_TMP0, C_irr, 17, 31, 17, 31, 0, "Ht_Wabei (a>b,ei)");
306
dpd_buf4_init(&B, CC_BINTS, 0, 17, 15, 15, 15, 1, "B <ab|cd>");
307
dpd_contract424(&B, &Cme, &Ht, 3, 1, 0, 1.0, 1.0);
311
/***** HAbEi <--- <Ab|Ef> * Cif *****/
312
dpd_buf4_init(&Ht, CC_TMP0, C_irr, 28, 26, 28, 26, 0, "Ht_WAbEi (Ab,Ei)");
313
dpd_buf4_init(&B, CC_BINTS, 0, 28, 28, 28, 28, 0, "B <Ab|Cd>");
314
dpd_contract424(&B, &Cme, &Ht, 3, 1, 0, 1.0, 1.0);
318
/***** HaBeI <--- C[I][F] * <aB|eF> *****/
319
dpd_buf4_init(&Z, CC_TMP0, C_irr, 24, 28, 24, 28, 0, "Z (Ie,Ba)");
320
dpd_buf4_init(&B, CC_BINTS, 0, 28, 28, 28, 28, 0, "B <Ab|Cd>");
321
dpd_contract244(&CME, &B, &Z, 1, 0, 0, 1, 0);
323
dpd_buf4_sort_axpy(&Z, CC_TMP0, qpsr, 25, 29, "Ht_WaBeI (eI,aB)", 1);
329
/** H( A>B,EI) <--- -P(A/B)( <AM||EF>*C[I][F]*t1[M][B] ) **/
330
dpd_buf4_init(&Z, CC_TMP0, C_irr, 20, 21, 20, 21, 0, "Z (MA,EI)");
331
dpd_buf4_init(&F, CC_FINTS, 0, 20, 5, 20, 5, 1, "F <IA|BC>");
332
dpd_contract424(&F, &CME, &Z, 3, 1, 0, 1, 0);
335
dpd_buf4_init(&Z1, CC_TMP0, C_irr, 5, 21, 5, 21, 0, "Z1(BA,EI)");
336
dpd_contract244(&tIA, &Z, &Z1, 0, 0, 0, 1.0, 0.0);
339
dpd_buf4_sort_axpy(&Z1, CC_TMP0, qprs, 7, 21, "Ht_WABEI (A>B,EI)", 1);
340
dpd_buf4_init(&Ht, CC_TMP0, C_irr, 5, 21, 7, 21, 0, "Ht_WABEI (A>B,EI)");
341
dpd_buf4_axpy(&Z1, &Ht, -1);
346
/** H(a>b,ei) <--- -P(a/b)( <am||ef>*C[i][f]*t1[m][b] ) **/
347
dpd_buf4_init(&Z, CC_TMP0, C_irr, 30, 31, 30, 31, 0, "Z (ma,ei)");
348
dpd_buf4_init(&F, CC_FINTS, 0, 30, 15, 30, 15, 1, "F <ia|bc>");
349
dpd_contract424(&F, &Cme, &Z, 3, 1, 0, 1, 0);
352
dpd_buf4_init(&Z1, CC_TMP0, C_irr, 15, 31, 15, 31, 0, "Z1(ba,ei)");
353
dpd_contract244(&tia, &Z, &Z1, 0, 0, 0, 1.0, 0.0);
356
dpd_buf4_sort_axpy(&Z1, CC_TMP0, qprs, 17, 31, "Ht_Wabei (a>b,ei)", 1);
357
dpd_buf4_init(&Ht, CC_TMP0, C_irr, 15, 31, 17, 31, 0, "Ht_Wabei (a>b,ei)");
358
dpd_buf4_axpy(&Z1, &Ht, -1);
362
/** H(Ab,Ei) <--- -<Am|Ef>*C[i][f]*t1[m][b] **/
364
dpd_buf4_init(&Z, CC_TMP0, C_irr, 26, 26, 26, 26, 0, "Z(Am,Ei)");
365
dpd_buf4_init(&F, CC_FINTS, 0, 26, 28, 26, 28, 0, "F <Ai|Bc>");
366
dpd_contract424(&F, &Cme, &Z, 3, 1, 0, 1, 0);
369
dpd_buf4_init(&Ht, CC_TMP0, C_irr, 26, 28, 26, 28, 0, "Ht_WAbEi (Ei,Ab)");
370
dpd_contract424(&Z, &tia, &Ht, 1, 0, 0, -1, 1);
374
/** Ht(Ab,Ei) <--- -<Mb|Ef>*C[i][f]*t1[M][A] **/
376
dpd_buf4_init(&Z, CC_TMP0, C_irr, 24, 26, 24, 26, 0, "Z(Mb,Ei)");
377
dpd_buf4_init(&F, CC_FINTS, 0, 24, 28, 24, 28, 0, "F <Ia|Bc>");
378
dpd_contract424(&F, &Cme, &Z, 3, 1, 0, 1, 0);
381
dpd_buf4_init(&Ht, CC_TMP0, C_irr, 28, 26, 28, 26, 0, "Ht_WAbEi (Ab,Ei)");
382
dpd_contract244(&tIA, &Z, &Ht, 0, 0, 0, -1, 1);
386
/** Ht(aB,eI) <--- -<aM|eF>*C[I][F]*t1[M][B] **/
388
dpd_buf4_init(&Z, CC_TMP0, C_irr, 25, 25, 25, 25, 0, "Z(aM,eI)");
389
dpd_buf4_init(&F, CC_FINTS, 0, 25, 29, 25, 29, 0, "F <aI|bC>");
390
dpd_contract424(&F, &CME, &Z, 3, 1, 0, 1, 0);
393
dpd_buf4_init(&Ht, CC_TMP0, C_irr, 25, 29, 25, 29, 0, "Ht_WaBeI (eI,aB)");
394
dpd_contract424(&Z, &tIA, &Ht, 1, 0, 0, -1, 1);
398
/** Ht(aB,eI) <--- -C[I][F] * <mB|eF> * t1[m][a] **/
400
dpd_buf4_init(&Z, CC_TMP0, C_irr, 27, 25, 27, 25, 0, "Z(mB,eI)");
401
dpd_buf4_init(&F, CC_FINTS, 0, 27, 29, 27, 29, 0, "F <iA|bC>");
402
dpd_contract424(&F, &CME, &Z, 3, 1, 0, 1, 0);
405
dpd_buf4_init(&Ht, CC_TMP0, C_irr, 29, 25, 29, 25, 0, "Ht_WaBeI (aB,eI)");
406
dpd_contract244(&tia, &Z, &Ht, 0, 0, 0, -1, 1);
413
/** Ht(A>B,EI) <--- 0.5 * P(A/B) <MN||EF> * t1[M][A]*C[I][F]*t1[N][B] **/
414
dpd_buf4_init(&Z, CC_TMP0, C_irr, 2, 21, 2, 21, 0, "Z (M>N,EI)");
415
dpd_buf4_init(&D, CC_DINTS, 0, 2, 5, 2, 5, 0, "D <IJ||AB> (I>J,AB)");
416
dpd_contract424(&D, &CME, &Z, 3, 1, 0, 1, 0);
420
dpd_buf4_init(&Z, CC_TMP0, C_irr, 0, 21, 2, 21, 0, "Z (M>N,EI)");
421
dpd_buf4_init(&Z1, CC_TMP0, C_irr, 21, 20, 21, 20, 0, "Z1 (EI,MB)");
422
dpd_contract424(&Z, &tIA, &Z1, 1, 0, 0, 1, 0);
425
dpd_buf4_init(&Ht, CC_TMP0, C_irr, 5, 21, 7, 21, 0, "Ht_WABEI (A>B,EI)");
426
dpd_contract244(&tIA, &Z1, &Ht, 0, 2, 0, 1, 1);
430
/** W(a>b,ei) <--- 0.5 * P(a/b) <nm||ef> * t1[m][b]*C[i][f]*t1[n][a] **/
431
dpd_buf4_init(&Z, CC_TMP0, C_irr, 12, 31, 12, 31, 0, "Z (m>n,ei)");
432
dpd_buf4_init(&D, CC_DINTS, 0, 12, 15, 12, 15, 0, "D <ij||ab> (i>j,ab)");
433
dpd_contract424(&D, &Cme, &Z, 3, 1, 0, 1, 0);
437
dpd_buf4_init(&Z, CC_TMP0, C_irr, 10, 31, 12, 31, 0, "Z (m>n,ei)");
438
dpd_buf4_init(&Z1, CC_TMP0, C_irr, 31, 30, 31, 30, 0, "Z1 (ei,mb)");
439
dpd_contract424(&Z, &tia, &Z1, 1, 0, 0, 1, 0);
442
dpd_buf4_init(&Ht, CC_TMP0, C_irr, 15, 31, 17, 31, 0, "Ht_Wabei (a>b,ei)");
443
dpd_contract244(&tia, &Z1, &Ht, 0, 2, 0, 1, 1);
448
/** W(Ab,Ei) <--- <Nm|Ef> * t1[m][b]*C[i][f]*t1[N][A] **/
450
dpd_buf4_init(&Z, CC_TMP0, C_irr, 22, 26, 22, 26, 0, "Z (Nm,Ei)");
451
dpd_buf4_init(&D, CC_DINTS, 0, 22, 28, 22, 28, 0, "D <Ij|Ab>");
452
dpd_contract424(&D, &Cme, &Z, 3, 1, 0, 1, 0);
455
dpd_buf4_init(&Z1, CC_TMP0, C_irr, 26, 24, 26, 24, 0, "Z1 (Ei,Nb)");
456
dpd_contract424(&Z, &tia, &Z1, 1, 0, 0, 1, 0);
459
dpd_buf4_init(&Ht, CC_TMP0, C_irr, 28, 26, 28, 26, 0, "Ht_WAbEi (Ab,Ei)");
460
dpd_contract244(&tIA, &Z1, &Ht, 0, 2, 0, 1, 1);
463
/** W(aB,eI) <--- <nM|eF> * t1[M][B]*C[I][F]*t1[n][a] **/
465
dpd_buf4_init(&Z, CC_TMP0, C_irr, 23, 25, 23, 25, 0, "Z (nM,eI)");
466
dpd_buf4_init(&D, CC_DINTS, 0, 23, 29, 23, 29, 0, "D <iJ|aB>");
467
dpd_contract424(&D, &CME, &Z, 3, 1, 0, 1, 0);
470
dpd_buf4_init(&Z1, CC_TMP0, C_irr, 25, 27, 25, 27, 0, "Z1 (eI,nB)");
471
dpd_contract424(&Z, &tIA, &Z1, 1, 0, 0, 1, 0);
474
dpd_buf4_init(&Ht, CC_TMP0, C_irr, 29, 25, 29, 25, 0, "Ht_WaBeI (aB,eI)");
475
dpd_contract244(&tia, &Z1, &Ht, 0, 2, 0, 1, 1);
479
dpd_file2_close(&CME);
480
dpd_file2_close(&Cme);
481
dpd_file2_close(&tIA);
482
dpd_file2_close(&tia);
485
/* combine W(Ab,Ei) and W(Ei,Ab) */
487
dpd_buf4_init(&Ht, CC_TMP0, C_irr, 28, 26, 28, 26, 0, "Ht_WAbEi (Ab,Ei)");
488
dpd_buf4_sort_axpy(&Ht, CC_TMP0, rspq, 26, 28, "Ht_WAbEi (Ei,Ab)", 1);
491
dpd_buf4_init(&Ht, CC_TMP0, C_irr, 29, 25, 29, 25, 0, "Ht_WaBeI (aB,eI)");
492
dpd_buf4_sort_axpy(&Ht, CC_TMP0, rspq, 25, 29, "Ht_WaBeI (eI,aB)", 1);
495
/* sort to Wabei (ei,ab) */
496
dpd_buf4_init(&W, CC_TMP0, C_irr, 7, 21, 7, 21, 0, "Ht_WABEI (A>B,EI)");
497
dpd_buf4_sort(&W, CC_TMP2, rspq, 21, 7, "Ht_WABEI (EI,A>B)");
499
dpd_buf4_init(&W, CC_TMP0, C_irr, 17, 31, 17, 31, 0, "Ht_Wabei (a>b,ei)");
500
dpd_buf4_sort(&W, CC_TMP2, rspq, 31, 17, "Ht_Wabei (ei,a>b)");
503
/* sort to Wabei (ie,ba) */
504
dpd_buf4_init(&W, CC_TMP2, C_irr, 21, 7, 21, 7, 0, "Ht_WABEI (EI,A>B)");
505
dpd_buf4_sort(&W, CC3_HC1ET1, qprs, 20, 7, "Ht_WABEI (IE,B>A)");
507
dpd_buf4_init(&W, CC3_HC1ET1, C_irr, 20, 7, 20, 7, 0, "Ht_WABEI (IE,B>A)");
508
dpd_buf4_scm(&W, -1.0);
511
dpd_buf4_init(&W, CC_TMP2, C_irr, 31, 17, 31, 17, 0, "Ht_Wabei (ei,a>b)");
512
dpd_buf4_sort(&W, CC3_HC1ET1, qprs, 30, 17, "Ht_Wabei (ie,b>a)");
514
dpd_buf4_init(&W, CC3_HC1ET1, C_irr, 30, 17, 30, 17, 0, "Ht_Wabei (ie,b>a)");
515
dpd_buf4_scm(&W, -1.0);
518
dpd_buf4_init(&W, CC_TMP0, C_irr, 26, 28, 26, 28, 0, "Ht_WAbEi (Ei,Ab)");
519
dpd_buf4_sort(&W, CC3_HC1ET1, qpsr, 27, 29, "Ht_WAbEi (iE,bA)");
522
dpd_buf4_init(&W, CC_TMP0, C_irr, 25, 29, 25, 29, 0, "Ht_WaBeI (eI,aB)");
523
dpd_buf4_sort(&W, CC3_HC1ET1, qpsr, 24, 28, "Ht_WaBeI (Ie,Ba)");
527
/************ TEST *************/
529
dpd_buf4_init(&W, CC3_HC1ET1, 0, 20, 5, 20, 7, 0, "Ht_WABEI (IE,B>A)");
530
dot = dpd_buf4_dot_self(&W);
532
fprintf(outfile,"\t<WABEI(IE,B>A)|WABEI> = %15.10lf\n", dot);
534
dpd_buf4_init(&W, CC3_HC1ET1, 0, 30, 15, 30, 17, 0, "Ht_Wabei (ie,b>a)");
535
dot = dpd_buf4_dot_self(&W);
537
fprintf(outfile,"\t<Wabei (ie,b>a)|Wabei> = %15.10lf\n", dot);
539
dpd_buf4_init(&W, CC3_HC1ET1, 0, 27, 29, 27, 29, 0, "Ht_WAbEi (iE,bA)");
540
dot = dpd_buf4_dot_self(&W);
542
fprintf(outfile,"\t<WAbEi (iE,bA)|WAbEi> = %15.10lf\n", dot);
544
dpd_buf4_init(&W, CC3_HC1ET1, 0, 24, 28, 24, 28, 0, "Ht_WaBeI (Ie,Ba)");
545
dot = dpd_buf4_dot_self(&W);
547
fprintf(outfile,"\t<WaBeI (Ie,Ba)|WaBeI> = %15.10lf\n", dot);
555
void HC1ET1_Wmbij_rhf(int i, int C_irr)
558
dpdbuf4 C, D, E, F, Ht, W, W1, X, Z;
561
sprintf(CME_lbl, "%s %d", "CME", i);
563
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
565
/***** Ht (Mb,Ij) <--- -WMnIj * Cnb *****/
566
dpd_buf4_init(&Ht, CC3_HC1ET1, C_irr, 10, 0, 10, 0, 0, "Ht_WMbIj (Mb,Ij)");
567
dpd_buf4_init(&W, CC3_HET1, 0, 0, 0, 0, 0, 0, "CC3 WMnIj (Mn,Ij)");
568
dpd_contract424(&W, &CME, &Ht, 1, 0, 1, -1.0, 0.0);
572
/***** Ht (Mb,Ij) <--- CIE * WMbEj *****/
573
dpd_buf4_init(&Z, CC_TMP0, C_irr, 0, 10, 0, 10, 0, "Z (MI,jb)");
574
dpd_buf4_init(&W, CC3_HET1, 0, 10, 10, 10, 10, 0, "CC3 WMbEj (ME,jb)");
575
dpd_contract424(&W, &CME, &Z, 1, 1, 1, 1.0, 0.0);
577
dpd_buf4_sort_axpy(&Z, CC3_HC1ET1, psqr, 10, 0, "Ht_WMbIj (Mb,Ij)", 1);
580
/***** Ht (Mb,Ij) <--- Cje * WMbeI *****/
581
dpd_buf4_init(&Z, CC_TMP0, C_irr, 0, 10, 0, 10, 0, "Z (Mj,Ib)");
582
dpd_buf4_init(&W, CC3_HET1, 0, 10, 10, 10, 10, 0, "CC3 WMbeJ (Me,Jb)");
583
dpd_contract424(&W, &CME, &Z, 1, 1, 1, 1.0, 0.0);
585
dpd_buf4_sort_axpy(&Z, CC3_HC1ET1, psrq, 10, 0, "Ht_WMbIj (Mb,Ij)", -1);
588
dpd_buf4_init(&Ht, CC3_HC1ET1, C_irr, 10, 0, 10, 0, 0, "Ht_WMbIj (Mb,Ij)");
589
dpd_buf4_sort(&Ht, CC3_HC1ET1, rspq, 0, 10, "Ht_WMbIj (Ij,Mb)");
592
dpd_file2_close(&CME);
597
void HC1ET1_Wabei_rhf(int i, int C_irr)
601
dpdbuf4 Ht, Z, Z1, Z2, Z3, B, C, D, E, F, W, X;
603
sprintf(CME_lbl, "%s %d", "CME", i);
605
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
606
dpd_file2_init(&tIA, CC_OEI, 0, 0, 1, "tIA");
608
/***** Ht_WAbEi <--- -CMA * WMbEi *****/
609
dpd_buf4_init(&Ht, CC_TMP0, C_irr, 5, 11, 5, 11, 0, "Ht_WAbEi (Ab,Ei)");
610
dpd_buf4_init(&W, CC3_HET1, 0, 10, 11, 10, 11, 0, "CC3 WMbEj (Mb,Ej)");
611
dpd_contract244(&CME, &W, &Ht, 0, 0, 0, -1.0, 0.0);
615
/***** Ht_WAbEi <--- WAmEi * Cmb *****/
616
dpd_buf4_init(&Ht, CC_TMP0, C_irr, 11, 5, 11, 5, 0, "Ht_WAbEi (Ei,Ab)");
617
dpd_buf4_init(&W, CC3_HET1, 0, 11, 11, 11, 11, 0, "CC3 WMbeJ (bM,eJ)");
618
dpd_contract424(&W, &CME, &Ht, 1, 0, 0, 1.0, 0.0);
622
/***** HAbEi <--- <Ab|Ef> * Cif *****/
623
dpd_buf4_init(&Ht, CC_TMP0, C_irr, 5, 11, 5, 11, 0, "Ht_WAbEi (Ab,Ei)");
624
dpd_buf4_init(&B, CC_BINTS, 0, 5, 5, 5, 5, 0, "B <ab|cd>");
625
dpd_contract424(&B, &CME, &Ht, 3, 1, 0, 1.0, 1.0);
629
/** H(Ab,Ei) <--- -<Am|Ef>*C[i][f]*t1[m][b] **/
630
dpd_buf4_init(&Z, CC_TMP0, C_irr, 11, 11, 11, 11, 0, "Z(Am,Ei)");
631
dpd_buf4_init(&F, CC_FINTS, 0, 11, 5, 11, 5, 0, "F <ai|bc>");
632
dpd_contract424(&F, &CME, &Z, 3, 1, 0, 1, 0);
635
dpd_buf4_init(&Ht, CC_TMP0, C_irr, 11, 5, 11, 5, 0, "Ht_WAbEi (Ei,Ab)");
636
dpd_contract424(&Z, &tIA, &Ht, 1, 0, 0, -1, 1);
640
/** Ht(Ab,Ei) <--- -<Mb|Ef>*C[i][f]*t1[M][A] **/
641
dpd_buf4_init(&Z, CC_TMP0, C_irr, 10, 11, 10, 11, 0, "Z(Mb,Ei)");
642
dpd_buf4_init(&F, CC_FINTS, 0, 10, 5, 10, 5, 0, "F <ia|bc>");
643
dpd_contract424(&F, &CME, &Z, 3, 1, 0, 1, 0);
646
dpd_buf4_init(&Ht, CC_TMP0, C_irr, 5, 11, 5, 11, 0, "Ht_WAbEi (Ab,Ei)");
647
dpd_contract244(&tIA, &Z, &Ht, 0, 0, 0, -1, 1);
651
/** W(Ab,Ei) <--- <Nm|Ef> * t1[m][b]*C[i][f]*t1[N][A] **/
652
dpd_buf4_init(&Z, CC_TMP0, C_irr, 0, 11, 0, 11, 0, "Z (Nm,Ei)");
653
dpd_buf4_init(&D, CC_DINTS, 0, 0, 5, 0, 5, 0, "D <ij|ab>");
654
dpd_contract424(&D, &CME, &Z, 3, 1, 0, 1, 0);
657
dpd_buf4_init(&Z1, CC_TMP0, C_irr, 11, 10, 11, 10, 0, "Z1 (Ei,Nb)");
658
dpd_contract424(&Z, &tIA, &Z1, 1, 0, 0, 1, 0);
661
dpd_buf4_init(&Ht, CC_TMP0, C_irr, 5, 11, 5, 11, 0, "Ht_WAbEi (Ab,Ei)");
662
dpd_contract244(&tIA, &Z1, &Ht, 0, 2, 0, 1, 1);
665
dpd_file2_close(&CME);
666
dpd_file2_close(&tIA);
668
/* combine W(Ab,Ei) and W(Ei,Ab) */
669
dpd_buf4_init(&Ht, CC_TMP0, C_irr, 5, 11, 5, 11, 0, "Ht_WAbEi (Ab,Ei)");
670
dpd_buf4_sort_axpy(&Ht, CC_TMP0, rspq, 11, 5, "Ht_WAbEi (Ei,Ab)", 1);
673
/* sort to Wabei (ie,ba) */
674
dpd_buf4_init(&W, CC_TMP0, C_irr, 11, 5, 11, 5, 0, "Ht_WAbEi (Ei,Ab)");
675
dpd_buf4_sort(&W, CC3_HC1ET1, qpsr, 10, 5, "Ht_WAbEi (iE,bA)");
682
}} // namespace psi::cceom