2
#include <libdpd/dpd.h>
6
/* onepdm(): Computes the non-R0 parts of the unrelaxed EOM 1pdm
7
* intermediates are defined in intermediates.c
9
* D[i][j] = -LR_oo[j][i] - t1[i][f] * L2R1_ov[j][f]
11
* D[a][b] = +LR_vv[a][b] + t1[n][b] * L2R1_ov[n][a]
13
* D[a][i] = +L2R1_ov[i][a]
15
* D[i][a] = + L1R2_ov[i][a]
16
* - t1[m][a] * LR_oo[m][i]
17
* - t1[i][e] * LR_vv[e][a]
18
* - r1[m][a] * LT2_oo[m][i]
19
* - r1[i][e] * LT2_vv[e][a]
20
* + L2R1_ov[M][E] * (t2[i][m][a][e] - t1[i][e] * t1[m][a])
27
dpdfile2 DIA, Dia, DIJ, DAB, Dij, Dab, TIA, Tia;
28
dpdfile2 LIA, Lia, RIA, Ria, I, XIJ, Xij;
29
dpdbuf4 T2, L2, R2, I2;
31
if(params.ref == 0 || params.ref == 1) { /** RHF/ROHF **/
33
dpd_file2_init(&TIA, CC_OEI, 0, 0, 1, "tIA");
34
dpd_file2_init(&Tia, CC_OEI, 0, 0, 1, "tia");
36
dpd_file2_init(&RIA, CC_RAMPS, 0, 0, 1, "RIA");
37
dpd_file2_init(&Ria, CC_RAMPS, 0, 0, 1, "Ria");
39
dpd_file2_init(&LIA, CC_LAMPS, 0, 0, 1, "LIA");
40
dpd_file2_init(&Lia, CC_LAMPS, 0, 0, 1, "Lia");
42
/* D[i][j] = -LR_oo[j][i] - t1[i][f] * L2R1_ov[j][f] */
44
dpd_file2_init(&DIJ, EOM_D, 0, 0, 0, "DIJ");
45
dpd_file2_scm(&DIJ, 0.0);
47
dpd_file2_init(&I, EOM_TMP, 0, 0, 0, "LR_OO");
48
dpd_file2_axpy(&I, &DIJ, -1.0, 1);
51
dpd_file2_init(&I, EOM_TMP, 0, 0, 1, "L2R1_OV");
52
dpd_contract222(&TIA, &I, &DIJ, 0, 0, -1.0, 1.0);
54
dpd_file2_close(&DIJ);
56
dpd_file2_init(&Dij, EOM_D, 0, 0, 0, "Dij");
57
dpd_file2_scm(&Dij, 0.0);
59
dpd_file2_init(&I, EOM_TMP, 0, 0, 0, "LR_oo");
60
dpd_file2_axpy(&I, &Dij, -1.0, 1);
63
dpd_file2_init(&I, EOM_TMP, 0, 0, 1, "L2R1_ov");
64
dpd_contract222(&Tia, &I, &Dij, 0, 0, -1.0, 1.0);
66
dpd_file2_close(&Dij);
68
/* D[a][b] = +LR_vv[a][b] + L2R1_ov[n][a] * t1[n][b] */
69
dpd_file2_init(&I, EOM_TMP, 0, 1, 1, "LR_VV");
70
dpd_file2_copy(&I, EOM_D, "DAB");
73
dpd_file2_init(&DAB, EOM_D, 0, 1, 1, "DAB");
74
dpd_file2_init(&I, EOM_TMP, 0, 0, 1, "L2R1_OV");
75
dpd_contract222(&I, &TIA, &DAB, 1, 1, 1.0, 1.0);
77
dpd_file2_close(&DAB);
79
dpd_file2_init(&I, EOM_TMP, 0, 1, 1, "LR_vv");
80
dpd_file2_copy(&I, EOM_D, "Dab");
83
dpd_file2_init(&Dab, EOM_D, 0, 1, 1, "Dab");
84
dpd_file2_init(&I, EOM_TMP, 0, 0, 1, "L2R1_ov");
85
dpd_contract222(&I, &Tia, &Dab, 1, 1, 1.0, 1.0);
87
dpd_file2_close(&Dab);
89
/* D[a][i] = +L2R1_ov[i][a] */
91
dpd_file2_init(&I, EOM_TMP, 0, 0, 1, "L2R1_OV");
92
dpd_file2_copy(&I, EOM_D, "DAI");
95
dpd_file2_init(&I, EOM_TMP, 0, 0, 1, "L2R1_ov");
96
dpd_file2_copy(&I, EOM_D, "Dai");
100
D[I][A] = + L1R2_OV[I][A]
101
- LR_OO[M][I] * t1[M][A]
102
- t1[I][E] * LR_vv[E][A]
103
- LT2_OO[M][I] * r1[M][A]
104
- r1[I][E] * LT2_vv[E][A]
105
+ L2R1_ov[M][E] * (t2[i][m][a][e] - t1[i][e] * t1[m][a])
108
/* D[i][a] = L1R2_ov[i][a] */
109
dpd_file2_init(&I, EOM_TMP, 0, 0, 1, "L1R2_OV");
110
dpd_file2_copy(&I, EOM_D, "DIA");
113
dpd_file2_init(&I, EOM_TMP, 0, 0, 1, "L1R2_ov");
114
dpd_file2_copy(&I, EOM_D, "Dia");
117
dpd_file2_init(&DIA, EOM_D, 0, 0, 1, "DIA");
118
dpd_file2_init(&Dia, EOM_D, 0, 0, 1, "Dia");
120
/* - LR_OO[M][I] * t1[M][A] */
122
dpd_file2_init(&I, EOM_TMP, 0, 0, 0, "LR_OO");
123
dpd_contract222(&I, &TIA, &DIA, 1, 1, -1.0, 1.0);
126
dpd_file2_init(&I, EOM_TMP, 0, 0, 0, "LR_oo");
127
dpd_contract222(&I, &Tia, &Dia, 1, 1, -1.0, 1.0);
130
/* - t1[I][E] * LR_vv[E][A] */
132
dpd_file2_init(&I, EOM_TMP, 0, 1, 1, "LR_VV");
133
dpd_contract222(&TIA, &I, &DIA, 0, 1, -1.0, 1.0);
136
dpd_file2_init(&I, EOM_TMP, 0, 1, 1, "LR_vv");
137
dpd_contract222(&Tia, &I, &Dia, 0, 1, -1.0, 1.0);
140
/* - LT2_OO[M][I] * r1[M][A] */
142
dpd_file2_init(&I, EOM_TMP, 0, 0, 0, "LT2_OO");
143
dpd_contract222(&I, &RIA, &DIA, 1, 1, -1.0, 1.0);
146
dpd_file2_init(&I, EOM_TMP, 0, 0, 0, "LT2_oo");
147
dpd_contract222(&I, &Ria, &Dia, 1, 1, -1.0, 1.0);
150
/* - r1[I][E] * LT2_vv[E][A] */
152
dpd_file2_init(&I, EOM_TMP, 0, 1, 1, "LT2_VV");
153
dpd_contract222(&RIA, &I, &DIA, 0, 1, -1.0, 1.0);
156
dpd_file2_init(&I, EOM_TMP, 0, 1, 1, "LT2_vv");
157
dpd_contract222(&Ria, &I, &Dia, 0, 1, -1.0, 1.0);
160
/* + L2R1_ov[M][E] * t2[i][m][a][e] */
162
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 2, 7, 0, "tIJAB");
163
dpd_file2_init(&I, EOM_TMP, 0, 0, 1, "L2R1_OV");
164
dpd_dot24(&I, &T2, &DIA, 0, 0, 1.0, 1.0);
168
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tIjAb");
169
dpd_file2_init(&I, EOM_TMP, 0, 0, 1, "L2R1_ov");
170
dpd_dot24(&I, &T2, &DIA, 0, 0, 1.0, 1.0);
174
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 2, 7, 0, "tijab");
175
dpd_file2_init(&I, EOM_TMP, 0, 0, 1, "L2R1_ov");
176
dpd_dot24(&I, &T2, &Dia, 0, 0, 1.0, 1.0);
180
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tiJaB");
181
dpd_file2_init(&I, EOM_TMP, 0, 0, 1, "L2R1_OV");
182
dpd_dot24(&I, &T2, &Dia, 0, 0, 1.0, 1.0);
186
/* - (t1[i][e] * L2R1_ov[M][E]) * t1[m][a] */
188
dpd_file2_init(&I, EOM_TMP, 0, 0, 1, "L2R1_OV");
189
dpd_file2_init(&XIJ, EOM_TMP, 0, 0, 0, "XIJ");
190
dpd_contract222(&TIA, &I, &XIJ, 0, 0, 1.0, 0.0);
193
dpd_file2_init(&XIJ, EOM_TMP, 0, 0, 0, "XIJ");
194
dpd_contract222(&XIJ, &TIA, &DIA, 0, 1, -1.0, 1.0);
195
dpd_file2_close(&XIJ);
197
dpd_file2_init(&I, EOM_TMP, 0, 0, 1, "L2R1_ov");
198
dpd_file2_init(&Xij, EOM_TMP, 0, 0, 0, "Xij");
199
dpd_contract222(&Tia, &I, &Xij, 0, 0, 1.0, 0.0);
202
dpd_file2_init(&Xij, EOM_TMP, 0, 0, 0, "Xij");
203
dpd_contract222(&Xij, &Tia, &Dia, 0, 1, -1.0, 1.0);
204
dpd_file2_close(&Xij);
206
dpd_file2_close(&DIA);
207
dpd_file2_close(&Dia);
209
dpd_file2_close(&TIA);
210
dpd_file2_close(&Tia);
211
dpd_file2_close(&RIA);
212
dpd_file2_close(&Ria);
213
dpd_file2_close(&LIA);
214
dpd_file2_close(&Lia);