24
void onepdm(struct RHO_Params rho_params)
26
26
dpdfile2 D, T1, L1, Z;
28
double trace=0.0, dot_AI, dot_IA, dot_ai, dot_ia;
30
30
if(params.ref == 0 || params.ref == 1) { /** RHF/ROHF **/
32
dpd_file2_init(&D, CC_OEI, 0, 0, 0, "DIJ");
32
dpd_file2_init(&D, CC_OEI, 0, 0, 0, rho_params.DIJ_lbl);
33
33
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 7, 2, 7, 0, "tIJAB");
34
dpd_buf4_init(&L2, CC_LAMPS, 0, 0, 7, 2, 7, 0, "LIJAB");
34
dpd_buf4_init(&L2, CC_GLG, 0, 0, 7, 2, 7, 0, "LIJAB");
35
35
dpd_contract442(&T2, &L2, &D, 0, 0, -1.0, 0.0);
36
36
dpd_buf4_close(&L2);
37
37
dpd_buf4_close(&T2);
38
38
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tIjAb");
39
dpd_buf4_init(&L2, CC_LAMPS, 0, 0, 5, 0, 5, 0, "LIjAb");
39
dpd_buf4_init(&L2, CC_GLG, 0, 0, 5, 0, 5, 0, "LIjAb");
40
40
dpd_contract442(&T2, &L2, &D, 0, 0, -1.0, 1.0);
41
41
dpd_buf4_close(&L2);
42
42
dpd_buf4_close(&T2);
43
43
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
44
dpd_file2_init(&L1, CC_OEI, 0, 0, 1, "LIA");
44
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "LIA");
45
45
dpd_contract222(&T1, &L1, &D, 0, 0, -1.0, 1.0);
46
46
dpd_file2_close(&L1);
47
47
dpd_file2_close(&T1);
48
48
trace += dpd_file2_trace(&D);
49
49
dpd_file2_close(&D);
51
dpd_file2_init(&D, CC_OEI, 0, 0, 0, "Dij");
51
dpd_file2_init(&D, CC_OEI, 0, 0, 0, rho_params.Dij_lbl);
52
52
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 7, 2, 7, 0, "tijab");
53
dpd_buf4_init(&L2, CC_LAMPS, 0, 0, 7, 2, 7, 0, "Lijab");
53
dpd_buf4_init(&L2, CC_GLG, 0, 0, 7, 2, 7, 0, "Lijab");
54
54
dpd_contract442(&T2, &L2, &D, 0, 0, -1.0, 0.0);
55
55
dpd_buf4_close(&L2);
56
56
dpd_buf4_close(&T2);
57
57
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tiJaB");
58
dpd_buf4_init(&L2, CC_LAMPS, 0, 0, 5, 0, 5, 0, "LiJaB");
58
dpd_buf4_init(&L2, CC_GLG, 0, 0, 5, 0, 5, 0, "LiJaB");
59
59
dpd_contract442(&T2, &L2, &D, 0, 0, -1.0, 1.0);
60
60
dpd_buf4_close(&L2);
61
61
dpd_buf4_close(&T2);
62
62
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tia");
63
dpd_file2_init(&L1, CC_OEI, 0, 0, 1, "Lia");
63
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "Lia");
64
64
dpd_contract222(&T1, &L1, &D, 0, 0, -1.0, 1.0);
65
65
dpd_file2_close(&L1);
66
66
dpd_file2_close(&T1);
67
67
trace += dpd_file2_trace(&D);
68
68
dpd_file2_close(&D);
70
dpd_file2_init(&D, CC_OEI, 0, 1, 1, "DAB");
71
dpd_buf4_init(&L2, CC_LAMPS, 0, 2, 5, 2, 7, 0, "LIJAB");
70
dpd_file2_init(&D, CC_OEI, 0, 1, 1, rho_params.DAB_lbl);
71
dpd_buf4_init(&L2, CC_GLG, 0, 2, 5, 2, 7, 0, "LIJAB");
72
72
dpd_buf4_init(&T2, CC_TAMPS, 0, 2, 5, 2, 7, 0, "tIJAB");
73
73
dpd_contract442(&L2, &T2, &D, 3, 3, 1.0, 0.0);
74
74
dpd_buf4_close(&T2);
75
75
dpd_buf4_close(&L2);
76
dpd_buf4_init(&L2, CC_LAMPS, 0, 0, 5, 0, 5, 0, "LiJaB");
76
dpd_buf4_init(&L2, CC_GLG, 0, 0, 5, 0, 5, 0, "LiJaB");
77
77
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tiJaB");
78
78
dpd_contract442(&L2, &T2, &D, 3, 3, 1.0, 1.0);
79
79
dpd_buf4_close(&L2);
80
80
dpd_buf4_close(&T2);
81
dpd_file2_init(&L1, CC_OEI, 0, 0, 1, "LIA");
81
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "LIA");
82
82
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
83
83
dpd_contract222(&L1, &T1, &D, 1, 1, 1.0, 1.0);
84
84
dpd_file2_close(&L1);
86
86
trace += dpd_file2_trace(&D);
87
87
dpd_file2_close(&D);
89
dpd_file2_init(&D, CC_OEI, 0, 1, 1, "Dab");
90
dpd_buf4_init(&L2, CC_LAMPS, 0, 2, 5, 2, 7, 0, "Lijab");
89
dpd_file2_init(&D, CC_OEI, 0, 1, 1, rho_params.Dab_lbl);
90
dpd_buf4_init(&L2, CC_GLG, 0, 2, 5, 2, 7, 0, "Lijab");
91
91
dpd_buf4_init(&T2, CC_TAMPS, 0, 2, 5, 2, 7, 0, "tijab");
92
92
dpd_contract442(&L2, &T2, &D, 3, 3, 1.0, 0.0);
93
93
dpd_buf4_close(&T2);
94
94
dpd_buf4_close(&L2);
95
dpd_buf4_init(&L2, CC_LAMPS, 0, 0, 5, 0, 5, 0, "LIjAb");
95
dpd_buf4_init(&L2, CC_GLG, 0, 0, 5, 0, 5, 0, "LIjAb");
96
96
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tIjAb");
97
97
dpd_contract442(&L2, &T2, &D, 3, 3, 1.0, 1.0);
98
98
dpd_buf4_close(&L2);
99
99
dpd_buf4_close(&T2);
100
dpd_file2_init(&L1, CC_OEI, 0, 0, 1, "Lia");
100
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "Lia");
101
101
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tia");
102
102
dpd_contract222(&L1, &T1, &D, 1, 1, 1.0, 1.0);
103
103
dpd_file2_close(&L1);
105
105
trace += dpd_file2_trace(&D);
106
106
dpd_file2_close(&D);
108
fprintf(outfile, "\n\tTrace of onepdm = %20.15f\n", trace);
110
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
111
dpd_file2_copy(&T1, CC_OEI, "DIA");
112
dpd_file2_close(&T1);
114
dpd_file2_init(&D, CC_OEI, 0, 0, 1, "DIA");
116
/* full tIA must be included in excited-state 1-pdm so anticipate that
117
* this tIA term will be multiplied by R0 */
119
if (!params.ground) {
120
dpd_file2_scm(&D, 1.0/params.R0);
108
/*fprintf(outfile, "\n\tTrace of onepdm = %20.15f\n", trace);*/
110
/* This term is * L0 = 0 for excited states */
111
if (rho_params.L_ground) {
112
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
113
dpd_file2_copy(&T1, CC_OEI, rho_params.DIA_lbl);
114
dpd_file2_close(&T1);
116
dpd_file2_init(&D, CC_OEI, 0, 0, 1, rho_params.DIA_lbl);
124
118
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 2, 7, 0, "tIJAB");
125
dpd_file2_init(&L1, CC_OEI, 0, 0, 1, "LIA");
119
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "LIA");
126
120
dpd_dot24(&L1, &T2, &D, 0, 0, 1.0, 1.0);
127
121
dpd_file2_close(&L1);
128
122
dpd_buf4_close(&T2);
129
123
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tIjAb");
130
dpd_file2_init(&L1, CC_OEI, 0, 0, 1, "Lia");
124
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "Lia");
131
125
dpd_dot24(&L1, &T2, &D, 0, 0, 1.0, 1.0);
132
126
dpd_file2_close(&L1);
133
127
dpd_buf4_close(&T2);
134
dpd_file2_init(&L1, CC_OEI, 0, 0, 1, "LIA");
128
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "LIA");
135
129
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
136
130
dpd_file2_init(&Z, CC_TMP0, 0, 0, 0, "Z(I,M)");
137
131
dpd_contract222(&T1, &L1, &Z, 0, 0, 1.0, 0.0);
141
135
dpd_file2_close(&Z);
142
136
/* D(I,A) << L2(MN,EF) T2(IN,EF) T(M,A) + L2(Mn,Ef) T2(In,Ef) T(M,A) */
143
137
dpd_file2_init(&Z, CC_TMP0, 0, 0, 0, "Z(I,M)");
144
dpd_buf4_init(&L2, CC_LAMPS, 0, 0, 7, 2, 7, 0, "LIJAB");
138
dpd_buf4_init(&L2, CC_GLG, 0, 0, 7, 2, 7, 0, "LIJAB");
145
139
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 7, 2, 7, 0, "tIJAB");
146
140
dpd_contract442(&T2, &L2, &Z, 0, 0, 1.0, 0.0);
147
141
dpd_buf4_close(&T2);
148
142
dpd_buf4_close(&L2);
149
dpd_buf4_init(&L2, CC_LAMPS, 0, 0, 5, 0, 5, 0, "LIjAb");
143
dpd_buf4_init(&L2, CC_GLG, 0, 0, 5, 0, 5, 0, "LIjAb");
150
144
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tIjAb");
151
145
dpd_contract442(&T2, &L2, &Z, 0, 0, 1.0, 1.0);
152
146
dpd_buf4_close(&T2);
158
152
/* T2(MN,AF) L2(MN,EF) T(I,E) + T2(Mn,Af) L2(Mn,Ef) T(I,E) */
159
153
dpd_file2_init(&Z, CC_TMP0, 0, 1, 1, "Z(A,E)");
160
154
dpd_buf4_init(&T2, CC_TAMPS, 0, 2, 5, 2, 7, 0, "tIJAB");
161
dpd_buf4_init(&L2, CC_LAMPS, 0, 2, 5, 2, 7, 0, "LIJAB");
155
dpd_buf4_init(&L2, CC_GLG, 0, 2, 5, 2, 7, 0, "LIJAB");
162
156
dpd_contract442(&T2, &L2, &Z, 2, 2, 1.0, 0.0);
163
157
dpd_buf4_close(&L2);
164
158
dpd_buf4_close(&T2);
165
159
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tIjAb");
166
dpd_buf4_init(&L2, CC_LAMPS, 0, 0, 5, 0, 5, 0, "LIjAb");
160
dpd_buf4_init(&L2, CC_GLG, 0, 0, 5, 0, 5, 0, "LIjAb");
167
161
dpd_contract442(&T2, &L2, &Z, 2, 2, 1.0, 1.0);
168
162
dpd_buf4_close(&L2);
169
163
dpd_buf4_close(&T2);
173
167
dpd_file2_close(&Z);
174
168
dpd_file2_close(&D);
176
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tia");
177
dpd_file2_copy(&T1, CC_OEI, "Dia");
178
dpd_file2_close(&T1);
180
dpd_file2_init(&D, CC_OEI, 0, 0, 1, "Dia");
182
/* full tia must be included in excited-state 1-pdm so anticipate
183
* that this tia term will be multiplied by R0 */
185
if (!params.ground) {
186
dpd_file2_scm(&D, 1.0/params.R0);
170
/* This term is * L0 = 0 for excited states */
171
if (rho_params.L_ground) {
172
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tia");
173
dpd_file2_copy(&T1, CC_OEI, rho_params.Dia_lbl);
174
dpd_file2_close(&T1);
176
dpd_file2_init(&D, CC_OEI, 0, 0, 1, rho_params.Dia_lbl);
190
178
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 2, 7, 0, "tijab");
191
dpd_file2_init(&L1, CC_OEI, 0, 0, 1, "Lia");
179
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "Lia");
192
180
dpd_dot24(&L1, &T2, &D, 0, 0, 1.0, 1.0);
193
181
dpd_file2_close(&L1);
194
182
dpd_buf4_close(&T2);
195
183
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tiJaB");
196
dpd_file2_init(&L1, CC_OEI, 0, 0, 1, "LIA");
184
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "LIA");
197
185
dpd_dot24(&L1, &T2, &D, 0, 0, 1.0, 1.0);
198
186
dpd_file2_close(&L1);
199
187
dpd_buf4_close(&T2);
200
dpd_file2_init(&L1, CC_OEI, 0, 0, 1, "Lia");
188
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "Lia");
201
189
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tia");
202
190
dpd_file2_init(&Z, CC_TMP0, 0, 0, 0, "Z(i,m)");
203
191
dpd_contract222(&T1, &L1, &Z, 0, 0, 1.0, 0.0);
238
226
dpd_file2_close(&D);
240
228
/* Note that these blocks are still stored occ/vir */
241
dpd_file2_init(&L1, CC_OEI, 0, 0, 1, "LIA");
242
dpd_file2_copy(&L1, CC_OEI, "DAI");
243
dpd_file2_close(&L1);
245
dpd_file2_init(&L1, CC_OEI, 0, 0, 1, "Lia");
246
dpd_file2_copy(&L1, CC_OEI, "Dai");
247
dpd_file2_close(&L1);
229
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "LIA");
230
dpd_file2_copy(&L1, CC_OEI, rho_params.DAI_lbl);
231
dpd_file2_close(&L1);
233
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "Lia");
234
dpd_file2_copy(&L1, CC_OEI, rho_params.Dai_lbl);
235
dpd_file2_close(&L1);
239
dpd_file2_init(&D, CC_OEI, 0, 0, 1, rho_params.DIA_lbl);
240
dot_IA = dpd_file2_dot_self(&D);
242
dpd_file2_init(&D, CC_OEI, 0, 0, 1, rho_params.Dia_lbl);
243
dot_ia = dpd_file2_dot_self(&D);
245
dpd_file2_init(&D, CC_OEI, 0, 1, 0, rho_params.DAI_lbl);
246
dot_AI = dpd_file2_dot_self(&D);
248
dpd_file2_init(&D, CC_OEI, 0, 1, 0, rho_params.Dai_lbl);
249
dot_ai = dpd_file2_dot_self(&D);
251
fprintf(outfile,"\tOverlaps of onepdm after ground-state parts added.\n");
252
fprintf(outfile,"\t<DIA|DIA> = %15.10lf <Dia|Dia> = %15.10lf\n", dot_IA, dot_ia);
253
fprintf(outfile,"\t<DAI|DAI> = %15.10lf <Dai|Dai> = %15.10lf\n", dot_AI, dot_ai);
254
fprintf(outfile,"\t<Dpq|Dqp> = %15.10lf\n", dot_IA+dot_ia+dot_AI+dot_ai);
250
257
else if(params.ref == 2) { /** UHF **/
252
dpd_file2_init(&D, CC_OEI, 0, 0, 0, "DIJ");
259
dpd_file2_init(&D, CC_OEI, 0, 0, 0, rho_params.DIJ_lbl);
253
260
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 7, 2, 7, 0, "tIJAB");
254
dpd_buf4_init(&L2, CC_LAMPS, 0, 0, 7, 2, 7, 0, "LIJAB");
261
dpd_buf4_init(&L2, CC_GLG, 0, 0, 7, 2, 7, 0, "LIJAB");
255
262
dpd_contract442(&T2, &L2, &D, 0, 0, -1.0, 0.0);
256
263
dpd_buf4_close(&L2);
257
264
dpd_buf4_close(&T2);
258
265
dpd_buf4_init(&T2, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tIjAb");
259
dpd_buf4_init(&L2, CC_LAMPS, 0, 22, 28, 22, 28, 0, "LIjAb");
266
dpd_buf4_init(&L2, CC_GLG, 0, 22, 28, 22, 28, 0, "LIjAb");
260
267
dpd_contract442(&T2, &L2, &D, 0, 0, -1.0, 1.0);
261
268
dpd_buf4_close(&L2);
262
269
dpd_buf4_close(&T2);
263
270
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
264
dpd_file2_init(&L1, CC_OEI, 0, 0, 1, "LIA");
271
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "LIA");
265
272
dpd_contract222(&T1, &L1, &D, 0, 0, -1.0, 1.0);
266
273
dpd_file2_close(&L1);
267
274
dpd_file2_close(&T1);
268
275
trace += dpd_file2_trace(&D);
269
276
dpd_file2_close(&D);
271
dpd_file2_init(&D, CC_OEI, 0, 2, 2, "Dij");
278
dpd_file2_init(&D, CC_OEI, 0, 2, 2, rho_params.Dij_lbl);
272
279
dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 17, 12, 17, 0, "tijab");
273
dpd_buf4_init(&L2, CC_LAMPS, 0, 10, 17, 12, 17, 0, "Lijab");
280
dpd_buf4_init(&L2, CC_GLG, 0, 10, 17, 12, 17, 0, "Lijab");
274
281
dpd_contract442(&T2, &L2, &D, 0, 0, -1.0, 0.0);
275
282
dpd_buf4_close(&L2);
276
283
dpd_buf4_close(&T2);
277
284
dpd_buf4_init(&T2, CC_TAMPS, 0, 23, 29, 23, 29, 0, "tiJaB");
278
dpd_buf4_init(&L2, CC_LAMPS, 0, 23, 29, 23, 29, 0, "LiJaB");
285
dpd_buf4_init(&L2, CC_GLG, 0, 23, 29, 23, 29, 0, "LiJaB");
279
286
dpd_contract442(&T2, &L2, &D, 0, 0, -1.0, 1.0);
280
287
dpd_buf4_close(&L2);
281
288
dpd_buf4_close(&T2);
282
289
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
283
dpd_file2_init(&L1, CC_OEI, 0, 2, 3, "Lia");
290
dpd_file2_init(&L1, CC_GLG, 0, 2, 3, "Lia");
284
291
dpd_contract222(&T1, &L1, &D, 0, 0, -1.0, 1.0);
285
292
dpd_file2_close(&L1);
286
293
dpd_file2_close(&T1);
287
294
trace += dpd_file2_trace(&D);
288
295
dpd_file2_close(&D);
290
dpd_file2_init(&D, CC_OEI, 0, 1, 1, "DAB");
291
dpd_buf4_init(&L2, CC_LAMPS, 0, 2, 5, 2, 7, 0, "LIJAB");
297
dpd_file2_init(&D, CC_OEI, 0, 1, 1, rho_params.DAB_lbl);
298
dpd_buf4_init(&L2, CC_GLG, 0, 2, 5, 2, 7, 0, "LIJAB");
292
299
dpd_buf4_init(&T2, CC_TAMPS, 0, 2, 5, 2, 7, 0, "tIJAB");
293
300
dpd_contract442(&L2, &T2, &D, 3, 3, 1.0, 0.0);
294
301
dpd_buf4_close(&T2);
295
302
dpd_buf4_close(&L2);
296
dpd_buf4_init(&L2, CC_LAMPS, 0, 23, 29, 23, 29, 0, "LiJaB");
303
dpd_buf4_init(&L2, CC_GLG, 0, 23, 29, 23, 29, 0, "LiJaB");
297
304
dpd_buf4_init(&T2, CC_TAMPS, 0, 23, 29, 23, 29, 0, "tiJaB");
298
305
dpd_contract442(&L2, &T2, &D, 3, 3, 1.0, 1.0);
299
306
dpd_buf4_close(&L2);
300
307
dpd_buf4_close(&T2);
301
dpd_file2_init(&L1, CC_OEI, 0, 0, 1, "LIA");
308
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "LIA");
302
309
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
303
310
dpd_contract222(&L1, &T1, &D, 1, 1, 1.0, 1.0);
304
311
dpd_file2_close(&L1);
306
313
trace += dpd_file2_trace(&D);
307
314
dpd_file2_close(&D);
309
dpd_file2_init(&D, CC_OEI, 0, 3, 3, "Dab");
310
dpd_buf4_init(&L2, CC_LAMPS, 0, 12, 15, 12, 17, 0, "Lijab");
316
dpd_file2_init(&D, CC_OEI, 0, 3, 3, rho_params.Dab_lbl);
317
dpd_buf4_init(&L2, CC_GLG, 0, 12, 15, 12, 17, 0, "Lijab");
311
318
dpd_buf4_init(&T2, CC_TAMPS, 0, 12, 15, 12, 17, 0, "tijab");
312
319
dpd_contract442(&L2, &T2, &D, 3, 3, 1.0, 0.0);
313
320
dpd_buf4_close(&T2);
314
321
dpd_buf4_close(&L2);
315
dpd_buf4_init(&L2, CC_LAMPS, 0, 22, 28, 22, 28, 0, "LIjAb");
322
dpd_buf4_init(&L2, CC_GLG, 0, 22, 28, 22, 28, 0, "LIjAb");
316
323
dpd_buf4_init(&T2, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tIjAb");
317
324
dpd_contract442(&L2, &T2, &D, 3, 3, 1.0, 1.0);
318
325
dpd_buf4_close(&L2);
319
326
dpd_buf4_close(&T2);
320
dpd_file2_init(&L1, CC_OEI, 0, 2, 3, "Lia");
327
dpd_file2_init(&L1, CC_GLG, 0, 2, 3, "Lia");
321
328
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
322
329
dpd_contract222(&L1, &T1, &D, 1, 1, 1.0, 1.0);
323
330
dpd_file2_close(&L1);
325
332
trace += dpd_file2_trace(&D);
326
333
dpd_file2_close(&D);
328
fprintf(outfile, "\n\tTrace of onepdm = %20.15f\n", trace);
330
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
331
dpd_file2_copy(&T1, CC_OEI, "DIA");
332
dpd_file2_close(&T1);
333
dpd_file2_init(&D, CC_OEI, 0, 0, 1, "DIA");
335
/*fprintf(outfile, "\n\tTrace of onepdm = %20.15f\n", trace);*/
337
/* This term is * L0 = 0 for excited states */
338
if (rho_params.L_ground) {
339
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
340
dpd_file2_copy(&T1, CC_OEI, rho_params.DIA_lbl);
341
dpd_file2_close(&T1);
343
dpd_file2_init(&D, CC_OEI, 0, 0, 1, rho_params.DIA_lbl);
334
345
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 2, 7, 0, "tIJAB");
335
dpd_file2_init(&L1, CC_OEI, 0, 0, 1, "LIA");
346
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "LIA");
336
347
dpd_dot24(&L1, &T2, &D, 0, 0, 1.0, 1.0);
337
348
dpd_file2_close(&L1);
338
349
dpd_buf4_close(&T2);
339
350
dpd_buf4_init(&T2, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tIjAb");
340
dpd_file2_init(&L1, CC_OEI, 0, 2, 3, "Lia");
351
dpd_file2_init(&L1, CC_GLG, 0, 2, 3, "Lia");
341
352
dpd_dot24(&L1, &T2, &D, 0, 0, 1.0, 1.0);
342
353
dpd_file2_close(&L1);
343
354
dpd_buf4_close(&T2);
344
dpd_file2_init(&L1, CC_OEI, 0, 0, 1, "LIA");
355
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "LIA");
345
356
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
346
357
dpd_file2_init(&Z, CC_TMP0, 0, 0, 0, "Z(I,M)");
347
358
dpd_contract222(&T1, &L1, &Z, 0, 0, 1.0, 0.0);
351
362
dpd_file2_close(&Z);
352
363
/* D(I,A) << L2(MN,EF) T2(IN,EF) T(M,A) + L2(Mn,Ef) T2(In,Ef) T(M,A) */
353
364
dpd_file2_init(&Z, CC_TMP0, 0, 0, 0, "Z(I,M)");
354
dpd_buf4_init(&L2, CC_LAMPS, 0, 0, 7, 2, 7, 0, "LIJAB");
365
dpd_buf4_init(&L2, CC_GLG, 0, 0, 7, 2, 7, 0, "LIJAB");
355
366
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 7, 2, 7, 0, "tIJAB");
356
367
dpd_contract442(&T2, &L2, &Z, 0, 0, 1.0, 0.0);
357
368
dpd_buf4_close(&T2);
358
369
dpd_buf4_close(&L2);
359
dpd_buf4_init(&L2, CC_LAMPS, 0, 22, 28, 22, 28, 0, "LIjAb");
370
dpd_buf4_init(&L2, CC_GLG, 0, 22, 28, 22, 28, 0, "LIjAb");
360
371
dpd_buf4_init(&T2, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tIjAb");
361
372
dpd_contract442(&T2, &L2, &Z, 0, 0, 1.0, 1.0);
362
373
dpd_buf4_close(&T2);
368
379
/* T2(MN,AF) L2(MN,EF) T(I,E) + T2(Mn,Af) L2(Mn,Ef) T(I,E) */
369
380
dpd_file2_init(&Z, CC_TMP0, 0, 1, 1, "Z(A,E)");
370
381
dpd_buf4_init(&T2, CC_TAMPS, 0, 2, 5, 2, 7, 0, "tIJAB");
371
dpd_buf4_init(&L2, CC_LAMPS, 0, 2, 5, 2, 7, 0, "LIJAB");
382
dpd_buf4_init(&L2, CC_GLG, 0, 2, 5, 2, 7, 0, "LIJAB");
372
383
dpd_contract442(&T2, &L2, &Z, 2, 2, 1.0, 0.0);
373
384
dpd_buf4_close(&L2);
374
385
dpd_buf4_close(&T2);
375
386
dpd_buf4_init(&T2, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tIjAb");
376
dpd_buf4_init(&L2, CC_LAMPS, 0, 22, 28, 22, 28, 0, "LIjAb");
387
dpd_buf4_init(&L2, CC_GLG, 0, 22, 28, 22, 28, 0, "LIjAb");
377
388
dpd_contract442(&T2, &L2, &Z, 2, 2, 1.0, 1.0);
378
389
dpd_buf4_close(&L2);
379
390
dpd_buf4_close(&T2);
383
394
dpd_file2_close(&Z);
384
395
dpd_file2_close(&D);
386
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
387
dpd_file2_copy(&T1, CC_OEI, "Dia");
388
dpd_file2_close(&T1);
389
dpd_file2_init(&D, CC_OEI, 0, 2, 3, "Dia");
397
/* This term is * L0 = 0 for excited states */
398
if (rho_params.L_ground) {
399
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
400
dpd_file2_copy(&T1, CC_OEI, rho_params.Dia_lbl);
401
dpd_file2_close(&T1);
403
dpd_file2_init(&D, CC_OEI, 0, 2, 3, rho_params.Dia_lbl);
390
405
dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 15, 12, 17, 0, "tijab");
391
dpd_file2_init(&L1, CC_OEI, 0, 2, 3, "Lia");
406
dpd_file2_init(&L1, CC_GLG, 0, 2, 3, "Lia");
392
407
dpd_dot24(&L1, &T2, &D, 0, 0, 1.0, 1.0);
393
408
dpd_file2_close(&L1);
394
409
dpd_buf4_close(&T2);
395
410
dpd_buf4_init(&T2, CC_TAMPS, 0, 23, 29, 23, 29, 0, "tiJaB");
396
dpd_file2_init(&L1, CC_OEI, 0, 0, 1, "LIA");
411
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "LIA");
397
412
dpd_dot24(&L1, &T2, &D, 0, 0, 1.0, 1.0);
398
413
dpd_file2_close(&L1);
399
414
dpd_buf4_close(&T2);
400
dpd_file2_init(&L1, CC_OEI, 0, 2, 3, "Lia");
415
dpd_file2_init(&L1, CC_GLG, 0, 2, 3, "Lia");
401
416
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
402
417
dpd_file2_init(&Z, CC_TMP0, 0, 2, 2, "Z(i,m)");
403
418
dpd_contract222(&T1, &L1, &Z, 0, 0, 1.0, 0.0);
438
453
dpd_file2_close(&D);
440
455
/* Note that these blocks are still stored occ/vir */
441
dpd_file2_init(&L1, CC_OEI, 0, 0, 1, "LIA");
442
dpd_file2_copy(&L1, CC_OEI, "DAI");
443
dpd_file2_close(&L1);
445
dpd_file2_init(&L1, CC_OEI, 0, 2, 3, "Lia");
446
dpd_file2_copy(&L1, CC_OEI, "Dai");
447
dpd_file2_close(&L1);
456
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "LIA");
457
dpd_file2_copy(&L1, CC_OEI, rho_params.DAI_lbl);
458
dpd_file2_close(&L1);
460
dpd_file2_init(&L1, CC_GLG, 0, 2, 3, "Lia");
461
dpd_file2_copy(&L1, CC_OEI, rho_params.Dai_lbl);
462
dpd_file2_close(&L1);
466
dpd_file2_init(&D, CC_OEI, 0, 0, 1, rho_params.DIA_lbl);
467
dot_IA = dpd_file2_dot_self(&D);
469
dpd_file2_init(&D, CC_OEI, 0, 2, 3, rho_params.Dia_lbl);
470
dot_ia = dpd_file2_dot_self(&D);
472
dpd_file2_init(&D, CC_OEI, 0, 0, 1, rho_params.DAI_lbl);
473
dot_AI = dpd_file2_dot_self(&D);
475
dpd_file2_init(&D, CC_OEI, 0, 2, 3, rho_params.Dai_lbl);
476
dot_ai = dpd_file2_dot_self(&D);
478
fprintf(outfile,"\tOverlaps of onepdm after ground-state parts added.\n");
479
fprintf(outfile,"\t<DIA|DIA> = %15.10lf <Dia|Dia> = %15.10lf\n", dot_IA, dot_ia);
480
fprintf(outfile,"\t<DAI|DAI> = %15.10lf <Dai|Dai> = %15.10lf\n", dot_AI, dot_ai);
481
fprintf(outfile,"\t<Dpq|Dqp> = %15.10lf\n", dot_IA+dot_ia+dot_AI+dot_ai);