3
\brief Enter brief description of file here
6
#include <libdpd/dpd.h>
13
namespace psi { namespace ccdensity {
15
void x_Gibja_rohf(void);
16
extern void x_Gibja_uhf(void);
19
if (params.ref == 0 || params.ref == 1)
26
/* x_Gibja(): computes non-R0 parts of Gibja 2pdm
27
really Dajib = Djabi, then * -1 to get Djaib
28
and arranged as G(ia,jb) until final sort
31
void x_Gibja_rohf(void)
33
int h, nirreps, row, col, L_irr, R_irr, G_irr;
34
int i, j, a, b, I, J, A, B, Isym, Jsym, Asym, Bsym;
35
dpdfile2 L1, T1A, T1B, L1A, L1B, R1A, R1B, I1A, I1B;
36
dpdbuf4 I2, L2, R2, T2, Z, Z1, V2, G, GIBJA, Gibja, GIbJa, GiBjA, GIbjA, GiBJa;
41
nirreps = moinfo.nirreps;
43
/* Gajib = lia rjb + limae (rjmbe - rmb tje - rje tmb + rme tjb) */
45
/* term 3 Gibja += L(im,ae) R(jm,be) */
46
dpd_buf4_init(&V2, EOM_TMP, G_irr, 10, 10, 10, 10, 0, "R2L2_OVOV");
47
dpd_buf4_sort(&V2, EOM_TMP0, rspq, 10, 10, "GIAJB");
49
dpd_buf4_init(&V2, EOM_TMP, G_irr, 10, 10, 10, 10, 0, "R2L2_ovov");
50
dpd_buf4_sort(&V2, EOM_TMP0, rspq, 10, 10, "Giajb");
52
dpd_buf4_init(&V2, EOM_TMP, G_irr, 10, 10, 10, 10, 0, "R2L2_OvOv");
53
dpd_buf4_sort(&V2, EOM_TMP0, rspq, 10, 10, "GIaJb");
55
dpd_buf4_init(&V2, EOM_TMP, G_irr, 10, 10, 10, 10, 0, "R2L2_oVoV");
56
dpd_buf4_sort(&V2, EOM_TMP0, rspq, 10, 10, "GiAjB");
58
dpd_buf4_init(&V2, EOM_TMP, G_irr, 10, 10, 10, 10, 0, "R2L2_ovOV");
59
dpd_buf4_sort(&V2, EOM_TMP0, rspq, 10, 10, "GIAjb");
61
dpd_buf4_init(&V2, EOM_TMP, G_irr, 10, 10, 10, 10, 0, "R2L2_OVov");
62
dpd_buf4_sort(&V2, EOM_TMP0, rspq, 10, 10, "GiaJB");
65
/* term 4, G(IA,JB) <-- - L(IM,AE) T(J,E) R(M,B) */
66
dpd_buf4_init(&Z, EOM_TMP1, L_irr, 0, 11, 0, 11, 0, "Z(IM,AJ)");
67
dpd_buf4_init(&L2, CC_GL, L_irr, 0, 5, 2, 7, 0, "LIJAB");
68
dpd_file2_init(&T1A, CC_OEI, 0, 0, 1, "tIA");
69
dpd_contract424(&L2, &T1A, &Z, 3, 1, 0, 1.0, 0.0);
70
dpd_file2_close(&T1A);
72
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 11, 10, 11, 0, "Z(IB,AJ)");
73
dpd_file2_init(&R1A, CC_GR, R_irr, 0, 1, "RIA");
74
dpd_contract424(&Z, &R1A, &Z1, 1, 0, 1, 1.0, 0.0);
75
dpd_file2_close(&R1A);
77
dpd_buf4_sort(&Z1, EOM_TMP1, prqs, 10, 11, "Z(IA,BJ)");
79
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 11, 10, 11, 0, "Z(IA,BJ)");
80
dpd_buf4_sort(&Z1, EOM_TMP1, pqsr, 10, 10, "Z(IA,JB)");
82
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "Z(IA,JB)");
83
dpd_buf4_init(&G, EOM_TMP0, G_irr, 10, 10, 10, 10, 0, "GIAJB");
84
dpd_buf4_axpy(&Z1, &G, -1.0);
88
/* term 4, G(ia,jb) <-- - L(im,ae) T(j,e) R(m,b) */
89
dpd_buf4_init(&Z, EOM_TMP1, L_irr, 0, 11, 0, 11, 0, "Z(im,aj)");
90
dpd_buf4_init(&L2, CC_GL, L_irr, 0, 5, 2, 7, 0, "Lijab");
91
dpd_file2_init(&T1B, CC_OEI, 0, 0, 1, "tia");
92
dpd_contract424(&L2, &T1B, &Z, 3, 1, 0, 1.0, 0.0);
93
dpd_file2_close(&T1B);
95
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 11, 10, 11, 0, "Z(ib,aj)");
96
dpd_file2_init(&R1B, CC_GR, R_irr, 0, 1, "Ria");
97
dpd_contract424(&Z, &R1B, &Z1, 1, 0, 1, 1.0, 0.0);
98
dpd_file2_close(&R1B);
100
dpd_buf4_sort(&Z1, EOM_TMP1, prqs, 10, 11, "Z(ia,bj)");
102
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 11, 10, 11, 0, "Z(ia,bj)");
103
dpd_buf4_sort(&Z1, EOM_TMP1, pqsr, 10, 10, "Z(ia,jb)");
105
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "Z(ia,jb)");
106
dpd_buf4_init(&G, EOM_TMP0, G_irr, 10, 10, 10, 10, 0, "Giajb");
107
dpd_buf4_axpy(&Z1, &G, -1.0);
111
/* term 4, G(Ia,Jb) <-- - L(Im,aE) T(J,E) R(m,b) */
112
dpd_buf4_init(&Z, EOM_TMP1, L_irr, 0, 11, 0, 11, 0, "Z(Im,aJ)");
113
dpd_buf4_init(&L2, CC_GL, L_irr, 0, 5, 0, 5, 0, "LIjaB");
114
dpd_file2_init(&T1A, CC_OEI, 0, 0, 1, "tIA");
115
dpd_contract424(&L2, &T1A, &Z, 3, 1, 0, 1.0, 0.0);
116
dpd_file2_close(&T1A);
118
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 11, 10, 11, 0, "Z(Ib,aJ)");
119
dpd_file2_init(&R1B, CC_GR, R_irr, 0, 1, "Ria");
120
dpd_contract424(&Z, &R1B, &Z1, 1, 0, 1, 1.0, 0.0);
121
dpd_file2_close(&R1B);
123
dpd_buf4_sort(&Z1, EOM_TMP1, prqs, 10, 11, "Z(Ia,bJ)");
125
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 11, 10, 11, 0, "Z(Ia,bJ)");
126
dpd_buf4_sort(&Z1, EOM_TMP1, pqsr, 10, 10, "Z(Ia,Jb)");
128
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "Z(Ia,Jb)");
129
dpd_buf4_init(&G, EOM_TMP0, G_irr, 10, 10, 10, 10, 0, "GIaJb");
130
dpd_buf4_axpy(&Z1, &G, 1.0);
134
/* term 4, G(iA,jB) <-- - L(iM,Ae) T(j,e) R(M,B) */
135
dpd_buf4_init(&Z, EOM_TMP1, L_irr, 0, 11, 0, 11, 0, "Z(iM,Aj)");
136
dpd_buf4_init(&L2, CC_GL, L_irr, 0, 5, 0, 5, 0, "LiJAb");
137
dpd_file2_init(&T1A, CC_OEI, 0, 0, 1, "tia");
138
dpd_contract424(&L2, &T1A, &Z, 3, 1, 0, 1.0, 0.0);
139
dpd_file2_close(&T1A);
141
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 11, 10, 11, 0, "Z(iB,Aj)");
142
dpd_file2_init(&R1A, CC_GR, R_irr, 0, 1, "RIA");
143
dpd_contract424(&Z, &R1A, &Z1, 1, 0, 1, 1.0, 0.0);
144
dpd_file2_close(&R1A);
146
dpd_buf4_sort(&Z1, EOM_TMP1, prqs, 10, 11, "Z(iA,Bj)");
148
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 11, 10, 11, 0, "Z(iA,Bj)");
149
dpd_buf4_sort(&Z1, EOM_TMP1, pqsr, 10, 10, "Z(iA,jB)");
151
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "Z(iA,jB)");
152
dpd_buf4_init(&G, EOM_TMP0, G_irr, 10, 10, 10, 10, 0, "GiAjB");
153
dpd_buf4_axpy(&Z1, &G, 1.0);
157
/* term 4, G(IA,jb) <-- - L2(Im,Ae) T(j,e) R(m,b) */
158
dpd_buf4_init(&Z, EOM_TMP1, L_irr, 0, 11, 0, 11, 0, "Z(Im,Aj)");
159
dpd_buf4_init(&L2, CC_GL, L_irr, 0, 5, 0, 5, 0, "LIjAb");
160
dpd_file2_init(&T1B, CC_OEI, 0, 0, 1, "tia");
161
dpd_contract424(&L2, &T1B, &Z, 3, 1, 0, 1.0, 0.0);
163
dpd_file2_close(&T1B);
164
dpd_file2_init(&R1B, CC_GR, R_irr, 0, 1, "Ria");
165
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 11, 10, 11, 0, "Z(Ib,Aj)");
166
dpd_contract424(&Z, &R1B, &Z1, 1, 0, 1, 1.0, 0.0);
168
dpd_file2_close(&R1B);
169
dpd_buf4_sort(&Z1, EOM_TMP1, prqs, 10, 11, "Z(IA,bj)");
171
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 11, 10, 11, 0, "Z(IA,bj)");
172
dpd_buf4_sort(&Z1, EOM_TMP1, pqsr, 10, 10, "Z(IA,jb)");
174
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "Z(IA,jb)");
175
dpd_buf4_init(&G, EOM_TMP0, 0, 10, 10, 10, 10, 0, "GIAjb");
176
dpd_buf4_axpy(&Z1, &G, -1.0);
180
/* term 4, G(ia,JB) <-- - L(iM,aE) T(J,E) R(M,B) */
181
dpd_buf4_init(&Z, EOM_TMP1, L_irr, 0, 11, 0, 11, 0, "Z(iM,aJ)");
182
dpd_buf4_init(&L2, CC_GL, L_irr, 0, 5, 0, 5, 0, "LiJaB");
183
dpd_file2_init(&T1A, CC_OEI, 0, 0, 1, "tIA");
184
dpd_contract424(&L2, &T1A, &Z, 3, 1, 0, 1.0, 0.0);
186
dpd_file2_close(&T1A);
187
dpd_file2_init(&R1A, CC_GR, R_irr, 0, 1, "RIA");
188
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 11, 10, 11, 0, "Z(iB,aJ)");
189
dpd_contract424(&Z, &R1A, &Z1, 1, 0, 1, 1.0, 0.0);
191
dpd_file2_close(&R1A);
192
dpd_buf4_sort(&Z1, EOM_TMP1, prqs, 10, 11, "Z(ia,BJ)");
194
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 11, 10, 11, 0, "Z(ia,BJ)");
195
dpd_buf4_sort(&Z1, EOM_TMP1, pqsr, 10, 10, "Z(ia,JB)");
197
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "Z(ia,JB)");
198
dpd_buf4_init(&G, EOM_TMP0, G_irr, 10, 10, 10, 10, 0, "GiaJB");
199
dpd_buf4_axpy(&Z1, &G, -1.0);
203
psio_close(EOM_TMP1, 0);
204
psio_open(EOM_TMP1,PSIO_OPEN_NEW);
206
/* term 5, G(IA,JB) <-- - (L(IM,AE)*R(J,E)) * T(M,B) */
207
dpd_buf4_init(&Z, EOM_TMP, G_irr, 0, 11, 2, 11, 0, "L2R1_OOVO");
208
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 11, 10, 11, 0, "Z(IB,AJ)");
209
dpd_file2_init(&T1A, CC_OEI, 0, 0, 1, "tIA");
210
dpd_contract424(&Z, &T1A, &Z1, 1, 0, 1, 1.0, 0.0);
211
dpd_file2_close(&T1A);
213
dpd_buf4_sort(&Z1, EOM_TMP1, prqs, 10, 11, "Z(IA,BJ)");
215
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 11, 10, 11, 0, "Z(IA,BJ)");
216
dpd_buf4_sort(&Z1, EOM_TMP1, pqsr, 10, 10, "Z(IA,JB)");
218
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "Z(IA,JB)");
219
dpd_buf4_init(&G, EOM_TMP0, G_irr, 10, 10, 10, 10, 0, "GIAJB");
220
dpd_buf4_axpy(&Z1, &G, -1.0);
224
/* term 5, G(ia,jb) <-- - (L(im,ae)*R(j,e)) * T(m,b) */
225
dpd_buf4_init(&Z, EOM_TMP, G_irr, 0, 11, 2, 11, 0, "L2R1_oovo");
226
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 11, 10, 11, 0, "Z(ib,aj)");
227
dpd_file2_init(&T1B, CC_OEI, 0, 0, 1, "tia");
228
dpd_contract424(&Z, &T1B, &Z1, 1, 0, 1, 1.0, 0.0);
229
dpd_file2_close(&T1B);
231
dpd_buf4_sort(&Z1, EOM_TMP1, prqs, 10, 11, "Z(ia,bj)");
233
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 11, 10, 11, 0, "Z(ia,bj)");
234
dpd_buf4_sort(&Z1, EOM_TMP1, pqsr, 10, 10, "Z(ia,jb)");
236
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "Z(ia,jb)");
237
dpd_buf4_init(&G, EOM_TMP0, G_irr, 10, 10, 10, 10, 0, "Giajb");
238
dpd_buf4_axpy(&Z1, &G, -1.0);
242
/* term 5, G(Ia,Jb) <-- - (L2(Im,Ea)*R(J,E)) * T(m,b) */
243
dpd_buf4_init(&Z, EOM_TMP, G_irr, 0, 11, 0, 11, 0, "L2R1_OovO");
244
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 11, 10, 11, 0, "Z(Ib,aJ)");
245
dpd_file2_init(&T1B, CC_OEI, 0, 0, 1, "tia");
246
dpd_contract424(&Z, &T1B, &Z1, 1, 0, 1, 1.0, 0.0);
247
dpd_file2_close(&T1B);
249
dpd_buf4_sort(&Z1, EOM_TMP1, prqs, 10, 11, "Z(Ia,bJ)");
251
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 11, 10, 11, 0, "Z(Ia,bJ)");
252
dpd_buf4_sort(&Z1, EOM_TMP1, pqsr, 10, 10, "Z(Ia,Jb)");
254
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "Z(Ia,Jb)");
255
dpd_buf4_init(&G, EOM_TMP0, G_irr, 10, 10, 10, 10, 0, "GIaJb");
256
dpd_buf4_axpy(&Z1, &G, 1.0);
260
/* term 5, G(iA,jB) <-- - (L2(iM,eA)*R(j,e)) * T(M,B) */
261
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 0, 11, 0, 11, 0, "Z(iM,Aj)");
262
dpd_buf4_init(&L2, CC_GL, L_irr, 0, 5, 0, 5, 0, "LiJAb");
263
dpd_file2_init(&R1A, CC_GR, R_irr, 0, 1, "Ria");
264
dpd_contract424(&L2, &R1A, &Z, 3, 1, 0, 1.0, 0.0);
265
dpd_file2_close(&R1A);
267
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 11, 10, 11, 0, "Z(iB,Aj)");
268
dpd_file2_init(&T1B, CC_OEI, 0, 0, 1, "tIA");
269
dpd_contract424(&Z, &T1B, &Z1, 1, 0, 1, 1.0, 0.0);
270
dpd_file2_close(&T1B);
272
dpd_buf4_sort(&Z1, EOM_TMP1, prqs, 10, 11, "Z(iA,Bj)");
274
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 11, 10, 11, 0, "Z(iA,Bj)");
275
dpd_buf4_sort(&Z1, EOM_TMP1, pqsr, 10, 10, "Z(iA,jB)");
277
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "Z(iA,jB)");
278
dpd_buf4_init(&G, EOM_TMP0, G_irr, 10, 10, 10, 10, 0, "GiAjB");
279
dpd_buf4_axpy(&Z1, &G, 1.0);
283
/* term 5, G(IA,jb) <-- - L2(Im,Ae) R(j,e) T(m,b) */
284
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 0, 11, 0, 11, 0, "Z(Im,Aj)");
285
dpd_buf4_init(&L2, CC_GL, L_irr, 0, 5, 0, 5, 0, "LIjAb");
286
dpd_file2_init(&R1B, CC_GR, R_irr, 0, 1, "Ria");
287
dpd_contract424(&L2, &R1B, &Z, 3, 1, 0, 1.0, 0.0);
289
dpd_file2_close(&R1B);
290
dpd_file2_init(&T1B, CC_OEI, 0, 0, 1, "tia");
291
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 11, 10, 11, 0, "Z(Ib,Aj)");
292
dpd_contract424(&Z, &T1B, &Z1, 1, 0, 1, 1.0, 0.0);
294
dpd_file2_close(&T1B);
295
dpd_buf4_sort(&Z1, EOM_TMP1, prqs, 10, 11, "Z(IA,bj)");
297
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 11, 10, 11, 0, "Z(IA,bj)");
298
dpd_buf4_sort(&Z1, EOM_TMP1, pqsr, 10, 10, "Z(IA,jb)");
300
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "Z(IA,jb)");
301
dpd_buf4_init(&G, EOM_TMP0, 0, 10, 10, 10, 10, 0, "GIAjb");
302
dpd_buf4_axpy(&Z1, &G, -1.0);
306
/* term 5, G(ia,JB) <-- - L(iM,aE) R(J,E) T(M,B) */
307
dpd_buf4_init(&Z, EOM_TMP1, G_irr, 0, 11, 0, 11, 0, "Z(iM,aJ)");
308
dpd_buf4_init(&L2, CC_GL, L_irr, 0, 5, 0, 5, 0, "LiJaB");
309
dpd_file2_init(&R1A, CC_GR, R_irr, 0, 1, "RIA");
310
dpd_contract424(&L2, &R1A, &Z, 3, 1, 0, 1.0, 0.0);
312
dpd_file2_close(&R1A);
313
dpd_file2_init(&T1A, CC_OEI, 0, 0, 1, "tIA");
314
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 11, 10, 11, 0, "Z(iB,aJ)");
315
dpd_contract424(&Z, &T1A, &Z1, 1, 0, 1, 1.0, 0.0);
317
dpd_file2_close(&T1A);
318
dpd_buf4_sort(&Z1, EOM_TMP1, prqs, 10, 11, "Z(ia,BJ)");
320
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 11, 10, 11, 0, "Z(ia,BJ)");
321
dpd_buf4_sort(&Z1, EOM_TMP1, pqsr, 10, 10, "Z(ia,JB)");
323
dpd_buf4_init(&Z1, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "Z(ia,JB)");
324
dpd_buf4_init(&G, EOM_TMP0, G_irr, 10, 10, 10, 10, 0, "GiaJB");
325
dpd_buf4_axpy(&Z1, &G, -1.0);
329
psio_close(EOM_TMP1, 0);
330
psio_open(EOM_TMP1,PSIO_OPEN_NEW);
332
dpd_file2_init(&R1A, CC_GR, R_irr, 0, 1, "RIA");
333
dpd_file2_mat_init(&R1A);
334
dpd_file2_mat_rd(&R1A);
335
dpd_file2_init(&R1B, CC_GR, R_irr, 0, 1, "Ria");
336
dpd_file2_mat_init(&R1B);
337
dpd_file2_mat_rd(&R1B);
338
dpd_file2_init(&L1A, CC_GL, L_irr, 0, 1, "LIA");
339
dpd_file2_mat_init(&L1A);
340
dpd_file2_mat_rd(&L1A);
341
dpd_file2_init(&L1B, CC_GL, L_irr, 0, 1, "Lia");
342
dpd_file2_mat_init(&L1B);
343
dpd_file2_mat_rd(&L1B);
344
if (!params.connect_xi) {
345
dpd_file2_init(&I1A, EOM_TMP, G_irr, 0, 1, "L2R1_OV");
346
dpd_file2_mat_init(&I1A);
347
dpd_file2_mat_rd(&I1A);
348
dpd_file2_init(&I1B, EOM_TMP, G_irr, 0, 1, "L2R1_ov");
349
dpd_file2_mat_init(&I1B);
350
dpd_file2_mat_rd(&I1B);
352
dpd_file2_init(&T1A, CC_OEI, 0, 0, 1, "tIA");
353
dpd_file2_mat_init(&T1A);
354
dpd_file2_mat_rd(&T1A);
355
dpd_file2_init(&T1B, CC_OEI, 0, 0, 1, "tia");
356
dpd_file2_mat_init(&T1B);
357
dpd_file2_mat_rd(&T1B);
359
/* term 1, G(IA,JB) <-- + L(I,A) R(J,B) */
360
dpd_buf4_init(&G, EOM_TMP0, G_irr, 10, 10, 10, 10, 0, "GIAJB");
361
for(h=0; h < nirreps; h++) {
362
dpd_buf4_mat_irrep_init(&G, h);
363
dpd_buf4_mat_irrep_rd(&G, h);
364
for(row=0; row < G.params->rowtot[h]; row++) {
365
i = G.params->roworb[h][row][0];
366
I = L1A.params->rowidx[i]; Isym = L1A.params->psym[i];
367
a = G.params->roworb[h][row][1];
368
A = L1A.params->colidx[a]; Asym = L1A.params->qsym[a];
369
for(col=0; col < G.params->coltot[h^G_irr]; col++) {
370
j = G.params->colorb[h^G_irr][col][0];
371
J = R1A.params->rowidx[j]; Jsym = R1A.params->psym[j];
372
b = G.params->colorb[h^G_irr][col][1];
373
B = R1A.params->colidx[b]; Bsym = R1A.params->qsym[b];
374
if( ((Isym^Asym)==L_irr) && ((Jsym^Bsym)==R_irr))
375
G.matrix[h][row][col] += L1A.matrix[Isym][I][A] * R1A.matrix[Jsym][J][B];
378
dpd_buf4_mat_irrep_wrt(&G, h);
379
dpd_buf4_mat_irrep_close(&G, h);
381
/* term 2, G(IA,JB) <-- + (L(IM,AE) R(M,E)) T(J,B) = L2R1_OV(I,A) * T(J,B) */
382
if (!params.connect_xi) {
383
for(h=0; h < nirreps; h++) {
384
dpd_buf4_mat_irrep_init(&G, h);
385
dpd_buf4_mat_irrep_rd(&G, h);
386
for(row=0; row < G.params->rowtot[h]; row++) {
387
i = G.params->roworb[h][row][0];
388
I = I1A.params->rowidx[i]; Isym = I1A.params->psym[i];
389
a = G.params->roworb[h][row][1];
390
A = I1A.params->colidx[a]; Asym = I1A.params->qsym[a];
391
for(col=0; col < G.params->coltot[h^G_irr]; col++) {
392
j = G.params->colorb[h^G_irr][col][0];
393
J = T1A.params->rowidx[j]; Jsym = T1A.params->psym[j];
394
b = G.params->colorb[h^G_irr][col][1];
395
B = T1A.params->colidx[b]; Bsym = T1A.params->qsym[b];
396
if( ((Isym^Asym)==G_irr) && (Jsym==Bsym) )
397
G.matrix[h][row][col] += I1A.matrix[Isym][I][A] * T1A.matrix[Jsym][J][B];
400
dpd_buf4_mat_irrep_wrt(&G, h);
401
dpd_buf4_mat_irrep_close(&G, h);
404
dpd_buf4_scm(&G, -1.0);
407
/* term 1, G(ia,jb) <-- + L(i,a) R(j,b) */
408
dpd_buf4_init(&G, EOM_TMP0, G_irr, 10, 10, 10, 10, 0, "Giajb");
409
for(h=0; h < nirreps; h++) {
410
dpd_buf4_mat_irrep_init(&G, h);
411
dpd_buf4_mat_irrep_rd(&G, h);
412
for(row=0; row < G.params->rowtot[h]; row++) {
413
i = G.params->roworb[h][row][0];
414
I = L1B.params->rowidx[i]; Isym = L1B.params->psym[i];
415
a = G.params->roworb[h][row][1];
416
A = L1B.params->colidx[a]; Asym = L1B.params->qsym[a];
417
for(col=0; col < G.params->coltot[h^G_irr]; col++) {
418
j = G.params->colorb[h^G_irr][col][0];
419
J = R1B.params->rowidx[j]; Jsym = R1B.params->psym[j];
420
b = G.params->colorb[h^G_irr][col][1];
421
B = R1B.params->colidx[b]; Bsym = R1B.params->qsym[b];
422
if( ((Isym^Asym)==L_irr) && ((Jsym^Bsym)==R_irr))
423
G.matrix[h][row][col] += L1B.matrix[Isym][I][A] * R1B.matrix[Jsym][J][B];
426
dpd_buf4_mat_irrep_wrt(&G, h);
427
dpd_buf4_mat_irrep_close(&G, h);
429
/* term 2, G(ia,jb) <-- + (L(im,ae) R(m,e))*T(j,b) = L2R1_ov(i,a) * T(j,b) */
430
if (!params.connect_xi) {
431
for(h=0; h < nirreps; h++) {
432
dpd_buf4_mat_irrep_init(&G, h);
433
dpd_buf4_mat_irrep_rd(&G, h);
434
for(row=0; row < G.params->rowtot[h]; row++) {
435
i = G.params->roworb[h][row][0];
436
I = I1B.params->rowidx[i]; Isym = I1B.params->psym[i];
437
a = G.params->roworb[h][row][1];
438
A = I1B.params->colidx[a]; Asym = I1B.params->qsym[a];
439
for(col=0; col < G.params->coltot[h^G_irr]; col++) {
440
j = G.params->colorb[h^G_irr][col][0];
441
J = T1B.params->rowidx[j]; Jsym = T1B.params->psym[j];
442
b = G.params->colorb[h^G_irr][col][1];
443
B = T1B.params->colidx[b]; Bsym = T1B.params->qsym[b];
444
if( ((Isym^Asym)==G_irr) && (Jsym==Bsym))
445
G.matrix[h][row][col] += I1B.matrix[Isym][I][A] * T1B.matrix[Jsym][J][B];
448
dpd_buf4_mat_irrep_wrt(&G, h);
449
dpd_buf4_mat_irrep_close(&G, h);
452
dpd_buf4_scm(&G, -1.0);
455
/* term 1, G(IA,jb) <-- L(I,A) R(j,b) */
456
dpd_buf4_init(&G, EOM_TMP0, G_irr, 10, 10, 10, 10, 0, "GIAjb");
457
for(h=0; h < nirreps; h++) {
458
dpd_buf4_mat_irrep_init(&G, h);
459
dpd_buf4_mat_irrep_rd(&G, h);
460
for(row=0; row < G.params->rowtot[h]; row++) {
461
i = G.params->roworb[h][row][0];
462
I = L1A.params->rowidx[i]; Isym = L1A.params->psym[i];
463
a = G.params->roworb[h][row][1];
464
A = L1A.params->colidx[a]; Asym = L1A.params->qsym[a];
465
for(col=0; col < G.params->coltot[h^G_irr]; col++) {
466
j = G.params->colorb[h^G_irr][col][0];
467
J = R1B.params->rowidx[j]; Jsym = R1B.params->psym[j];
468
b = G.params->colorb[h^G_irr][col][1];
469
B = R1B.params->colidx[b]; Bsym = R1B.params->qsym[b];
470
if( ((Isym^Asym)==L_irr) && ((Jsym^Bsym)==R_irr) )
471
G.matrix[h][row][col] += L1A.matrix[Isym][I][A] * R1B.matrix[Jsym][J][B];
474
dpd_buf4_mat_irrep_wrt(&G, h);
475
dpd_buf4_mat_irrep_close(&G, h);
477
/* term 2, G(IA,jb) <-- L2R1_OV(I,A) * T(j,b) */
478
if (!params.connect_xi) {
479
for(h=0; h < nirreps; h++) {
480
dpd_buf4_mat_irrep_init(&G, h);
481
dpd_buf4_mat_irrep_rd(&G, h);
482
for(row=0; row < G.params->rowtot[h]; row++) {
483
i = G.params->roworb[h][row][0];
484
I = I1A.params->rowidx[i]; Isym = I1A.params->psym[i];
485
a = G.params->roworb[h][row][1];
486
A = I1A.params->colidx[a]; Asym = I1A.params->qsym[a];
487
for(col=0; col < G.params->coltot[h^G_irr]; col++) {
488
j = G.params->colorb[h^G_irr][col][0];
489
J = T1B.params->rowidx[j]; Jsym = T1B.params->psym[j];
490
b = G.params->colorb[h^G_irr][col][1];
491
B = T1B.params->colidx[b]; Bsym = T1B.params->qsym[b];
492
if( ((Isym^Asym)==G_irr) && (Jsym==Bsym))
493
G.matrix[h][row][col] += I1A.matrix[Isym][I][A] * T1B.matrix[Jsym][J][B];
496
dpd_buf4_mat_irrep_wrt(&G, h);
497
dpd_buf4_mat_irrep_close(&G, h);
500
dpd_buf4_scm(&G, -1.0);
503
/* term 1, G(ia,JB) <-- L(i,a) R(J,B) */
504
dpd_buf4_init(&G, EOM_TMP0, G_irr, 10, 10, 10, 10, 0, "GiaJB");
505
for(h=0; h < nirreps; h++) {
506
dpd_buf4_mat_irrep_init(&G, h);
507
dpd_buf4_mat_irrep_rd(&G, h);
508
for(row=0; row < G.params->rowtot[h]; row++) {
509
i = G.params->roworb[h][row][0];
510
I = L1B.params->rowidx[i]; Isym = L1B.params->psym[i];
511
a = G.params->roworb[h][row][1];
512
A = L1B.params->colidx[a]; Asym = L1B.params->qsym[a];
513
for(col=0; col < G.params->coltot[h^G_irr]; col++) {
514
j = G.params->colorb[h^G_irr][col][0];
515
J = R1A.params->rowidx[j]; Jsym = R1A.params->psym[j];
516
b = G.params->colorb[h^G_irr][col][1];
517
B = R1A.params->colidx[b]; Bsym = R1A.params->qsym[b];
518
if( ((Isym^Asym)==L_irr) && ((Jsym^Bsym)==R_irr))
519
G.matrix[h][row][col] += L1B.matrix[Isym][I][A] * R1A.matrix[Jsym][J][B];
522
dpd_buf4_mat_irrep_wrt(&G, h);
523
dpd_buf4_mat_irrep_close(&G, h);
525
/* term 2, G(ia,JB) <-- L2R1_ov(i,a) T(J,B) */
526
if (!params.connect_xi) {
527
for(h=0; h < nirreps; h++) {
528
dpd_buf4_mat_irrep_init(&G, h);
529
dpd_buf4_mat_irrep_rd(&G, h);
530
for(row=0; row < G.params->rowtot[h]; row++) {
531
i = G.params->roworb[h][row][0];
532
I = I1B.params->rowidx[i]; Isym = I1B.params->psym[i];
533
a = G.params->roworb[h][row][1];
534
A = I1B.params->colidx[a]; Asym = I1B.params->qsym[a];
535
for(col=0; col < G.params->coltot[h^G_irr]; col++) {
536
j = G.params->colorb[h^G_irr][col][0];
537
J = T1A.params->rowidx[j]; Jsym = T1A.params->psym[j];
538
b = G.params->colorb[h^G_irr][col][1];
539
B = T1A.params->colidx[b]; Bsym = T1A.params->qsym[b];
540
if( ((Isym^Asym)==G_irr) && (Jsym==Bsym))
541
G.matrix[h][row][col] += I1B.matrix[Isym][I][A] * T1A.matrix[Jsym][J][B];
544
dpd_buf4_mat_irrep_wrt(&G, h);
545
dpd_buf4_mat_irrep_close(&G, h);
548
dpd_buf4_scm(&G, -1.0);
551
dpd_file2_mat_close(&R1A);
552
dpd_file2_close(&R1A);
553
dpd_file2_mat_close(&R1B);
554
dpd_file2_close(&R1B);
555
dpd_file2_mat_close(&L1A);
556
dpd_file2_close(&L1A);
557
dpd_file2_mat_close(&L1B);
558
dpd_file2_close(&L1B);
559
if (!params.connect_xi) {
560
dpd_file2_mat_close(&I1A);
561
dpd_file2_close(&I1A);
562
dpd_file2_mat_close(&I1B);
563
dpd_file2_close(&I1B);
565
dpd_file2_mat_close(&T1A);
566
dpd_file2_close(&T1A);
567
dpd_file2_mat_close(&T1B);
568
dpd_file2_close(&T1B);
570
/* Sort all spin cases to correct ordering (ib,ja) */
571
dpd_buf4_init(&G, EOM_TMP0, G_irr, 10, 10, 10, 10, 0, "GIAJB");
572
dpd_buf4_sort(&G, EOM_TMP0, psrq, 10, 10, "GIBJA");
574
dpd_buf4_init(&G, EOM_TMP0, G_irr, 10, 10, 10, 10, 0, "Giajb");
575
dpd_buf4_sort(&G, EOM_TMP0, psrq, 10, 10, "Gibja");
577
dpd_buf4_init(&G, EOM_TMP0, G_irr, 10, 10, 10, 10, 0, "GIaJb");
578
dpd_buf4_scm(&G,-1.0);
579
dpd_buf4_sort(&G, EOM_TMP0, psrq, 10, 10, "GIbJa");
581
dpd_buf4_init(&G, EOM_TMP0, G_irr, 10, 10, 10, 10, 0, "GiAjB");
582
dpd_buf4_scm(&G,-1.0);
583
dpd_buf4_sort(&G, EOM_TMP0, psrq, 10, 10, "GiBjA");
585
dpd_buf4_init(&G, EOM_TMP0, G_irr, 10, 10, 10, 10, 0, "GIAjb");
586
dpd_buf4_sort(&G, EOM_TMP0, psrq, 10, 10, "GIbjA");
588
dpd_buf4_init(&G, EOM_TMP0, G_irr, 10, 10, 10, 10, 0, "GiaJB");
589
dpd_buf4_sort(&G, EOM_TMP0, psrq, 10, 10, "GiBJa");
592
/* Add to ground state terms in CC_GAMMA */
593
dpd_buf4_init(&GIBJA, EOM_TMP0, G_irr, 10, 10, 10, 10, 0, "GIBJA");
594
dpd_buf4_init(&G, CC_GAMMA, G_irr, 10, 10, 10, 10, 0, "GIBJA");
595
dpd_buf4_axpy(&GIBJA, &G, 1.0);
597
dpd_buf4_close(&GIBJA);
598
dpd_buf4_init(&Gibja, EOM_TMP0, G_irr, 10, 10, 10, 10, 0, "Gibja");
599
dpd_buf4_init(&G, CC_GAMMA, G_irr, 10, 10, 10, 10, 0, "Gibja");
600
dpd_buf4_axpy(&Gibja, &G, 1.0);
602
dpd_buf4_close(&Gibja);
603
dpd_buf4_init(&GIbJa, EOM_TMP0, G_irr, 10, 10, 10, 10, 0, "GIbJa");
604
dpd_buf4_init(&G, CC_GAMMA, G_irr, 10, 10, 10, 10, 0, "GIbJa");
605
dpd_buf4_axpy(&GIbJa, &G, 1.0);
607
dpd_buf4_close(&GIbJa);
608
dpd_buf4_init(&GiBjA, EOM_TMP0, G_irr, 10, 10, 10, 10, 0, "GiBjA");
609
dpd_buf4_init(&G, CC_GAMMA, G_irr, 10, 10, 10, 10, 0, "GiBjA");
610
dpd_buf4_axpy(&GiBjA, &G, 1.0);
612
dpd_buf4_close(&GiBjA);
613
dpd_buf4_init(&GIbjA, EOM_TMP0, G_irr, 10, 10, 10, 10, 0, "GIbjA");
614
dpd_buf4_init(&G, CC_GAMMA, G_irr, 10, 10, 10, 10, 0, "GIbjA");
615
dpd_buf4_axpy(&GIbjA, &G, 1.0);
617
dpd_buf4_close(&GIbjA);
618
dpd_buf4_init(&GiBJa, EOM_TMP0, G_irr, 10, 10, 10, 10, 0, "GiBJa");
619
dpd_buf4_init(&G, CC_GAMMA, G_irr, 10, 10, 10, 10, 0, "GiBJa");
620
dpd_buf4_axpy(&GiBJa, &G, 1.0);
622
dpd_buf4_close(&GiBJa);
624
/* symmetrize after adding to CC_GAMMA */
625
dpd_buf4_init(&G, CC_GAMMA, G_irr, 10, 10, 10, 10, 0, "GIBJA");
628
dpd_buf4_init(&G, CC_GAMMA, G_irr, 10, 10, 10, 10, 0, "Gibja");
631
dpd_buf4_init(&G, CC_GAMMA, G_irr, 10, 10, 10, 10, 0, "GIbJa");
634
dpd_buf4_init(&G, CC_GAMMA, G_irr, 10, 10, 10, 10, 0, "GiBjA");
637
dpd_buf4_init(&GIbjA, CC_GAMMA, G_irr, 10, 10, 10, 10, 0, "GIbjA");
638
dpd_buf4_init(&GiBJa, CC_GAMMA, G_irr, 10, 10, 10, 10, 0, "GiBJa");
639
dpd_buf4_symm2(&GIbjA, &GiBJa);
640
dpd_buf4_close(&GiBJa);
641
dpd_buf4_sort(&GIbjA, CC_GAMMA, rspq, 10, 10, "GiBJa");
642
dpd_buf4_close(&GIbjA);
644
psio_close(EOM_TMP0, 0);
645
psio_open(EOM_TMP0,PSIO_OPEN_NEW);
646
psio_close(EOM_TMP1, 0);
647
psio_open(EOM_TMP1,PSIO_OPEN_NEW);
651
}} // namespace psi::ccdensity