2
#include <libdpd/dpd.h>
6
/* computes non R0 parts of EOM CCSD Gijab */
7
void x_Gijab_uhf_2(void);
8
void x_Gijab_uhf_3(void);
10
void x_Gijab_uhf(void)
13
int R_irr, L_irr, G_irr;
15
dpdfile2 T1, L1, I1, T1A, T1B, Z1, R1;
16
dpdbuf4 R, I, G, L, T, V, Z, Z2;
18
nirreps = moinfo.nirreps;
19
R_irr = params.R_irr; L_irr = params.L_irr; G_irr = params.G_irr;
21
/* term 1,2: (L*R) * Tau(IJ,AB), see comments in xi1_connected */
23
dpd_buf4_init(&T, CC_TAMPS, 0, 2, 7, 2, 7, 0, "tauIJAB");
24
dpd_buf4_copy(&T, EOM_TMP0, "GIJAB");
26
dpd_buf4_init(&T, CC_TAMPS, 0, 12, 17, 12, 17, 0, "tauijab");
27
dpd_buf4_copy(&T, EOM_TMP0, "Gijab");
29
dpd_buf4_init(&T, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tauIjAb");
30
dpd_buf4_copy(&T, EOM_TMP0, "GIjAb");
34
dpd_buf4_init(&G, EOM_TMP0, G_irr, 2, 7, 2, 7, 0, "GIJAB");
37
dpd_buf4_init(&G, EOM_TMP0, G_irr, 12, 17, 12, 17, 0, "Gijab");
40
dpd_buf4_init(&G, EOM_TMP0, G_irr, 22, 28, 22, 28, 0, "GIjAb");
45
/* -P(ij) LR_OO(M,I) Tau(MJ,AB); terms 4,5,8,9 */
46
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 0, 7, 0, 7, 0, "Z(IJ,A>B)");
47
dpd_file2_init(&I1, EOM_TMP, G_irr, 0, 0, "LR_OO");
48
dpd_file2_init(&Z1, EOM_TMP1, G_irr, 0, 0, "Z(N,I)");
49
dpd_file2_axpy(&I1, &Z1, 1.0, 0);
51
/* -P(ij) L2R1_OV(M,F) T(I,F) Tau(MJ,AB); terms 35, 36 */
52
if (!params.connect_xi) {
53
dpd_file2_init(&I1, EOM_TMP, G_irr, 0, 1, "L2R1_OV");
54
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
55
dpd_contract222(&I1, &T1, &Z1, 0, 0, 1.0, 1.0);
59
dpd_buf4_init(&T, CC_TAMPS, 0, 0, 7, 2, 7, 0, "tauIJAB");
60
dpd_contract244(&Z1, &T, &Z, 0, 0, 0, 1.0, 0.0);
63
dpd_buf4_init(&G, EOM_TMP0, G_irr, 0, 7, 2, 7, 0, "GIJAB");
64
dpd_buf4_axpy(&Z, &G, -1.0);
65
dpd_buf4_sort(&Z, EOM_TMP1, qprs, 0, 7, "Z(JI,A>B)");
67
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 0, 7, 0, 7, 0, "Z(JI,A>B)");
68
dpd_buf4_axpy(&Z, &G, 1.0);
72
/* -P(ij) LR_oo(m,i) Tau(mj,ab); terms 4,5,8,9 */
73
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 10, 17, 10, 17, 0, "Z(ij,a>b)");
74
dpd_file2_init(&I1, EOM_TMP, G_irr, 2, 2, "LR_oo");
75
dpd_file2_init(&Z1, EOM_TMP1, G_irr, 2, 2, "Z(n,i)");
76
dpd_file2_axpy(&I1, &Z1, 1.0, 0);
78
/* -P(ij) L2R1_ov(m,f) T(i,f) Tau(mj,ab); terms 35, 36 */
79
if (!params.connect_xi) {
80
dpd_file2_init(&I1, EOM_TMP, G_irr, 2, 3, "L2R1_ov");
81
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
82
dpd_contract222(&I1, &T1, &Z1, 0, 0, 1.0, 1.0);
86
dpd_buf4_init(&T, CC_TAMPS, 0, 10, 17, 12, 17, 0, "tauijab");
87
dpd_contract244(&Z1, &T, &Z, 0, 0, 0, 1.0, 0.0);
90
dpd_buf4_init(&G, EOM_TMP0, G_irr, 10, 17, 12, 17, 0, "Gijab");
91
dpd_buf4_axpy(&Z, &G, -1.0);
92
dpd_buf4_sort(&Z, EOM_TMP1, qprs, 10, 17, "Z(ji,a>b)");
94
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 10, 17, 10, 17, 0, "Z(ji,a>b)");
95
dpd_buf4_axpy(&Z, &G, 1.0);
98
psio_close(EOM_TMP1, 0);
99
psio_open(EOM_TMP1,PSIO_OPEN_NEW);
101
/* GIjAb += -P(Ij) LR_OO(M,I) Tau(Mj,Ab); terms 4,5,8,9 */
102
dpd_buf4_init(&G, EOM_TMP0, G_irr, 22, 28, 22, 28, 0, "GIjAb");
103
dpd_file2_init(&I1, EOM_TMP, G_irr, 0, 0, "LR_OO");
104
dpd_file2_init(&Z1, EOM_TMP1, G_irr, 0, 0, "Z(N,I)");
105
dpd_file2_axpy(&I1, &Z1, 1.0, 0);
106
dpd_file2_close(&I1);
107
/* -P(Ij) L2R1_OV(M,F) T(I,F) Tau(Nm,Ab); terms 35, 36 */
108
if (!params.connect_xi) {
109
dpd_file2_init(&I1, EOM_TMP, G_irr, 0, 1, "L2R1_OV");
110
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
111
dpd_contract222(&I1, &T1, &Z1, 0, 0, 1.0, 1.0);
112
dpd_file2_close(&T1);
113
dpd_file2_close(&I1);
115
dpd_buf4_init(&T, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tauIjAb");
116
dpd_contract244(&Z1, &T, &G, 0, 0, 0, -1.0, 1.0);
117
dpd_file2_close(&Z1);
120
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 23, 29, 23, 29, 0, "Z(jI,bA)");
121
dpd_file2_init(&I1, EOM_TMP, G_irr, 2, 2, "LR_oo");
122
dpd_file2_init(&Z1, EOM_TMP1, G_irr, 2, 2, "Z(n,i)");
123
dpd_file2_axpy(&I1, &Z1, 1.0, 0);
124
dpd_file2_close(&I1);
125
if (!params.connect_xi) {
126
dpd_file2_init(&I1, EOM_TMP, G_irr, 2, 3, "L2R1_ov");
127
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
128
dpd_contract222(&I1, &T1, &Z1, 0, 0, 1.0, 1.0);
129
dpd_file2_close(&T1);
130
dpd_file2_close(&I1);
132
dpd_buf4_init(&T, CC_TAMPS, 0, 23, 29, 23, 29, 0, "tauiJaB");
133
dpd_contract244(&Z1, &T, &Z, 0, 0, 0, 1.0, 0.0);
134
dpd_file2_close(&Z1);
136
dpd_buf4_sort(&Z, EOM_TMP1, qpsr, 22, 28, "Z(Ij,Ab)");
138
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 22, 28, 22, 28, 0, "Z(Ij,Ab)");
139
dpd_buf4_axpy(&Z, &G, -1.0);
142
psio_close(EOM_TMP1,0);
143
psio_open(EOM_TMP1,PSIO_OPEN_NEW);
145
/* -P(ab) LR_VV(F,A) Tau(IJ,FB); terms 6,7,10,11 */
146
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 2, 5, 2, 5, 0, "Z(I>J,AB)");
147
dpd_buf4_init(&T, CC_TAMPS, 0, 2, 5, 2, 7, 0, "tauIJAB");
148
dpd_file2_init(&I1, EOM_TMP, G_irr, 1, 1, "LR_VV");
149
dpd_contract244(&I1, &T, &Z, 0, 2, 1, 1.0, 0.0);
150
dpd_file2_close(&I1);
152
dpd_buf4_init(&G, EOM_TMP0, G_irr, 2, 5, 2, 7, 0, "GIJAB");
153
dpd_buf4_axpy(&Z, &G, -1.0);
154
dpd_buf4_sort(&Z, EOM_TMP1, pqsr, 2, 5, "Z(I>J,BA)");
156
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 2, 5, 2, 5, 0, "Z(I>J,BA)");
157
dpd_buf4_axpy(&Z, &G, 1.0);
160
/* -P(ab) LR_vv(f,a) Tau(ij,fb); */
161
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 12, 15, 12, 15, 0, "Z(i>j,ab)");
162
dpd_buf4_init(&T, CC_TAMPS, 0, 12, 15, 12, 17, 0, "tauijab");
163
dpd_file2_init(&I1, EOM_TMP, G_irr, 3, 3, "LR_vv");
164
dpd_contract244(&I1, &T, &Z, 0, 2, 1, 1.0, 0.0);
165
dpd_file2_close(&I1);
167
dpd_buf4_init(&G, EOM_TMP0, G_irr, 12, 15, 12, 17, 0, "Gijab");
168
dpd_buf4_axpy(&Z, &G, -1.0);
169
dpd_buf4_sort(&Z, EOM_TMP1, pqsr, 12, 15, "Z(i>j,ba)");
171
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 12, 15, 12, 15, 0, "Z(i>j,ba)");
172
dpd_buf4_axpy(&Z, &G, 1.0);
175
/* GIjAb += - LR_VV(F,A) Tau(Ij,Fb) + LR_VV(f,a) Tau(Ij,fA) */
176
dpd_buf4_init(&G, EOM_TMP0, G_irr, 22, 28, 22, 28, 0, "GIjAb");
177
dpd_buf4_init(&T, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tauIjAb");
178
dpd_file2_init(&I1, EOM_TMP, G_irr, 1, 1, "LR_VV");
179
dpd_contract244(&I1, &T, &G, 0, 2, 1, -1.0, 1.0);
180
dpd_file2_close(&I1);
182
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 22, 29, 22, 29, 0, "Z(Ij,bA)");
183
dpd_buf4_init(&T, CC_TAMPS, 0, 22, 29, 22, 29, 0, "tauIjbA");
184
dpd_file2_init(&I1, EOM_TMP, G_irr, 3, 3, "LR_vv");
185
dpd_contract244(&I1, &T, &Z, 0, 2, 1, 1.0, 0.0);
186
dpd_file2_close(&I1);
188
dpd_buf4_sort(&Z, EOM_TMP1, pqsr, 22, 28, "Z(Ij,Ab)");
190
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 22, 28, 22, 28, 0, "Z(Ij,Ab)");
191
dpd_buf4_axpy(&Z, &G, -1.0);
194
psio_close(EOM_TMP1,0);
195
psio_open(EOM_TMP1,PSIO_OPEN_NEW);
197
/* + 1/4 Lmnef Rmnab Tau_ijef, terms 13, 15 */
198
dpd_buf4_init(&G, EOM_TMP0, G_irr, 2, 7, 2, 7, 0, "GIJAB");
199
dpd_buf4_init(&I, EOM_TMP, L_irr, 2, 2, 2, 2, 0, "Tau2L2_OOOO");
200
dpd_buf4_init(&R, CC_GR, R_irr, 2, 7, 2, 7, 0, "RIJAB");
201
dpd_contract444(&I, &R, &G, 0, 1, 1.0, 1.0);
205
dpd_buf4_init(&G, EOM_TMP0, G_irr, 12, 17, 12, 17, 0, "Gijab");
206
dpd_buf4_init(&I, EOM_TMP, L_irr, 12, 12, 12, 12, 0, "Tau2L2_oooo");
207
dpd_buf4_init(&R, CC_GR, R_irr, 12, 17, 12, 17, 0, "Rijab");
208
dpd_contract444(&I, &R, &G, 0, 1, 1.0, 1.0);
212
dpd_buf4_init(&G, EOM_TMP0, G_irr, 22, 28, 22, 28, 0, "GIjAb");
213
dpd_buf4_init(&I, EOM_TMP, L_irr, 22, 22, 22, 22, 0, "Tau2L2_OoOo");
214
dpd_buf4_init(&R, CC_GR, R_irr, 22, 28, 22, 28, 0, "RIjAb");
215
dpd_contract444(&I, &R, &G, 0, 1, 1.0, 1.0);
220
/* - 0.5 P(ij) (Lmnfe Rie) Tjf (taumnab), terms 24, 26 */
221
/* + 1/4 Lmnef Rijef Tau_mnab, terms 12, 14 */
222
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 0, 2, 0, 2, 0, "Z(IJ,M>N)");
223
dpd_buf4_init(&I, EOM_TMP, G_irr, 2, 20, 2, 20, 0, "L2R1_OOVO(pqsr)");
224
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
225
dpd_contract424(&I, &T1, &Z, 3, 1, 1, 1.0, 0.0);
226
dpd_file2_close(&T1);
228
/* add terms 12, 14 */
229
dpd_buf4_init(&I, EOM_TMP, G_irr, 0, 2, 2, 2, 0, "R2L2_OOOO");
230
dpd_buf4_axpy(&I, &Z, -0.5);
232
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 0, 7, 0, 7, 0, "Z(IJ,A>B)");
233
dpd_buf4_init(&T, CC_TAMPS, 0, 2, 7, 2, 7, 0, "tauIJAB");
234
dpd_contract444(&Z, &T, &Z2, 0, 1, 1.0, 0.0);
237
dpd_buf4_init(&G, EOM_TMP0, G_irr, 0, 7, 2, 7, 0, "GIJAB");
238
dpd_buf4_axpy(&Z2, &G, -1.0);
239
dpd_buf4_sort(&Z2, EOM_TMP1, qprs, 0, 7, "Z(JI,A>B)");
241
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 0, 7, 0, 7, 0, "Z(JI,A>B)");
242
dpd_buf4_axpy(&Z2, &G, 1.0);
246
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 10, 12, 10, 12, 0, "Z(ij,m>n)");
247
dpd_buf4_init(&I, EOM_TMP, G_irr, 12, 30, 12, 30, 0, "L2R1_oovo(pqsr)");
248
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
249
dpd_contract424(&I, &T1, &Z, 3, 1, 1, 1.0, 0.0);
250
dpd_file2_close(&T1);
252
/* add terms 12, 14 */
253
dpd_buf4_init(&I, EOM_TMP, G_irr, 10, 12, 12, 12, 0, "R2L2_oooo");
254
dpd_buf4_axpy(&I, &Z, -0.5);
256
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 10, 17, 10, 17, 0, "Z(ij,a>b)");
257
dpd_buf4_init(&T, CC_TAMPS, 0, 12, 17, 12, 17, 0, "tauijab");
258
dpd_contract444(&Z, &T, &Z2, 0, 1, 1.0, 0.0);
261
dpd_buf4_init(&G, EOM_TMP0, G_irr, 10, 17, 12, 17, 0, "Gijab");
262
dpd_buf4_axpy(&Z2, &G, -1.0);
263
dpd_buf4_sort(&Z2, EOM_TMP1, qprs, 10, 17, "Z(ji,a>b)");
265
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 10, 17, 10, 17, 0, "Z(ji,a>b)");
266
dpd_buf4_axpy(&Z2, &G, 1.0);
270
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 22, 22, 22, 22, 0, "Z(Ij,Mn)");
271
dpd_buf4_init(&I, EOM_TMP, G_irr, 22, 24, 22, 24, 0, "L2R1_OovO(pqsr)");
272
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
273
dpd_contract424(&I, &T1, &Z, 3, 1, 1, 1.0, 0.0);
274
dpd_file2_close(&T1);
276
dpd_buf4_init(&I, EOM_TMP, G_irr, 22, 26, 22, 26, 0, "L2R1_OoVo");
277
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
278
dpd_contract244(&T1, &I, &Z, 1, 2, 0, 1.0, 1.0);
279
dpd_file2_close(&T1);
281
/* add terms 12, 14 */
282
dpd_buf4_init(&I, EOM_TMP, G_irr, 22, 22, 22, 22, 0, "R2L2_OoOo");
283
dpd_buf4_axpy(&I, &Z, 1.0);
285
dpd_buf4_init(&G, EOM_TMP0, G_irr, 22, 28, 22, 28, 0, "GIjAb");
286
dpd_buf4_init(&T, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tauIjAb");
287
dpd_contract444(&Z, &T, &G, 0, 1, 1.0, 1.0);
292
psio_close(EOM_TMP1,0);
293
psio_open(EOM_TMP1,PSIO_OPEN_NEW);
295
/* + 0.5 P(AB) (tau_IJEF LMNEF) RMA TNB ; terms 25, 27 */
296
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 2, 21, 2, 21, 0, "Z(I>J,AN)");
297
dpd_buf4_init(&I, EOM_TMP, L_irr, 2, 0, 2, 2, 0, "Tau2L2_OOOO");
298
dpd_file2_init(&R1, CC_GR, R_irr, 0, 1, "RIA");
299
dpd_contract244(&R1, &I, &Z, 0, 2, 1, 1.0, 0.0);
300
dpd_file2_close(&R1);
302
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 2, 5, 2, 5, 0, "Z(I>J,AB)");
303
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
304
dpd_contract424(&Z, &T1, &Z2, 3, 0, 0, 1.0, 0.0);
305
dpd_file2_close(&T1);
307
dpd_buf4_init(&G, EOM_TMP0, G_irr, 2, 5, 2, 7, 0, "GIJAB");
308
dpd_buf4_axpy(&Z2, &G, 1.0);
309
dpd_buf4_sort(&Z2, EOM_TMP1, pqsr, 2, 5, "Z(I>J,BA)");
311
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 2, 5, 2, 5, 0, "Z(I>J,BA)");
312
dpd_buf4_axpy(&Z2, &G, -1.0);
315
/* + 0.5 P(ab) (tau_ijef Lmnef) Rma Tnb ; terms 25, 27 */
316
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 12, 31, 12, 31, 0, "Z(i>j,an)");
317
dpd_buf4_init(&I, EOM_TMP, L_irr, 12, 10, 12, 12, 0, "Tau2L2_oooo");
318
dpd_file2_init(&R1, CC_GR, R_irr, 2, 3, "Ria");
319
dpd_contract244(&R1, &I, &Z, 0, 2, 1, 1.0, 0.0);
320
dpd_file2_close(&R1);
322
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 12, 15, 12, 15, 0, "Z(i>j,ab)");
323
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
324
dpd_contract424(&Z, &T1, &Z2, 3, 0, 0, 1.0, 0.0);
325
dpd_file2_close(&T1);
327
dpd_buf4_init(&G, EOM_TMP0, G_irr, 12, 15, 12, 17, 0, "Gijab");
328
dpd_buf4_axpy(&Z2, &G, 1.0);
329
dpd_buf4_sort(&Z2, EOM_TMP1, pqsr, 12, 15, "Z(i>j,ba)");
331
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 12, 15, 12, 15, 0, "Z(i>j,ba)");
332
dpd_buf4_axpy(&Z2, &G, -1.0);
335
/* + tau_IjEf LMnEf RMA Tnb ; terms 25, 27 */
336
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 22, 26, 22, 26, 0, "Z(Ij,An)");
337
dpd_buf4_init(&I, EOM_TMP, L_irr, 22, 22, 22, 22, 0, "Tau2L2_OoOo");
338
dpd_file2_init(&R1, CC_GR, R_irr, 0, 1, "RIA");
339
dpd_contract244(&R1, &I, &Z, 0, 2, 1, 1.0, 0.0);
340
dpd_file2_close(&R1);
342
dpd_buf4_init(&G, EOM_TMP0, G_irr, 22, 28, 22, 28, 0, "GIjAb");
343
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
344
dpd_contract424(&Z, &T1, &G, 3, 0, 0, 1.0, 1.0);
345
dpd_file2_close(&T1);
347
/* + tau_IjEf LNmEf Rmb TNA ; terms 25, 27 */
348
dpd_buf4_init(&Z, EOM_TMP1, L_irr, 22, 26, 22, 26, 0, "Z2(Ij,An)");
349
dpd_buf4_init(&I, EOM_TMP, L_irr, 22, 22, 22, 22, 0, "Tau2L2_OoOo");
350
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
351
dpd_contract244(&T1, &I, &Z, 0, 2, 1, 1.0, 0.0);
352
dpd_file2_close(&T1);
354
dpd_file2_init(&R1, CC_GR, R_irr, 2, 3, "Ria");
355
dpd_contract424(&Z, &R1, &G, 3, 0, 0, 1.0, 1.0);
356
dpd_file2_close(&R1);
359
psio_close(EOM_TMP1,0);
360
psio_open(EOM_TMP1,PSIO_OPEN_NEW);
362
/* terms combined to P(ij)P(ab) Z(i,a) T(j,b), 3,22,23,33 */
365
/* terms combined to P(ij)P(ab) Z(i,a) R(j,b), 18,32,34,19 */
368
/* -P(ij)(Lme Tie + 0.5 Lmnef Tinef) Rmjab, term 16, 30 */
369
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 0, 7, 0, 7, 0, "Z(IJ,A>B)");
370
dpd_buf4_init(&R, CC_GR, R_irr, 0, 7, 2, 7, 0, "RIJAB");
371
dpd_file2_init(&I1, EOM_TMP, L_irr, 0, 0, "LT_OO");
372
dpd_contract244(&I1, &R, &Z, 0, 0, 0, 1.0, 0.0);
373
dpd_file2_close(&I1);
375
dpd_buf4_init(&G, EOM_TMP0, G_irr, 0, 7, 2, 7, 0, "GIJAB");
376
dpd_buf4_axpy(&Z, &G, -1.0);
377
dpd_buf4_sort(&Z, EOM_TMP1, qprs, 0, 7, "Z(JI,A>B)");
379
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 0, 7, 0, 7, 0, "Z(JI,A>B)");
380
dpd_buf4_axpy(&Z, &G, 1.0);
384
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 10, 17, 10, 17, 0, "Z(ij,a>b)");
385
dpd_buf4_init(&R, CC_GR, R_irr, 10, 17, 12, 17, 0, "Rijab");
386
dpd_file2_init(&I1, EOM_TMP, L_irr, 2, 2, "LT_oo");
387
dpd_contract244(&I1, &R, &Z, 0, 0, 0, 1.0, 0.0);
388
dpd_file2_close(&I1);
390
dpd_buf4_init(&G, EOM_TMP0, G_irr, 10, 17, 12, 17, 0, "Gijab");
391
dpd_buf4_axpy(&Z, &G, -1.0);
392
dpd_buf4_sort(&Z, EOM_TMP1, qprs, 10, 17, "Z(ji,a>b)");
394
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 10, 17, 10, 17, 0, "Z(ji,a>b)");
395
dpd_buf4_axpy(&Z, &G, 1.0);
399
dpd_buf4_init(&G, EOM_TMP0, G_irr, 22, 28, 22, 28, 0, "GIjAb");
400
dpd_buf4_init(&R, CC_GR, R_irr, 22, 28, 22, 28, 0, "RIjAb");
401
dpd_file2_init(&I1, EOM_TMP, L_irr, 0, 0, "LT_OO");
402
dpd_contract244(&I1, &R, &G, 0, 0, 0, -1.0, 1.0);
403
dpd_file2_close(&I1);
405
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 23, 28, 23, 28, 0, "Z(jI,Ab)");
406
dpd_buf4_init(&R, CC_GR, R_irr, 23, 28, 23, 28, 0, "RiJAb");
407
dpd_file2_init(&I1, EOM_TMP, L_irr, 2, 2, "LT_oo");
408
dpd_contract244(&I1, &R, &Z, 0, 0, 0, 1.0, 0.0);
409
dpd_file2_close(&I1);
411
dpd_buf4_sort(&Z, EOM_TMP1, qprs, 22, 28, "Z(Ij,Ab)");
413
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 22, 28, 22, 28, 0, "Z(Ij,Ab)");
414
dpd_buf4_axpy(&Z, &G, -1.0);
418
psio_close(EOM_TMP1,0);
419
psio_open(EOM_TMP1, PSIO_OPEN_NEW);
421
/* -P(ab)(Lme Tmb + 0.5 Lmnfe Tmnfb) Rijae, term 17, 31 */
422
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 2, 5, 2, 5, 0, "Z(I>J,AB)");
423
dpd_buf4_init(&R, CC_GR, R_irr, 2, 5, 2, 7, 0, "RIJAB");
424
dpd_file2_init(&I1, EOM_TMP, L_irr, 1, 1, "LT_VV");
425
dpd_contract424(&R, &I1, &Z, 3, 0, 0, 1.0, 0.0);
426
dpd_file2_close(&I1);
428
dpd_buf4_init(&G, EOM_TMP0, G_irr, 2, 5, 2, 7, 0, "GIJAB");
429
dpd_buf4_axpy(&Z, &G, -1.0);
430
dpd_buf4_sort(&Z, EOM_TMP1, pqsr, 2, 5, "Z(I>J,BA)");
432
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 2, 5, 2, 5, 0, "Z(I>J,BA)");
433
dpd_buf4_axpy(&Z, &G, 1.0);
437
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 12, 15, 12, 15, 0, "Z(i>j,ab)");
438
dpd_buf4_init(&R, CC_GR, R_irr, 12, 15, 12, 17, 0, "Rijab");
439
dpd_file2_init(&I1, EOM_TMP, L_irr, 3, 3, "LT_vv");
440
dpd_contract424(&R, &I1, &Z, 3, 0, 0, 1.0, 0.0);
441
dpd_file2_close(&I1);
443
dpd_buf4_init(&G, EOM_TMP0, G_irr, 12, 15, 12, 17, 0, "Gijab");
444
dpd_buf4_axpy(&Z, &G, -1.0);
445
dpd_buf4_sort(&Z, EOM_TMP1, pqsr, 12, 15, "Z(i>j,ba)");
447
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 12, 15, 12, 15, 0, "Z(i>j,ba)");
448
dpd_buf4_axpy(&Z, &G, 1.0);
452
dpd_buf4_init(&G, EOM_TMP0, G_irr, 22, 28, 22, 28, 0, "GIjAb");
453
dpd_buf4_init(&R, CC_GR, R_irr, 22, 28, 22, 28, 0, "RIjAb");
454
dpd_file2_init(&I1, EOM_TMP, L_irr, 3, 3, "LT_vv");
455
dpd_contract424(&R, &I1, &G, 3, 0, 0, -1.0, 1.0);
456
dpd_file2_close(&I1);
458
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 22, 29, 22, 29, 0, "Z(Ij,bA)");
459
dpd_buf4_init(&R, CC_GR, R_irr, 22, 29, 22, 29, 0, "RIjaB");
460
dpd_file2_init(&I1, EOM_TMP, L_irr, 1, 1, "LT_VV");
461
dpd_contract424(&R, &I1, &Z, 3, 0, 0, 1.0, 0.0);
462
dpd_file2_close(&I1);
464
dpd_buf4_sort(&Z, EOM_TMP1, pqsr, 22, 28, "Z(Ij,Ab)");
466
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 22, 28, 22, 28, 0, "Z(Ij,Ab)");
467
dpd_buf4_axpy(&Z, &G, -1.0);
471
psio_close(EOM_TMP1,0);
472
psio_open(EOM_TMP1, PSIO_OPEN_NEW);
474
/* -P(ab) lmnef rme tijfb tna, term 37 */
475
if (!params.connect_xi) {
476
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 2, 21, 2, 21, 0, "Z(I>J,AN)");
477
dpd_buf4_init(&T, CC_TAMPS, 0, 2, 5, 2, 7, 0, "tIJAB");
478
dpd_file2_init(&I1, EOM_TMP, G_irr, 0, 1, "L2R1_OV");
479
dpd_contract424(&T, &I1, &Z, 3, 1, 0, 1.0, 0.0);
480
dpd_file2_close(&I1);
482
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 2, 5, 2, 5, 0, "Z(I>J,AB)");
483
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
484
dpd_contract424(&Z, &T1, &Z2, 3, 0, 0, 1.0, 0.0);
485
dpd_file2_close(&T1);
488
dpd_buf4_init(&G, EOM_TMP0, G_irr, 2, 5, 2, 7, 0, "GIJAB");
489
dpd_buf4_init(&Z, EOM_TMP1, 0, 2, 5, 2, 5, 0, "Z(I>J,AB)");
490
dpd_buf4_axpy(&Z, &G, -1.0);
491
dpd_buf4_sort(&Z, EOM_TMP1, pqsr, 2, 5, "Z(I>J,BA)");
493
dpd_buf4_init(&Z, EOM_TMP1, 0, 2, 5, 2, 5, 0, "Z(I>J,BA)");
494
dpd_buf4_axpy(&Z, &G, 1.0);
497
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 12, 31, 12, 31, 0, "Z(i>j,an)");
498
dpd_buf4_init(&T, CC_TAMPS, 0, 12, 15, 12, 17, 0, "tijab");
499
dpd_file2_init(&I1, EOM_TMP, G_irr, 2, 3, "L2R1_ov");
500
dpd_contract424(&T, &I1, &Z, 3, 1, 0, 1.0, 0.0);
501
dpd_file2_close(&I1);
503
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 12, 15, 12, 15, 0, "Z(i>j,ab)");
504
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
505
dpd_contract424(&Z, &T1, &Z2, 3, 0, 0, 1.0, 0.0);
506
dpd_file2_close(&T1);
509
dpd_buf4_init(&G, EOM_TMP0, G_irr, 12, 15, 12, 17, 0, "Gijab");
510
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 12, 15, 12, 15, 0, "Z(i>j,ab)");
511
dpd_buf4_axpy(&Z, &G, -1.0);
512
dpd_buf4_sort(&Z, EOM_TMP1, pqsr, 12, 15, "Z(i>j,ba)");
514
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 12, 15, 12, 15, 0, "Z(i>j,ba)");
515
dpd_buf4_axpy(&Z, &G, 1.0);
518
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 22, 26, 22, 26, 0, "Z(Ij,An)");
519
dpd_buf4_init(&T, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tIjAb");
520
dpd_file2_init(&I1, EOM_TMP, G_irr, 2, 3, "L2R1_ov");
521
dpd_contract424(&T, &I1, &Z, 3, 1, 0, 1.0, 0.0);
522
dpd_file2_close(&I1);
524
dpd_buf4_init(&G, EOM_TMP0, G_irr, 22, 28, 22, 28, 0, "GIjAb");
525
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
526
dpd_contract424(&Z, &T1, &G, 3, 0, 0, -1.0, 1.0);
527
dpd_file2_close(&T1);
530
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 22, 24, 22, 24, 0, "Z(Ij,Nb)");
531
dpd_buf4_init(&T, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tIjAb");
532
dpd_file2_init(&I1, EOM_TMP, G_irr, 0, 1, "L2R1_OV");
533
dpd_contract244(&I1, &T, &Z, 1, 2, 1, 1.0, 0.0);
534
dpd_file2_close(&I1);
536
dpd_buf4_init(&G, EOM_TMP0, G_irr, 22, 28, 22, 28, 0, "GIjAb");
537
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
538
dpd_contract244(&T1, &Z, &G, 0, 2, 1, -1.0, 1.0);
539
dpd_file2_close(&T1);
544
/* compute Z(IA,JB) Z(ia,jb) and Z(IA,jb) for terms
545
20, 28, 29, 21 then permute and add in */
546
/* + P(ij) P(ab) (Rimae Lnmfe) Tnjfb, term 20 */
547
dpd_buf4_init(&Z, EOM_TMP0, G_irr, 20, 20, 20, 20, 0, "Z(IA,JB)");
548
dpd_buf4_init(&I, EOM_TMP, G_irr, 20, 20, 20, 20, 0, "R2L2_OVOV");
549
dpd_buf4_init(&T, CC_TAMPS, 0, 20, 20, 20, 20, 0, "tIAJB");
550
dpd_contract444(&I, &T, &Z, 0, 1, 1.0, 0.0);
553
dpd_buf4_init(&I, EOM_TMP, G_irr, 20, 30, 20, 30, 0, "R2L2_OVov");
554
dpd_buf4_init(&T, CC_TAMPS, 0, 30, 20, 30, 20, 0, "tiaJB");
555
dpd_contract444(&I, &T, &Z, 0, 1, 1.0, 1.0);
559
dpd_buf4_init(&Z, EOM_TMP0, G_irr, 30, 30, 30, 30, 0, "Z(ia,jb)");
560
dpd_buf4_init(&I, EOM_TMP, G_irr, 30, 30, 30, 30, 0, "R2L2_ovov");
561
dpd_buf4_init(&T, CC_TAMPS, 0, 30, 30, 30, 30, 0, "tiajb");
562
dpd_contract444(&I, &T, &Z, 0, 1, 1.0, 0.0);
565
dpd_buf4_init(&I, EOM_TMP, G_irr, 30, 20, 30, 20, 0, "R2L2_ovOV");
566
dpd_buf4_init(&T, CC_TAMPS, 0, 20, 30, 20, 30, 0, "tIAjb");
567
dpd_contract444(&I, &T, &Z, 0, 1, 1.0, 1.0);
571
dpd_buf4_init(&Z, EOM_TMP0, G_irr, 20, 30, 20, 30, 0, "Z(IA,jb)");
572
dpd_buf4_init(&I, EOM_TMP, G_irr, 20, 20, 20, 20, 0, "R2L2_OVOV");
573
dpd_buf4_init(&T, CC_TAMPS, 0, 20, 30, 20, 30, 0, "tIAjb");
574
dpd_contract444(&I, &T, &Z, 0, 1, 1.0, 0.0);
577
dpd_buf4_init(&I, EOM_TMP, G_irr, 20, 30, 20, 30, 0, "R2L2_OVov");
578
dpd_buf4_init(&T, CC_TAMPS, 0, 30, 30, 30, 30, 0, "tiajb");
579
dpd_contract444(&I, &T, &Z, 0, 1, 1.0, 1.0);
582
dpd_buf4_init(&I, EOM_TMP, G_irr, 30, 20, 30, 20, 0, "R2L2_ovOV");
583
dpd_buf4_init(&T, CC_TAMPS, 0, 20, 20, 20, 20, 0, "tIAJB");
584
dpd_contract444(&T, &I, &Z, 0, 0, 1.0, 1.0);
587
dpd_buf4_init(&I, EOM_TMP, G_irr, 30, 30, 30, 30, 0, "R2L2_ovov");
588
dpd_buf4_init(&T, CC_TAMPS, 0, 20, 30, 20, 30, 0, "tIAjb");
589
dpd_contract444(&T, &I, &Z, 0, 0, 1.0, 1.0);
594
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 24, 27, 24, 27, 0, "Z(Ib,jA)");
595
dpd_buf4_init(&I, EOM_TMP, G_irr, 27, 27, 27, 27, 0, "R2L2_oVoV");
596
dpd_buf4_init(&T, CC_TAMPS, 0, 24, 27, 24, 27, 0, "tIbjA");
597
dpd_contract444(&T, &I, &Z, 0, 0, 1.0, 0.0);
600
dpd_buf4_init(&I, EOM_TMP, G_irr, 24, 24, 24, 24, 0, "R2L2_OvOv");
601
dpd_buf4_init(&T, CC_TAMPS, 0, 24, 27, 24, 27, 0, "tIbjA");
602
dpd_contract444(&I, &T, &Z, 0, 1, 1.0, 1.0);
605
dpd_buf4_sort_axpy(&Z, EOM_TMP0, psrq, 20, 30, "Z(IA,jb)", 1.0);
608
psio_close(EOM_TMP1,0);
609
psio_open(EOM_TMP1,PSIO_OPEN_NEW);
611
/* - P(ij) P(ab) (Tjmbe Lnmfe) Tif Rna, term 28 */
612
dpd_buf4_init(&Z, EOM_TMP1, L_irr, 20, 0, 20, 0, 0, "Z(JB,NI)");
613
dpd_buf4_init(&I, EOM_TMP, L_irr, 20, 20, 20, 20, 0, "VIAJB");
614
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
615
dpd_contract424(&I, &T1, &Z, 3, 1, 0, 1.0, 0.0);
616
dpd_file2_close(&T1);
618
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 21, 20, 21, 20, 0, "Z(AI,JB)");
619
dpd_file2_init(&R1, CC_GR, R_irr, 0, 1, "RIA");
620
dpd_contract244(&R1, &Z, &Z2, 0, 2, 0, 1.0, 0.0);
621
dpd_file2_close(&R1);
623
dpd_buf4_sort_axpy(&Z2, EOM_TMP0, qprs, 20, 20, "Z(IA,JB)", -1.0);
626
dpd_buf4_init(&Z, EOM_TMP1, L_irr, 30, 10, 30, 10, 0, "Z(jb,ni)");
627
dpd_buf4_init(&I, EOM_TMP, L_irr, 30, 30, 30, 30, 0, "Viajb");
628
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
629
dpd_contract424(&I, &T1, &Z, 3, 1, 0, 1.0, 0.0);
630
dpd_file2_close(&T1);
632
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 31, 30, 31, 30, 0, "Z(ai,jb)");
633
dpd_file2_init(&R1, CC_GR, R_irr, 2, 3, "Ria");
634
dpd_contract244(&R1, &Z, &Z2, 0, 2, 0, 1.0, 0.0);
635
dpd_file2_close(&R1);
637
dpd_buf4_sort_axpy(&Z2, EOM_TMP0, qprs, 30, 30, "Z(ia,jb)", -1.0);
640
dpd_buf4_init(&Z, EOM_TMP1, L_irr, 30, 0, 30, 0, 0, "Z(jb,NI)");
641
dpd_buf4_init(&I, EOM_TMP, L_irr, 30, 20, 30, 20, 0, "ViaJB");
642
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
643
dpd_contract424(&I, &T1, &Z, 3, 1, 0, 1.0, 0.0);
644
dpd_file2_close(&T1);
646
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 21, 30, 21, 30, 0, "Z(AI,jb)");
647
dpd_file2_init(&R1, CC_GR, R_irr, 0, 1, "RIA");
648
dpd_contract244(&R1, &Z, &Z2, 0, 2, 0, 1.0, 0.0);
649
dpd_file2_close(&R1);
651
dpd_buf4_sort_axpy(&Z2, EOM_TMP0, qprs, 20, 30, "Z(IA,jb)", -1.0);
654
dpd_buf4_init(&Z, EOM_TMP1, L_irr, 24, 22, 24, 22, 0, "Z(Ib,Nj)");
655
dpd_buf4_init(&I, EOM_TMP, L_irr, 24, 24, 24, 24, 0, "VIaJb");
656
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
657
dpd_contract424(&I, &T1, &Z, 3, 1, 0, 1.0, 0.0);
658
dpd_file2_close(&T1);
660
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 24, 26, 24, 26, 0, "Z(Ib,Aj)");
661
dpd_file2_init(&R1, CC_GR, R_irr, 0, 1, "RIA");
662
dpd_contract244(&R1, &Z, &Z2, 0, 2, 1, 1.0, 0.0);
663
dpd_file2_close(&R1);
665
dpd_buf4_sort_axpy(&Z2, EOM_TMP0, prsq, 20, 30, "Z(IA,jb)", +1.0);
668
psio_close(EOM_TMP1,0);
669
psio_open(EOM_TMP1,PSIO_OPEN_NEW);
671
dpd_buf4_init(&Z, EOM_TMP1, L_irr, 27, 23, 27, 23, 0, "Z(jA,nI)");
672
dpd_buf4_init(&I, EOM_TMP, L_irr, 27, 27, 27, 27, 0, "ViAjB");
673
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
674
dpd_contract424(&I, &T1, &Z, 3, 1, 0, 1.0, 0.0);
675
dpd_file2_close(&T1);
677
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 25, 27, 25, 27, 0, "Z(bI,jA)");
678
dpd_file2_init(&R1, CC_GR, R_irr, 2, 3, "Ria");
679
dpd_contract244(&R1, &Z, &Z2, 0, 2, 0, 1.0, 0.0);
680
dpd_file2_close(&R1);
682
dpd_buf4_sort(&Z2, EOM_TMP1, sqrp, 21, 30, "Z(AI,jb)");
684
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 21, 30, 21, 30, 0, "Z(AI,jb)");
685
dpd_buf4_sort_axpy(&Z2, EOM_TMP0, qprs, 20, 30, "Z(IA,jb)", +1.0);
688
dpd_buf4_init(&Z, EOM_TMP1, L_irr, 20, 10, 20, 10, 0, "Z(IA,nj)");
689
dpd_buf4_init(&I, EOM_TMP, L_irr, 20, 30, 20, 30, 0, "VIAjb");
690
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
691
dpd_contract424(&I, &T1, &Z, 3, 1, 0, 1.0, 0.0);
692
dpd_file2_close(&T1);
694
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 20, 31, 20, 31, 0, "Z(IA,bj)");
695
dpd_file2_init(&R1, CC_GR, R_irr, 2, 3, "Ria");
696
dpd_contract244(&R1, &Z, &Z2, 0, 2, 1, 1.0, 0.0);
697
dpd_file2_close(&R1);
699
dpd_buf4_sort_axpy(&Z2, EOM_TMP0, pqsr, 20, 30, "Z(IA,jb)", -1.0);
702
psio_close(EOM_TMP1,0);
703
psio_open(EOM_TMP1,PSIO_OPEN_NEW);
705
/* - P(ij) P(ab) (Tjmbe Lnmfe) Rif Tna, term 29 */
706
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 20, 0, 20, 0, 0, "Z(JB,NI)");
707
dpd_buf4_init(&I, EOM_TMP, L_irr, 20, 20, 20, 20, 0, "VIAJB");
708
dpd_file2_init(&R1, CC_GR, R_irr, 0, 1, "RIA");
709
dpd_contract424(&I, &R1, &Z, 3, 1, 0, 1.0, 0.0);
710
dpd_file2_close(&R1);
712
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 21, 20, 21, 20, 0, "Z(AI,JB)");
713
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
714
dpd_contract244(&T1, &Z, &Z2, 0, 2, 0, 1.0, 0.0);
715
dpd_file2_close(&T1);
717
dpd_buf4_sort_axpy(&Z2, EOM_TMP0, qprs, 20, 20, "Z(IA,JB)", -1.0);
720
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 30, 10, 30, 10, 0, "Z(jb,ni)");
721
dpd_buf4_init(&I, EOM_TMP, L_irr, 30, 30, 30, 30, 0, "Viajb");
722
dpd_file2_init(&R1, CC_GR, R_irr, 2, 3, "Ria");
723
dpd_contract424(&I, &R1, &Z, 3, 1, 0, 1.0, 0.0);
724
dpd_file2_close(&R1);
726
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 31, 30, 31, 30, 0, "Z(ai,jb)");
727
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
728
dpd_contract244(&T1, &Z, &Z2, 0, 2, 0, 1.0, 0.0);
729
dpd_file2_close(&T1);
731
dpd_buf4_sort_axpy(&Z2, EOM_TMP0, qprs, 30, 30, "Z(ia,jb)", -1.0);
734
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 30, 0, 30, 0, 0, "Z(jb,NI)");
735
dpd_buf4_init(&I, EOM_TMP, L_irr, 30, 20, 30, 20, 0, "ViaJB");
736
dpd_file2_init(&R1, CC_GR, R_irr, 0, 1, "RIA");
737
dpd_contract424(&I, &R1, &Z, 3, 1, 0, 1.0, 0.0);
738
dpd_file2_close(&R1);
740
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 21, 30, 21, 30, 0, "Z(AI,jb)");
741
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
742
dpd_contract244(&T1, &Z, &Z2, 0, 2, 0, 1.0, 0.0);
743
dpd_file2_close(&T1);
745
dpd_buf4_sort_axpy(&Z2, EOM_TMP0, qprs, 20, 30, "Z(IA,jb)", -1.0);
748
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 24, 22, 24, 22, 0, "Z(Ib,Nj)");
749
dpd_buf4_init(&I, EOM_TMP, L_irr, 24, 24, 24, 24, 0, "VIaJb");
750
dpd_file2_init(&R1, CC_GR, R_irr, 2, 3, "Ria");
751
dpd_contract424(&I, &R1, &Z, 3, 1, 0, 1.0, 0.0);
752
dpd_file2_close(&R1);
754
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 24, 26, 24, 26, 0, "Z(Ib,Aj)");
755
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
756
dpd_contract244(&T1, &Z, &Z2, 0, 2, 1, 1.0, 0.0);
757
dpd_file2_close(&T1);
759
dpd_buf4_sort_axpy(&Z2, EOM_TMP0, prsq, 20, 30, "Z(IA,jb)", +1.0);
762
psio_close(EOM_TMP1,0);
763
psio_open(EOM_TMP1,PSIO_OPEN_NEW);
765
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 27, 23, 27, 23, 0, "Z(jA,nI)");
766
dpd_buf4_init(&I, EOM_TMP, L_irr, 27, 27, 27, 27, 0, "ViAjB");
767
dpd_file2_init(&R1, CC_GR, R_irr, 0, 1, "RIA");
768
dpd_contract424(&I, &R1, &Z, 3, 1, 0, 1.0, 0.0);
769
dpd_file2_close(&R1);
771
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 25, 27, 25, 27, 0, "Z(bI,jA)");
772
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
773
dpd_contract244(&T1, &Z, &Z2, 0, 2, 0, 1.0, 0.0);
774
dpd_file2_close(&T1);
776
dpd_buf4_sort(&Z2, EOM_TMP1, sqrp, 21, 30, "Z(AI,jb)");
778
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 21, 30, 21, 30, 0, "Z(AI,jb)");
779
dpd_buf4_sort_axpy(&Z2, EOM_TMP0, qprs, 20, 30, "Z(IA,jb)", +1.0);
782
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 20, 10, 20, 10, 0, "Z(IA,nj)");
783
dpd_buf4_init(&I, EOM_TMP, L_irr, 20, 30, 20, 30, 0, "VIAjb");
784
dpd_file2_init(&R1, CC_GR, R_irr, 2, 3, "Ria");
785
dpd_contract424(&I, &R1, &Z, 3, 1, 0, 1.0, 0.0);
786
dpd_file2_close(&R1);
788
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 20, 31, 20, 31, 0, "Z(IA,bj)");
789
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
790
dpd_contract244(&T1, &Z, &Z2, 0, 2, 1, 1.0, 0.0);
791
dpd_file2_close(&T1);
793
dpd_buf4_sort_axpy(&Z2, EOM_TMP0, pqsr, 20, 30, "Z(IA,jb)", -1.0);
796
psio_close(EOM_TMP1,0);
797
psio_open(EOM_TMP1,PSIO_OPEN_NEW);
799
/* - P(ij) P(ab) (Rjmbe Lnmfe) Tif Tna, term 21 */
800
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 20, 0, 20, 0, 0, "Z(JB,NI)");
801
dpd_buf4_init(&I, EOM_TMP, G_irr, 20, 20, 20, 20, 0, "R2L2_OVOV");
802
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
803
dpd_contract424(&I, &T1, &Z, 3, 1, 0, 1.0, 0.0);
804
dpd_file2_close(&T1);
806
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 21, 20, 21, 20, 0, "Z(AI,JB)");
807
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
808
dpd_contract244(&T1, &Z, &Z2, 0, 2, 0, 1.0, 0.0);
809
dpd_file2_close(&T1);
811
dpd_buf4_sort_axpy(&Z2, EOM_TMP0, qprs, 20, 20, "Z(IA,JB)", -1.0);
814
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 30, 10, 30, 10, 0, "Z(jb,ni)");
815
dpd_buf4_init(&I, EOM_TMP, G_irr, 30, 30, 30, 30, 0, "R2L2_ovov");
816
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
817
dpd_contract424(&I, &T1, &Z, 3, 1, 0, 1.0, 0.0);
818
dpd_file2_close(&T1);
820
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 31, 30, 31, 30, 0, "Z(ai,jb)");
821
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
822
dpd_contract244(&T1, &Z, &Z2, 0, 2, 0, 1.0, 0.0);
823
dpd_file2_close(&T1);
825
dpd_buf4_sort_axpy(&Z2, EOM_TMP0, qprs, 30, 30, "Z(ia,jb)", -1.0);
828
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 30, 0, 30, 0, 0, "Z(jb,NI)");
829
dpd_buf4_init(&I, EOM_TMP, G_irr, 30, 20, 30, 20, 0, "R2L2_ovOV");
830
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
831
dpd_contract424(&I, &T1, &Z, 3, 1, 0, 1.0, 0.0);
832
dpd_file2_close(&T1);
834
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 21, 30, 21, 30, 0, "Z(AI,jb)");
835
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
836
dpd_contract244(&T1, &Z, &Z2, 0, 2, 0, 1.0, 0.0);
837
dpd_file2_close(&T1);
839
dpd_buf4_sort_axpy(&Z2, EOM_TMP0, qprs, 20, 30, "Z(IA,jb)", -1.0);
842
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 24, 22, 24, 22, 0, "Z(Ib,Nj)");
843
dpd_buf4_init(&I, EOM_TMP, G_irr, 24, 24, 24, 24, 0, "R2L2_OvOv");
844
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
845
dpd_contract424(&I, &T1, &Z, 3, 1, 0, 1.0, 0.0);
846
dpd_file2_close(&T1);
848
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 24, 26, 24, 26, 0, "Z(Ib,Aj)");
849
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
850
dpd_contract244(&T1, &Z, &Z2, 0, 2, 1, 1.0, 0.0);
851
dpd_file2_close(&T1);
853
dpd_buf4_sort_axpy(&Z2, EOM_TMP0, prsq, 20, 30, "Z(IA,jb)", +1.0);
856
psio_close(EOM_TMP1,0);
857
psio_open(EOM_TMP1,PSIO_OPEN_NEW);
859
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 27, 23, 27, 23, 0, "Z(jA,nI)");
860
dpd_buf4_init(&I, EOM_TMP, G_irr, 27, 27, 27, 27, 0, "R2L2_oVoV");
861
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
862
dpd_contract424(&I, &T1, &Z, 3, 1, 0, 1.0, 0.0);
863
dpd_file2_close(&T1);
865
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 25, 27, 25, 27, 0, "Z(bI,jA)");
866
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
867
dpd_contract244(&T1, &Z, &Z2, 0, 2, 0, 1.0, 0.0);
868
dpd_file2_close(&T1);
870
dpd_buf4_sort(&Z2, EOM_TMP1, sqrp, 21, 30, "Z(AI,jb)");
872
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 21, 30, 21, 30, 0, "Z(AI,jb)");
873
dpd_buf4_sort_axpy(&Z2, EOM_TMP0, qprs, 20, 30, "Z(IA,jb)", +1.0);
876
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 20, 10, 20, 10, 0, "Z(IA,nj)");
877
dpd_buf4_init(&I, EOM_TMP, G_irr, 20, 30, 20, 30, 0, "R2L2_OVov");
878
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
879
dpd_contract424(&I, &T1, &Z, 3, 1, 0, 1.0, 0.0);
880
dpd_file2_close(&T1);
882
dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 20, 31, 20, 31, 0, "Z(IA,bj)");
883
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
884
dpd_contract244(&T1, &Z, &Z2, 0, 2, 1, 1.0, 0.0);
885
dpd_file2_close(&T1);
887
dpd_buf4_sort_axpy(&Z2, EOM_TMP0, pqsr, 20, 30, "Z(IA,jb)", -1.0);
890
psio_close(EOM_TMP1,0);
891
psio_open(EOM_TMP1,PSIO_OPEN_NEW);
894
/* Now permute Z(IA,JB) and Z(ia,jb) and add them in along with Z(IA,jb) */
895
dpd_buf4_init(&Z2, EOM_TMP0, G_irr, 20, 20, 20, 20, 0, "Z(IA,JB)");
896
dpd_buf4_sort(&Z2, EOM_TMP1, prqs, 0, 5, "Z(IJ,AB)");
898
dpd_buf4_init(&G, EOM_TMP0, G_irr, 0, 5, 2, 7, 0, "GIJAB");
899
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 0, 5, 0, 5, 0, "Z(IJ,AB)");
900
dpd_buf4_axpy(&Z, &G, 1.0);
901
dpd_buf4_sort(&Z, EOM_TMP1, qprs, 0, 5, "Z(JI,AB)");
902
dpd_buf4_sort(&Z, EOM_TMP1, pqsr, 0, 5, "Z(IJ,BA)");
904
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 0, 5, 0, 5, 0, "Z(JI,AB)");
905
dpd_buf4_axpy(&Z, &G, -1.0);
907
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 0, 5, 0, 5, 0, "Z(IJ,BA)");
908
dpd_buf4_axpy(&Z, &G, -1.0);
909
dpd_buf4_sort(&Z, EOM_TMP1, qprs, 0, 5, "Z(JI,BA)");
911
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 0, 5, 0, 5, 0, "Z(JI,BA)");
912
dpd_buf4_axpy(&Z, &G, 1.0);
916
dpd_buf4_init(&Z2, EOM_TMP0, G_irr, 30, 30, 30, 30, 0, "Z(ia,jb)");
917
dpd_buf4_sort(&Z2, EOM_TMP1, prqs, 10, 15, "Z(ij,ab)");
919
dpd_buf4_init(&G, EOM_TMP0, G_irr, 10, 15, 12, 17, 0, "Gijab");
920
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 10, 15, 10, 15, 0, "Z(ij,ab)");
921
dpd_buf4_axpy(&Z, &G, 1.0);
922
dpd_buf4_sort(&Z, EOM_TMP1, qprs, 10, 15, "Z(ji,ab)");
923
dpd_buf4_sort(&Z, EOM_TMP1, pqsr, 10, 15, "Z(ij,ba)");
925
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 10, 15, 10, 15, 0, "Z(ji,ab)");
926
dpd_buf4_axpy(&Z, &G, -1.0);
928
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 10, 15, 10, 15, 0, "Z(ij,ba)");
929
dpd_buf4_axpy(&Z, &G, -1.0);
930
dpd_buf4_sort(&Z, EOM_TMP1, qprs, 10, 15, "Z(ji,ba)");
932
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 10, 15, 10, 15, 0, "Z(ji,ba)");
933
dpd_buf4_axpy(&Z, &G, 1.0);
937
dpd_buf4_init(&Z, EOM_TMP0, G_irr, 20, 30, 20, 30, 0, "Z(IA,jb)");
938
dpd_buf4_sort_axpy(&Z, EOM_TMP0, prqs, 22, 28, "GIjAb", 1.0);
941
/* add to ground state parts */
942
dpd_buf4_init(&G, EOM_TMP0, G_irr, 2, 7, 2, 7, 0, "GIJAB");
943
dpd_buf4_init(&V, CC_GAMMA, G_irr, 2, 7, 2, 7, 0, "GIJAB");
944
dpd_buf4_axpy(&G, &V, 0.5);
947
dpd_buf4_init(&G, EOM_TMP0, G_irr, 12, 17, 12, 17, 0, "Gijab");
948
dpd_buf4_init(&V, CC_GAMMA, G_irr, 12, 17, 12, 17, 0, "Gijab");
949
dpd_buf4_axpy(&G, &V, 0.5);
952
dpd_buf4_init(&G, EOM_TMP0, G_irr, 22, 28, 22, 28, 0, "GIjAb");
953
dpd_buf4_init(&V, CC_GAMMA, G_irr, 22, 28, 22, 28, 0, "GIjAb");
954
dpd_buf4_axpy(&G, &V, 0.5);
959
dpd_buf4_init(&V, CC_GAMMA, G_irr, 2, 7, 2, 7, 0, "GIJAB");
960
tval = dpd_buf4_dot_self(&V);
962
dpd_buf4_init(&V, CC_GAMMA, G_irr, 12, 17, 12, 17, 0, "Gijab");
963
tval += dpd_buf4_dot_self(&V);
965
dpd_buf4_init(&V, CC_GAMMA, G_irr, 22, 28, 22, 28, 0, "GIjAb");
966
tval += dpd_buf4_dot_self(&V);
968
fprintf(outfile,"<Gijab|Gijab> = %15.10lf\n", tval);
975
/* This function computes the following EOM Gijab terms
976
Z(i,a) += Rimae Lme ; term 3
977
Z(i,a) -= 0.5 Lmnef Tmnea Rif ; term 22
978
Z(i,a) -= 0.5 Lmnef Timef Rna; term 23
979
Z(i,a) += lmnef rme tinaf; term 33
980
P(ij) P(ab) [ Z(i,a) * T(j,b) ]
983
void x_Gijab_uhf_2(void) {
984
int h, nirreps, row, col;
986
int I1, I2, I3, I4, J1, J2, J3, J4, A1, A2, A3, A4, B1, B2, B3, B4;
987
int I1sym, I2sym, I3sym, I4sym, J1sym, J2sym, J3sym, J4sym;
988
int A1sym, A2sym, A3sym, A4sym, B1sym, B2sym, B3sym, B4sym;
989
int L_irr, R_irr, G_irr;
990
dpdfile2 L1R2A, L1R2B, T1A, T1B, Z1A, Z1B, I1A, I1B, R1A, R1B;
991
dpdbuf4 G, I, Z, Z2, T, L;
993
L_irr = params.L_irr; R_irr = params.R_irr; G_irr = params.G_irr;
994
nirreps = moinfo.nirreps;
996
/* Z(I,A) += L1R2_OV, term 3 */
997
dpd_file2_init(&L1R2A, EOM_TMP, G_irr, 0, 1, "L1R2_OV");
998
dpd_file2_init(&L1R2B, EOM_TMP, G_irr, 2, 3, "L1R2_ov");
999
dpd_file2_copy(&L1R2A, EOM_TMP1, "ZIA");
1000
dpd_file2_copy(&L1R2B, EOM_TMP1, "Zia");
1001
dpd_file2_close(&L1R2A);
1002
dpd_file2_close(&L1R2B);
1004
dpd_file2_init(&Z1A, EOM_TMP1, G_irr, 0, 1, "ZIA");
1005
dpd_file2_init(&Z1B, EOM_TMP1, G_irr, 2, 3, "Zia");
1007
/* Z(I,A) += 0.5 (lmnef tmnea) rif, term 22 */
1008
dpd_file2_init(&I1A, EOM_TMP, L_irr, 1, 1, "LT2_VV");
1009
dpd_file2_init(&R1A, CC_GR, R_irr, 0, 1, "RIA");
1010
dpd_contract222(&R1A, &I1A, &Z1A, 0, 1, -1.0, 1.0);
1011
dpd_file2_close(&R1A);
1012
dpd_file2_close(&I1A);
1013
dpd_file2_init(&I1B, EOM_TMP, L_irr, 3, 3, "LT2_vv");
1014
dpd_file2_init(&R1B, CC_GR, R_irr, 2, 3, "Ria");
1015
dpd_contract222(&R1B, &I1B, &Z1B, 0, 1, -1.0, 1.0);
1016
dpd_file2_close(&R1B);
1017
dpd_file2_close(&I1B);
1019
/* Z(i,a) -= 0.5 (timef lnmef) rna; term 23 */
1020
dpd_file2_init(&I1A, EOM_TMP, L_irr, 0, 0, "LT2_OO");
1021
dpd_file2_init(&R1A, CC_GR, R_irr, 0, 1, "RIA");
1022
dpd_contract222(&I1A, &R1A, &Z1A, 1, 1, -1.0, 1.0);
1023
dpd_file2_close(&R1A);
1024
dpd_file2_close(&I1A);
1025
dpd_file2_init(&I1B, EOM_TMP, L_irr, 2, 2, "LT2_oo");
1026
dpd_file2_init(&R1B, CC_GR, R_irr, 2, 3, "Ria");
1027
dpd_contract222(&I1B, &R1B, &Z1B, 1, 1, -1.0, 1.0);
1028
dpd_file2_close(&R1B);
1029
dpd_file2_close(&I1B);
1031
/* Z(i,a) += lmnef rme tinaf; term 33 */
1032
if (!params.connect_xi) {
1033
dpd_file2_init(&I1A, EOM_TMP, G_irr, 0, 1, "L2R1_OV");
1034
dpd_file2_init(&I1B, EOM_TMP, G_irr, 2, 3, "L2R1_ov");
1035
dpd_buf4_init(&T, CC_TAMPS, 0, 0, 5, 2, 7, 0, "tIJAB");
1036
dpd_dot24(&I1A, &T, &Z1A, 0, 0, 1.0, 1.0);
1038
dpd_buf4_init(&T, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tIjAb");
1039
dpd_dot24(&I1B, &T, &Z1A, 0, 0, 1.0, 1.0);
1041
dpd_buf4_init(&T, CC_TAMPS, 0, 10, 15, 12, 17, 0, "tijab");
1042
dpd_dot24(&I1B, &T, &Z1B, 0, 0, 1.0, 1.0);
1044
dpd_buf4_init(&T, CC_TAMPS, 0, 23, 29, 23, 29, 0, "tiJaB");
1045
dpd_dot24(&I1A, &T, &Z1B, 0, 0, 1.0, 1.0);
1047
dpd_file2_close(&I1A);
1048
dpd_file2_close(&I1B);
1051
/* open one-electron files for the nasty permutations */
1052
dpd_file2_mat_init(&Z1A); dpd_file2_mat_init(&Z1B);
1053
dpd_file2_mat_rd(&Z1A); dpd_file2_mat_rd(&Z1B);
1055
dpd_file2_init(&T1A, CC_OEI, 0, 0, 1, "tIA");
1056
dpd_file2_init(&T1B, CC_OEI, 0, 2, 3, "tia");
1057
dpd_file2_mat_init(&T1A); dpd_file2_mat_init(&T1B);
1058
dpd_file2_mat_rd(&T1A); dpd_file2_mat_rd(&T1B);
1060
/* + Z(I,A) T(J,B) */
1061
/* - Z(I,B) T(J,A) */
1062
/* + T(I,A) Z(J,B) */
1063
/* - T(I,B) Z(J,A) */
1064
dpd_buf4_init(&G, EOM_TMP0, G_irr, 2, 7, 2, 7, 0, "GIJAB");
1065
for(h=0; h < nirreps; h++) {
1066
dpd_buf4_mat_irrep_init(&G, h);
1067
dpd_buf4_mat_irrep_rd(&G, h);
1068
for(row=0; row < G.params->rowtot[h]; row++) {
1069
i = G.params->roworb[h][row][0];
1070
j = G.params->roworb[h][row][1];
1071
I1 = Z1A.params->rowidx[i]; I1sym = Z1A.params->psym[i];
1072
I2 = I1; I2sym = I1sym;
1073
I3 = T1A.params->rowidx[i]; I3sym = T1A.params->psym[i];
1074
I4 = I3; I4sym = I3sym;
1075
J1 = T1A.params->rowidx[j]; J1sym = T1A.params->psym[j];
1076
J2 = J1; J2sym=J1sym;
1077
J3 = Z1A.params->rowidx[j]; J3sym = Z1A.params->psym[j];
1078
J4 = J3; J4sym=J3sym;
1079
for(col=0; col < G.params->coltot[h]; col++) {
1080
a = G.params->colorb[h][col][0];
1081
b = G.params->colorb[h][col][1];
1082
A1 = Z1A.params->colidx[a]; A1sym = Z1A.params->qsym[a];
1083
A4 = A1; A4sym = A1sym;
1084
A2 = T1A.params->colidx[a]; A2sym = T1A.params->qsym[a];
1085
A3 = A2; A3sym = A2sym;
1086
B1 = T1A.params->colidx[b]; B1sym = T1A.params->qsym[b];
1087
B4 = B1; B4sym = B1sym;
1088
B2 = Z1A.params->colidx[b]; B2sym = Z1A.params->qsym[b];
1089
B3 = B2; B3sym = B2sym;
1090
/* + Z(I,A) T(J,B) */
1091
if ( ((I1sym^A1sym)==G_irr) && (J1sym==B1sym) )
1092
G.matrix[h][row][col] +=
1093
Z1A.matrix[I1sym][I1][A1] * T1A.matrix[J1sym][J1][B1];
1094
/* - Z(I,B) T(J,A) */
1095
if ( ((I2sym^B2sym)==G_irr) && (J2sym==A2sym) )
1096
G.matrix[h][row][col] -=
1097
Z1A.matrix[I2sym][I2][B2] * T1A.matrix[J2sym][J2][A2];
1098
/* + T(I,A) Z(J,B) */
1099
if ( ((J3sym^B3sym)==G_irr) && (I3sym==A3sym) )
1100
G.matrix[h][row][col] +=
1101
Z1A.matrix[J3sym][J3][B3] * T1A.matrix[I3sym][I3][A3];
1102
/* - T(I,B) Z(J,A) */
1103
if ( ((J4sym^A4sym)==G_irr) && (I4sym==B4sym) )
1104
G.matrix[h][row][col] -=
1105
Z1A.matrix[J4sym][J4][A4] * T1A.matrix[I4sym][I4][B4];
1108
dpd_buf4_mat_irrep_wrt(&G, h);
1109
dpd_buf4_mat_irrep_close(&G, h);
1113
dpd_buf4_init(&G, EOM_TMP0, G_irr, 12, 17, 12, 17, 0, "Gijab");
1114
for(h=0; h < nirreps; h++) {
1115
dpd_buf4_mat_irrep_init(&G, h);
1116
dpd_buf4_mat_irrep_rd(&G, h);
1117
for(row=0; row < G.params->rowtot[h]; row++) {
1118
i = G.params->roworb[h][row][0];
1119
j = G.params->roworb[h][row][1];
1120
I1 = Z1B.params->rowidx[i]; I1sym = Z1B.params->psym[i];
1121
I2 = I1; I2sym = I1sym;
1122
I3 = T1B.params->rowidx[i]; I3sym = T1B.params->psym[i];
1123
I4 = I3; I4sym = I3sym;
1124
J1 = T1B.params->rowidx[j]; J1sym = T1B.params->psym[j];
1125
J2 = J1; J2sym=J1sym;
1126
J3 = Z1B.params->rowidx[j]; J3sym = Z1B.params->psym[j];
1127
J4 = J3; J4sym=J3sym;
1128
for(col=0; col < G.params->coltot[h]; col++) {
1129
a = G.params->colorb[h][col][0];
1130
b = G.params->colorb[h][col][1];
1131
A1 = Z1B.params->colidx[a]; A1sym = Z1B.params->qsym[a];
1132
A4 = A1; A4sym = A1sym;
1133
A2 = T1B.params->colidx[a]; A2sym = T1B.params->qsym[a];
1134
A3 = A2; A3sym = A2sym;
1135
B1 = T1B.params->colidx[b]; B1sym = T1B.params->qsym[b];
1136
B4 = B1; B4sym = B1sym;
1137
B2 = Z1B.params->colidx[b]; B2sym = Z1B.params->qsym[b];
1138
B3 = B2; B3sym = B2sym;
1139
/* + Z(i,a) T(j,b) */
1140
if ( ((I1sym^A1sym)==G_irr) && (J1sym==B1sym) )
1141
G.matrix[h][row][col] +=
1142
Z1B.matrix[I1sym][I1][A1] * T1B.matrix[J1sym][J1][B1];
1143
/* - Z(i,b) T(j,a) */
1144
if ( ((I2sym^B2sym)==G_irr) && (J2sym==A2sym) )
1145
G.matrix[h][row][col] -=
1146
Z1B.matrix[I2sym][I2][B2] * T1B.matrix[J2sym][J2][A2];
1147
/* + T(i,a) Z(j,b) */
1148
if ( ((J3sym^B3sym)==G_irr) && (I3sym==A3sym) )
1149
G.matrix[h][row][col] +=
1150
Z1B.matrix[J3sym][J3][B3] * T1B.matrix[I3sym][I3][A3];
1151
/* - T(i,b) Z(j,a) */
1152
if ( ((J4sym^A4sym)==G_irr) && (I4sym==B4sym) )
1153
G.matrix[h][row][col] -=
1154
Z1B.matrix[J4sym][J4][A4] * T1B.matrix[I4sym][I4][B4];
1157
dpd_buf4_mat_irrep_wrt(&G, h);
1158
dpd_buf4_mat_irrep_close(&G, h);
1162
/* + Z(I,A) T(j,b) */
1163
/* + T(I,A) Z(j,b) */
1164
dpd_buf4_init(&G, EOM_TMP0, G_irr, 22, 28, 22, 28, 0, "GIjAb");
1165
for(h=0; h < nirreps; h++) {
1166
dpd_buf4_mat_irrep_init(&G, h);
1167
dpd_buf4_mat_irrep_rd(&G, h);
1168
for(row=0; row < G.params->rowtot[h]; row++) {
1169
i = G.params->roworb[h][row][0];
1170
j = G.params->roworb[h][row][1];
1171
I1 = Z1A.params->rowidx[i]; I1sym = Z1A.params->psym[i];
1172
I2 = T1A.params->rowidx[i]; I2sym = T1A.params->psym[i];
1173
J1 = T1B.params->rowidx[j]; J1sym = T1B.params->psym[j];
1174
J2 = Z1B.params->rowidx[j]; J2sym = Z1B.params->psym[j];
1175
for(col=0; col < G.params->coltot[h]; col++) {
1176
a = G.params->colorb[h][col][0];
1177
b = G.params->colorb[h][col][1];
1178
A1 = Z1A.params->colidx[a]; A1sym = Z1A.params->qsym[a];
1179
A2 = T1A.params->colidx[a]; A2sym = T1A.params->qsym[a];
1180
B1 = T1B.params->colidx[b]; B1sym = T1B.params->qsym[b];
1181
B2 = Z1B.params->colidx[b]; B2sym = Z1B.params->qsym[b];
1182
/* + Z(I,A) T(j,b) */
1183
if ( ((I1sym^A1sym)==G_irr) && (J1sym==B1sym) )
1184
G.matrix[h][row][col] +=
1185
Z1A.matrix[I1sym][I1][A1] * T1B.matrix[J1sym][J1][B1];
1186
/* + T(I,A) Z(j,b) */
1187
if ( ((J2sym^B2sym)==G_irr) && (I2sym==A2sym) )
1188
G.matrix[h][row][col] +=
1189
T1A.matrix[I2sym][I2][A2] * Z1B.matrix[J2sym][J2][B2];
1192
dpd_buf4_mat_irrep_wrt(&G, h);
1193
dpd_buf4_mat_irrep_close(&G, h);
1197
dpd_file2_mat_close(&T1A); dpd_file2_mat_close(&T1B);
1198
dpd_file2_close(&T1A); dpd_file2_close(&T1B);
1200
dpd_file2_mat_close(&Z1A); dpd_file2_mat_close(&Z1B);
1201
dpd_file2_close(&Z1A); dpd_file2_close(&Z1B);
1203
psio_close(EOM_TMP1,0);
1204
psio_open(EOM_TMP1,PSIO_OPEN_NEW);
1210
/* This function computes the following EOM Gijab terms
1211
P(ij) P(ab) [ Z(i,a) * R(j,b) ]
1212
Z(i,a) += Timae Lme, term 18
1213
Z(i,a) -= 0.5 (Lmnef Tmnea) Tif, term 32
1214
Z(i,a) -= 0.5 (Lmnef Tmief) Tna; term 34
1215
Z(i,a) += Lme Tma Tie ; term 19
1218
void x_Gijab_uhf_3(void) {
1219
int h, nirreps, row, col;
1221
int I1, I2, I3, I4, J1, J2, J3, J4, A1, A2, A3, A4, B1, B2, B3, B4;
1222
int I1sym, I2sym, I3sym, I4sym, J1sym, J2sym, J3sym, J4sym;
1223
int A1sym, A2sym, A3sym, A4sym, B1sym, B2sym, B3sym, B4sym;
1224
int L_irr, R_irr, G_irr;
1225
dpdfile2 L1T2A, L1T2B, T1A, T1B, Z1A, Z1B, I1A, I1B, R1A, R1B;
1226
dpdbuf4 G, I, Z, Z2, T, L;
1228
L_irr = params.L_irr; R_irr = params.R_irr; G_irr = params.G_irr;
1229
nirreps = moinfo.nirreps;
1231
/* Z(I,A) += L1T2_OV, term 18 */
1232
dpd_file2_init(&L1T2A, EOM_TMP, L_irr, 0, 1, "L1T2_OV");
1233
dpd_file2_init(&L1T2B, EOM_TMP, L_irr, 2, 3, "L1T2_ov");
1234
dpd_file2_copy(&L1T2A, EOM_TMP1, "ZIA");
1235
dpd_file2_copy(&L1T2B, EOM_TMP1, "Zia");
1236
dpd_file2_close(&L1T2A);
1237
dpd_file2_close(&L1T2B);
1239
dpd_file2_init(&Z1A, EOM_TMP1, L_irr, 0, 1, "ZIA");
1240
dpd_file2_init(&Z1B, EOM_TMP1, L_irr, 2, 3, "Zia");
1242
/* Z(I,A) -= 0.5 Lmnef Tmnea Tif, term 32 */
1243
dpd_file2_init(&I1A, EOM_TMP, L_irr, 1, 1, "LT2_VV");
1244
dpd_file2_init(&T1A, CC_OEI, 0, 0, 1, "tIA");
1245
dpd_contract222(&T1A, &I1A, &Z1A, 0, 1, -1.0, 1.0);
1246
dpd_file2_close(&T1A);
1247
dpd_file2_close(&I1A);
1248
dpd_file2_init(&I1B, EOM_TMP, L_irr, 3, 3, "LT2_vv");
1249
dpd_file2_init(&T1B, CC_OEI, 0, 2, 3, "tia");
1250
dpd_contract222(&T1B, &I1B, &Z1B, 0, 1, -1.0, 1.0);
1251
dpd_file2_close(&T1B);
1252
dpd_file2_close(&I1B);
1254
/* Z(i,a) -= 0.5 (Lmnef Tmief ) Tna; term 34 */
1255
dpd_file2_init(&I1A, EOM_TMP, L_irr, 0, 0, "LT2_OO");
1256
dpd_file2_init(&T1A, CC_OEI, 0, 0, 1, "tIA");
1257
dpd_contract222(&I1A, &T1A, &Z1A, 1, 1, -1.0, 1.0);
1258
dpd_file2_close(&T1A);
1259
dpd_file2_close(&I1A);
1260
dpd_file2_init(&I1B, EOM_TMP, L_irr, 2, 2, "LT2_oo");
1261
dpd_file2_init(&T1B, CC_OEI, 0, 2, 3, "tia");
1262
dpd_contract222(&I1B, &T1B, &Z1B, 1, 1, -1.0, 1.0);
1263
dpd_file2_close(&T1B);
1264
dpd_file2_close(&I1B);
1266
/* Z(i,a) += Lme Tma Tie ; term 19 */
1267
dpd_file2_init(&I1A, EOM_TMP, L_irr, 1, 1, "LT1_VV");
1268
dpd_file2_init(&T1A, CC_OEI, 0, 0, 1, "tIA");
1269
dpd_contract222(&T1A, &I1A, &Z1A, 0, 1, -1.0, 1.0);
1270
dpd_file2_close(&T1A);
1271
dpd_file2_close(&I1A);
1272
dpd_file2_init(&I1B, EOM_TMP, L_irr, 3, 3, "LT1_vv");
1273
dpd_file2_init(&T1B, CC_OEI, 0, 2, 3, "tia");
1274
dpd_contract222(&T1B, &I1B, &Z1B, 0, 1, -1.0, 1.0);
1275
dpd_file2_close(&T1B);
1276
dpd_file2_close(&I1B);
1278
/* open one-electron files for the nasty terms */
1279
dpd_file2_mat_init(&Z1A); dpd_file2_mat_init(&Z1B);
1280
dpd_file2_mat_rd(&Z1A); dpd_file2_mat_rd(&Z1B);
1282
dpd_file2_init(&R1A, CC_GR, R_irr, 0, 1, "RIA");
1283
dpd_file2_init(&R1B, CC_GR, R_irr, 2, 3, "Ria");
1284
dpd_file2_mat_init(&R1A); dpd_file2_mat_init(&R1B);
1285
dpd_file2_mat_rd(&R1A); dpd_file2_mat_rd(&R1B);
1287
/* + Z(I,A) R(J,B) */
1288
/* - Z(I,B) R(J,A) */
1289
/* + R(I,A) Z(J,B) */
1290
/* - R(I,B) Z(J,A) */
1291
dpd_buf4_init(&G, EOM_TMP0, G_irr, 2, 7, 2, 7, 0, "GIJAB");
1292
for(h=0; h < nirreps; h++) {
1293
dpd_buf4_mat_irrep_init(&G, h);
1294
dpd_buf4_mat_irrep_rd(&G, h);
1295
for(row=0; row < G.params->rowtot[h]; row++) {
1296
i = G.params->roworb[h][row][0];
1297
j = G.params->roworb[h][row][1];
1298
I1 = Z1A.params->rowidx[i]; I1sym = Z1A.params->psym[i];
1299
I2 = I1; I2sym = I1sym;
1300
I3 = R1A.params->rowidx[i]; I3sym = R1A.params->psym[i];
1301
I4 = I3; I4sym = I3sym;
1302
J1 = R1A.params->rowidx[j]; J1sym = R1A.params->psym[j];
1303
J2 = J1; J2sym=J1sym;
1304
J3 = Z1A.params->rowidx[j]; J3sym = Z1A.params->psym[j];
1305
J4 = J3; J4sym=J3sym;
1306
for(col=0; col < G.params->coltot[h]; col++) {
1307
a = G.params->colorb[h][col][0];
1308
b = G.params->colorb[h][col][1];
1309
A1 = Z1A.params->colidx[a]; A1sym = Z1A.params->qsym[a];
1310
A4 = A1; A4sym = A1sym;
1311
A2 = R1A.params->colidx[a]; A2sym = R1A.params->qsym[a];
1312
A3 = A2; A3sym = A2sym;
1313
B1 = R1A.params->colidx[b]; B1sym = R1A.params->qsym[b];
1314
B4 = B1; B4sym = B1sym;
1315
B2 = Z1A.params->colidx[b]; B2sym = Z1A.params->qsym[b];
1316
B3 = B2; B3sym = B2sym;
1317
/* + Z(I,A) R(J,B) */
1318
if ( ((I1sym^A1sym)==L_irr) && ((J1sym^B1sym)==R_irr) )
1319
G.matrix[h][row][col] +=
1320
Z1A.matrix[I1sym][I1][A1] * R1A.matrix[J1sym][J1][B1];
1321
/* - Z(I,B) R(J,A) */
1322
if ( ((I2sym^B2sym)==L_irr) && ((J2sym^A2sym)==R_irr) )
1323
G.matrix[h][row][col] -=
1324
Z1A.matrix[I2sym][I2][B2] * R1A.matrix[J2sym][J2][A2];
1325
/* + R(I,A) Z(J,B) */
1326
if ( ((J3sym^B3sym)==L_irr) && ((I3sym^A3sym)==R_irr) )
1327
G.matrix[h][row][col] +=
1328
Z1A.matrix[J3sym][J3][B3] * R1A.matrix[I3sym][I3][A3];
1329
/* - R(I,B) Z(J,A) */
1330
if ( ((J4sym^A4sym)==L_irr) && ((I4sym^B4sym)==R_irr) )
1331
G.matrix[h][row][col] -=
1332
Z1A.matrix[J4sym][J4][A4] * R1A.matrix[I4sym][I4][B4];
1335
dpd_buf4_mat_irrep_wrt(&G, h);
1336
dpd_buf4_mat_irrep_close(&G, h);
1340
dpd_buf4_init(&G, EOM_TMP0, G_irr, 12, 17, 12, 17, 0, "Gijab");
1341
for(h=0; h < nirreps; h++) {
1342
dpd_buf4_mat_irrep_init(&G, h);
1343
dpd_buf4_mat_irrep_rd(&G, h);
1344
for(row=0; row < G.params->rowtot[h]; row++) {
1345
i = G.params->roworb[h][row][0];
1346
j = G.params->roworb[h][row][1];
1347
I1 = Z1B.params->rowidx[i]; I1sym = Z1B.params->psym[i];
1348
I2 = I1; I2sym = I1sym;
1349
I3 = R1B.params->rowidx[i]; I3sym = R1B.params->psym[i];
1350
I4 = I3; I4sym = I3sym;
1351
J1 = R1B.params->rowidx[j]; J1sym = R1B.params->psym[j];
1352
J2 = J1; J2sym=J1sym;
1353
J3 = Z1B.params->rowidx[j]; J3sym = Z1B.params->psym[j];
1354
J4 = J3; J4sym=J3sym;
1355
for(col=0; col < G.params->coltot[h]; col++) {
1356
a = G.params->colorb[h][col][0];
1357
b = G.params->colorb[h][col][1];
1358
A1 = Z1B.params->colidx[a]; A1sym = Z1B.params->qsym[a];
1359
A4 = A1; A4sym = A1sym;
1360
A2 = R1B.params->colidx[a]; A2sym = R1B.params->qsym[a];
1361
A3 = A2; A3sym = A2sym;
1362
B1 = R1B.params->colidx[b]; B1sym = R1B.params->qsym[b];
1363
B4 = B1; B4sym = B1sym;
1364
B2 = Z1B.params->colidx[b]; B2sym = Z1B.params->qsym[b];
1365
B3 = B2; B3sym = B2sym;
1366
/* + Z(i,a) R(j,b) */
1367
if ( ((I1sym^A1sym)==L_irr) && ((J1sym^B1sym)==R_irr ) )
1368
G.matrix[h][row][col] +=
1369
Z1B.matrix[I1sym][I1][A1] * R1B.matrix[J1sym][J1][B1];
1370
/* - Z(i,b) R(j,a) */
1371
if ( ((I2sym^B2sym)==L_irr) && ((J2sym^A2sym)==R_irr ) )
1372
G.matrix[h][row][col] -=
1373
Z1B.matrix[I2sym][I2][B2] * R1B.matrix[J2sym][J2][A2];
1374
/* + R(i,a) Z(j,b) */
1375
if ( ((J3sym^B3sym)==L_irr) && ((I3sym^A3sym)==R_irr ) )
1376
G.matrix[h][row][col] +=
1377
Z1B.matrix[J3sym][J3][B3] * R1B.matrix[I3sym][I3][A3];
1378
/* - R(i,b) Z(j,a) */
1379
if ( ((J4sym^A4sym)==L_irr) && ((I4sym^B4sym)==R_irr ) )
1380
G.matrix[h][row][col] -=
1381
Z1B.matrix[J4sym][J4][A4] * R1B.matrix[I4sym][I4][B4];
1384
dpd_buf4_mat_irrep_wrt(&G, h);
1385
dpd_buf4_mat_irrep_close(&G, h);
1389
/* + Z(I,A) R(j,b) */
1390
/* + R(I,A) Z(j,b) */
1391
dpd_buf4_init(&G, EOM_TMP0, G_irr, 22, 28, 22, 28, 0, "GIjAb");
1392
for(h=0; h < nirreps; h++) {
1393
dpd_buf4_mat_irrep_init(&G, h);
1394
dpd_buf4_mat_irrep_rd(&G, h);
1395
for(row=0; row < G.params->rowtot[h]; row++) {
1396
i = G.params->roworb[h][row][0];
1397
j = G.params->roworb[h][row][1];
1398
I1 = Z1A.params->rowidx[i]; I1sym = Z1A.params->psym[i];
1399
I2 = R1A.params->rowidx[i]; I2sym = R1A.params->psym[i];
1400
J1 = R1B.params->rowidx[j]; J1sym = R1B.params->psym[j];
1401
J2 = Z1B.params->rowidx[j]; J2sym = Z1B.params->psym[j];
1402
for(col=0; col < G.params->coltot[h]; col++) {
1403
a = G.params->colorb[h][col][0];
1404
b = G.params->colorb[h][col][1];
1405
A1 = Z1A.params->colidx[a]; A1sym = Z1A.params->qsym[a];
1406
A2 = R1A.params->colidx[a]; A2sym = R1A.params->qsym[a];
1407
B1 = R1B.params->colidx[b]; B1sym = R1B.params->qsym[b];
1408
B2 = Z1B.params->colidx[b]; B2sym = Z1B.params->qsym[b];
1409
/* + Z(I,A) R(j,b) */
1410
if ( ((I1sym^A1sym)==L_irr) && ((J1sym^B1sym)==R_irr ) )
1411
G.matrix[h][row][col] +=
1412
Z1A.matrix[I1sym][I1][A1] * R1B.matrix[J1sym][J1][B1];
1413
/* + R(I,A) Z(j,b) */
1414
if ( ((J2sym^B2sym)==L_irr) && ((I2sym^A2sym)==R_irr ) )
1415
G.matrix[h][row][col] +=
1416
R1A.matrix[I2sym][I2][A2] * Z1B.matrix[J2sym][J2][B2];
1419
dpd_buf4_mat_irrep_wrt(&G, h);
1420
dpd_buf4_mat_irrep_close(&G, h);
1424
dpd_file2_mat_close(&R1A); dpd_file2_mat_close(&R1B);
1425
dpd_file2_close(&R1A); dpd_file2_close(&R1B);
1427
dpd_file2_mat_close(&Z1A); dpd_file2_mat_close(&Z1B);
1428
dpd_file2_close(&Z1A); dpd_file2_close(&Z1B);
1430
psio_close(EOM_TMP1,0);
1431
psio_open(EOM_TMP1,PSIO_OPEN_NEW);