3
\brief Enter brief description of file here
6
#include <libdpd/dpd.h>
13
namespace psi { namespace ccdensity {
15
/* x_Gabcd(): computes non-R0 parts of Gijkl 2pdm */
16
/* Gabcd = 0.5 Lmnab * Rmncd + P(cd) Lmnab * Rmc * Tnd */
17
/* Gabcd = 0.5 Lmnab * Rmncd + Lmnab (Rmc * Tnd + tmc * Rnd) */
22
dpdbuf4 L2, I2, I3, R2, GABCD, Gabcd, GAbCd;
23
int L_irr, R_irr, G_irr;
29
if (params.ref == 0 || params.ref == 1) {
30
/* GABCD += 0.5 * Lmnab * Rmncd */
31
dpd_buf4_init(&GABCD, CC_GAMMA, G_irr, 7, 7, 7, 7, 0, "GABCD");
32
dpd_buf4_init(&L2, CC_GL, L_irr, 2, 7, 2, 7, 0, "LIJAB");
33
dpd_buf4_init(&R2, CC_GR, R_irr, 2, 7, 2, 7, 0, "RIJAB");
34
dpd_contract444(&L2, &R2, &GABCD, 1, 1, 1.0, 1.0);
37
dpd_buf4_close(&GABCD);
39
dpd_buf4_init(&Gabcd, CC_GAMMA, G_irr, 7, 7, 7, 7, 0, "Gabcd");
40
dpd_buf4_init(&L2, CC_GL, L_irr, 2, 7, 2, 7, 0, "Lijab");
41
dpd_buf4_init(&R2, CC_GR, R_irr, 2, 7, 2, 7, 0, "Rijab");
42
dpd_contract444(&L2, &R2, &Gabcd, 1, 1, 1.0, 1.0);
45
dpd_buf4_close(&Gabcd);
47
dpd_buf4_init(&GAbCd, CC_GAMMA, G_irr, 5, 5, 5, 5, 0, "GAbCd");
48
dpd_buf4_init(&L2, CC_GL, L_irr, 0, 5, 0, 5, 0, "LIjAb");
49
dpd_buf4_init(&R2, CC_GR, R_irr, 0, 5, 0, 5, 0, "RIjAb");
50
dpd_contract444(&L2, &R2, &GAbCd, 1, 1, 1.0, 1.0);
53
dpd_buf4_close(&GAbCd);
56
/* GABCD += 0.5 * Lmnab * Rmncd */
57
dpd_buf4_init(&GABCD, CC_GAMMA, G_irr, 7, 7, 7, 7, 0, "GABCD");
58
dpd_buf4_init(&L2, CC_GL, L_irr, 2, 7, 2, 7, 0, "LIJAB");
59
dpd_buf4_init(&R2, CC_GR, R_irr, 2, 7, 2, 7, 0, "RIJAB");
60
dpd_contract444(&L2, &R2, &GABCD, 1, 1, 1.0, 1.0);
63
dpd_buf4_close(&GABCD);
65
dpd_buf4_init(&Gabcd, CC_GAMMA, G_irr, 17, 17, 17, 17, 0, "Gabcd");
66
dpd_buf4_init(&L2, CC_GL, L_irr, 12, 17, 12, 17, 0, "Lijab");
67
dpd_buf4_init(&R2, CC_GR, R_irr, 12, 17, 12, 17, 0, "Rijab");
68
dpd_contract444(&L2, &R2, &Gabcd, 1, 1, 1.0, 1.0);
71
dpd_buf4_close(&Gabcd);
73
dpd_buf4_init(&GAbCd, CC_GAMMA, G_irr, 28, 28, 28, 28, 0, "GAbCd");
74
dpd_buf4_init(&L2, CC_GL, L_irr, 22, 28, 22, 28, 0, "LIjAb");
75
dpd_buf4_init(&R2, CC_GR, R_irr, 22, 28, 22, 28, 0, "RIjAb");
76
dpd_contract444(&L2, &R2, &GAbCd, 1, 1, 1.0, 1.0);
79
dpd_buf4_close(&GAbCd);
82
if (params.ref == 0 || params.ref == 1) {
83
/* GABCD = LMNAB (RMC * TND + tMC * RND) */
84
dpd_buf4_init(&GABCD, CC_GAMMA, G_irr, 7, 5, 7, 7, 0, "GABCD");
85
dpd_buf4_init(&I2, EOM_TMP, G_irr, 7, 11, 7, 11, 0, "L2R1_VVOV(pqsr)");
86
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
87
dpd_contract424(&I2, &T1, &GABCD, 3, 0, 0, -1.0, 1.0);
90
dpd_buf4_init(&I2, EOM_TMP, G_irr, 7, 10, 7, 10, 0, "L2R1_VVOV");
91
dpd_contract244(&T1, &I2, &GABCD, 0, 2, 1, 1.0, 1.0);
94
dpd_buf4_close(&GABCD);
96
/* Gabcd = Lmnab (Rmc * Tnd + tmc * Rnd) */
97
dpd_buf4_init(&Gabcd, CC_GAMMA, G_irr, 7, 5, 7, 7, 0, "Gabcd");
98
dpd_buf4_init(&I2, EOM_TMP, G_irr, 7, 11, 7, 11, 0, "L2R1_vvov(pqsr)");
99
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tia");
100
dpd_contract424(&I2, &T1, &Gabcd, 3, 0, 0, -1.0, 1.0);
103
dpd_buf4_init(&I2, EOM_TMP, G_irr, 7, 10, 7, 10, 0, "L2R1_vvov");
104
dpd_contract244(&T1, &I2, &Gabcd, 0, 2, 1, 1.0, 1.0);
105
dpd_file2_close(&T1);
107
dpd_buf4_close(&Gabcd);
109
/* GAbCd = LMnAb (RMC * Tnd + TMC * Rnd) */
110
dpd_buf4_init(&GAbCd, CC_GAMMA, G_irr, 5, 5, 5, 5, 0, "GAbCd");
111
dpd_buf4_init(&I2, EOM_TMP, G_irr, 5, 11, 5, 11, 0, "L2R1_VvoV(pqsr)");
112
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tia");
113
dpd_contract424(&I2, &T1, &GAbCd, 3, 0, 0, 1.0, 1.0);
114
dpd_file2_close(&T1);
117
dpd_buf4_init(&I2, EOM_TMP, G_irr, 5, 10, 5, 10, 0, "L2R1_VvOv");
118
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
119
dpd_contract244(&T1, &I2, &GAbCd, 0, 2, 1, 1.0, 1.0);
120
dpd_file2_close(&T1);
122
dpd_buf4_close(&GAbCd);
125
/* GABCD = LMNAB (RMC * TND + tMC * RND) */
126
dpd_buf4_init(&GABCD, CC_GAMMA, G_irr, 7, 5, 7, 7, 0, "GABCD");
127
dpd_buf4_init(&I2, EOM_TMP, G_irr, 7, 21, 7, 21, 0, "L2R1_VVOV(pqsr)");
128
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
129
dpd_contract424(&I2, &T1, &GABCD, 3, 0, 0, -1.0, 1.0);
132
dpd_buf4_init(&I2, EOM_TMP, G_irr, 7, 20, 7, 20, 0, "L2R1_VVOV");
133
dpd_contract244(&T1, &I2, &GABCD, 0, 2, 1, 1.0, 1.0);
134
dpd_file2_close(&T1);
136
dpd_buf4_close(&GABCD);
138
/* Gabcd = Lmnab (Rmc * Tnd + tmc * Rnd) */
139
dpd_buf4_init(&Gabcd, CC_GAMMA, G_irr, 17, 15, 17, 17, 0, "Gabcd");
140
dpd_buf4_init(&I2, EOM_TMP, G_irr, 17, 31, 17, 31, 0, "L2R1_vvov(pqsr)");
141
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
142
dpd_contract424(&I2, &T1, &Gabcd, 3, 0, 0, -1.0, 1.0);
145
dpd_buf4_init(&I2, EOM_TMP, G_irr, 17, 30, 17, 30, 0, "L2R1_vvov");
146
dpd_contract244(&T1, &I2, &Gabcd, 0, 2, 1, 1.0, 1.0);
147
dpd_file2_close(&T1);
149
dpd_buf4_close(&Gabcd);
151
/* GAbCd = LMnAb (RMC * Tnd + TMC * Rnd) */
152
dpd_buf4_init(&GAbCd, CC_GAMMA, G_irr, 28, 28, 28, 28, 0, "GAbCd");
153
dpd_buf4_init(&I2, EOM_TMP, G_irr, 28, 26, 28, 26, 0, "L2R1_VvoV(pqsr)");
154
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
155
dpd_contract424(&I2, &T1, &GAbCd, 3, 0, 0, 1.0, 1.0);
156
dpd_file2_close(&T1);
159
dpd_buf4_init(&I2, EOM_TMP, G_irr, 28, 24, 28, 24, 0, "L2R1_VvOv");
160
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
161
dpd_contract244(&T1, &I2, &GAbCd, 0, 2, 1, 1.0, 1.0);
162
dpd_file2_close(&T1);
164
dpd_buf4_close(&GAbCd);
167
/* bra-ket symmetrize */
168
if (params.ref == 0 || params.ref == 1) {
169
dpd_buf4_init(&GABCD, CC_GAMMA, G_irr, 7, 7, 7, 7, 0, "GABCD");
170
dpd_buf4_symm(&GABCD);
171
dpd_buf4_close(&GABCD);
172
dpd_buf4_init(&Gabcd, CC_GAMMA, G_irr, 7, 7, 7, 7, 0, "Gabcd");
173
dpd_buf4_symm(&Gabcd);
174
dpd_buf4_close(&Gabcd);
175
dpd_buf4_init(&GAbCd, CC_GAMMA, G_irr, 5, 5, 5, 5, 0, "GAbCd");
176
dpd_buf4_symm(&GAbCd);
177
dpd_buf4_close(&GAbCd);
180
dpd_buf4_init(&GABCD, CC_GAMMA, G_irr, 7, 7, 7, 7, 0, "GABCD");
181
dpd_buf4_symm(&GABCD);
182
dpd_buf4_close(&GABCD);
183
dpd_buf4_init(&Gabcd, CC_GAMMA, G_irr, 17, 17, 17, 17, 0, "Gabcd");
184
dpd_buf4_symm(&Gabcd);
185
dpd_buf4_close(&Gabcd);
186
dpd_buf4_init(&GAbCd, CC_GAMMA, G_irr, 28, 28, 28, 28, 0, "GAbCd");
187
dpd_buf4_symm(&GAbCd);
188
dpd_buf4_close(&GAbCd);
193
}} // namespace psi::ccdensity