3
\brief Enter brief description of file here
7
#include <libdpd/dpd.h>
12
namespace psi{ namespace mp2{
16
void rhf_sf_opdm(void);
17
void uhf_sf_opdm(void);
22
if(params.ref == 0) rhf_opdm();
23
else if(params.ref == 2) uhf_sf_opdm();
26
if(params.ref == 0) rhf_opdm();
27
else if(params.ref == 2) uhf_opdm();
41
if(params.gradient) alpha = 1.0;
44
dpd_file2_init(&DIJ, CC_OEI, 0, 0, 0, "DIJ");
45
dpd_buf4_init(&T2A, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tIjAb");
46
dpd_buf4_init(&T2B, CC_TAMPS, 0, 0, 5, 0, 5, 0, "2 tIjAb - tIjBa");
47
dpd_contract442(&T2A, &T2B, &DIJ, 0, 0, -alpha, 0);
50
trace_IJ = dpd_file2_trace(&DIJ);
51
if(params.gradient) dpd_file2_copy(&DIJ, CC_OEI, "Dij");
52
dpd_file2_close(&DIJ);
54
dpd_file2_init(&DAB, CC_OEI, 0, 1, 1, "DAB");
55
dpd_file2_scm(&DAB,0.0);
56
dpd_buf4_init(&T2A, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tIjAb");
57
dpd_buf4_init(&T2B, CC_TAMPS, 0, 0, 5, 0, 5, 0, "2 tIjAb - tIjBa");
58
dpd_contract442(&T2A, &T2B, &DAB, 3, 3, alpha, 0);
61
trace_AB = dpd_file2_trace(&DAB);
62
if(params.gradient) dpd_file2_copy(&DAB, CC_OEI, "Dab");
63
dpd_file2_close(&DAB);
66
/* zero out Dia DIA Dai DAI */
67
dpd_file2_init(&D, CC_OEI, 0, 0, 1, "DAI");
68
dpd_file2_scm(&D,0.0);
70
dpd_file2_init(&D, CC_OEI, 0, 0, 1, "Dai");
71
dpd_file2_scm(&D,0.0);
73
dpd_file2_init(&D, CC_OEI, 0, 0, 1, "DIA");
74
dpd_file2_scm(&D,0.0);
76
dpd_file2_init(&D, CC_OEI, 0, 0, 1, "Dia");
77
dpd_file2_scm(&D,0.0);
81
fprintf(outfile, "\n\tTrace of OPDM(2)_IJ = %20.15f\n", trace_IJ);
82
fprintf(outfile, "\n\tTrace of OPDM(2)_AB = %20.15f\n", trace_AB);
84
fprintf(outfile, "\tTrace of OPDM(2) = %20.15f\n", trace_IJ+trace_AB);
100
if(params.semicanonical) {
101
dpd_file2_init(&D, CC_OEI, 0, 0, 0, "DIJ");
102
dpd_file2_init(&T1A, CC_OEI, 0, 0, 1, "tIA");
103
dpd_file2_init(&T1B, CC_OEI, 0, 0, 1, "tIA");
104
dpd_contract222(&T1A, &T1B, &D, 0, 0, -1, 0);
105
dpd_file2_close(&T1A);
106
dpd_file2_close(&T1B);
108
dpd_buf4_init(&T2A, CC_TAMPS, 0, 0, 7, 2, 7, 0, "tIJAB");
109
dpd_buf4_init(&T2B, CC_TAMPS, 0, 0, 7, 2, 7, 0, "tIJAB");
110
dpd_contract442(&T2A, &T2B, &D, 0, 0, -1, 1);
111
dpd_buf4_close(&T2A);
112
dpd_buf4_close(&T2B);
115
dpd_file2_init(&D, CC_OEI, 0, 0, 0, "DIJ");
116
dpd_buf4_init(&T2A, CC_TAMPS, 0, 0, 7, 2, 7, 0, "tIJAB");
117
dpd_buf4_init(&T2B, CC_TAMPS, 0, 0, 7, 2, 7, 0, "tIJAB");
118
dpd_contract442(&T2A, &T2B, &D, 0, 0, -1, 0);
119
dpd_buf4_close(&T2A);
120
dpd_buf4_close(&T2B);
123
dpd_buf4_init(&T2A, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tIjAb");
124
dpd_buf4_init(&T2B, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tIjAb");
125
dpd_contract442(&T2A, &T2B, &D, 0, 0, -1, 1);
126
traceA += dpd_file2_trace(&D);
127
dpd_buf4_close(&T2A);
128
dpd_buf4_close(&T2B);
131
if(params.semicanonical) {
132
dpd_file2_init(&D, CC_OEI, 0, 2, 2, "Dij");
133
dpd_file2_init(&T1A, CC_OEI, 0, 2, 3, "tia");
134
dpd_file2_init(&T1B, CC_OEI, 0, 2, 3, "tia");
135
dpd_contract222(&T1A, &T1B, &D, 0, 0, -1, 0);
136
dpd_file2_close(&T1A);
137
dpd_file2_close(&T1B);
139
dpd_buf4_init(&T2A, CC_TAMPS, 0, 10, 17, 12, 17, 0, "tijab");
140
dpd_buf4_init(&T2B, CC_TAMPS, 0, 10, 17, 12, 17, 0, "tijab");
141
dpd_contract442(&T2A, &T2B, &D, 0, 0, -1, 1);
142
dpd_buf4_close(&T2A);
143
dpd_buf4_close(&T2B);
146
dpd_file2_init(&D, CC_OEI, 0, 2, 2, "Dij");
147
dpd_buf4_init(&T2A, CC_TAMPS, 0, 10, 17, 12, 17, 0, "tijab");
148
dpd_buf4_init(&T2B, CC_TAMPS, 0, 10, 17, 12, 17, 0, "tijab");
149
dpd_contract442(&T2A, &T2B, &D, 0, 0, -1, 0);
150
dpd_buf4_close(&T2A);
151
dpd_buf4_close(&T2B);
154
dpd_buf4_init(&T2A, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tIjAb");
155
dpd_buf4_init(&T2B, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tIjAb");
156
dpd_contract442(&T2A, &T2B, &D, 1, 1, -1, 1);
157
traceB += dpd_file2_trace(&D);
158
dpd_buf4_close(&T2A);
159
dpd_buf4_close(&T2B);
162
if(params.semicanonical) {
163
dpd_file2_init(&D, CC_OEI, 0, 1, 1, "DAB");
164
dpd_file2_init(&T1A, CC_OEI, 0, 0, 1, "tIA");
165
dpd_file2_init(&T1B, CC_OEI, 0, 0, 1, "tIA");
166
dpd_contract222(&T1A, &T1B, &D, 1, 1, 1, 0);
167
dpd_file2_close(&T1A);
168
dpd_file2_close(&T1B);
170
dpd_buf4_init(&T2A, CC_TAMPS, 0, 2, 5, 2, 7, 0, "tIJAB");
171
dpd_buf4_init(&T2B, CC_TAMPS, 0, 2, 5, 2, 7, 0, "tIJAB");
172
dpd_contract442(&T2A, &T2B, &D, 3, 3, 1, 1);
173
dpd_buf4_close(&T2A);
174
dpd_buf4_close(&T2B);
177
dpd_file2_init(&D, CC_OEI, 0, 1, 1, "DAB");
178
dpd_buf4_init(&T2A, CC_TAMPS, 0, 2, 5, 2, 7, 0, "tIJAB");
179
dpd_buf4_init(&T2B, CC_TAMPS, 0, 2, 5, 2, 7, 0, "tIJAB");
180
dpd_contract442(&T2A, &T2B, &D, 3, 3, 1, 0);
181
dpd_buf4_close(&T2A);
182
dpd_buf4_close(&T2B);
185
dpd_buf4_init(&T2A, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tIjAb");
186
dpd_buf4_init(&T2B, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tIjAb");
187
dpd_contract442(&T2A, &T2B, &D, 2, 2, 1, 1);
188
traceA += dpd_file2_trace(&D);
189
dpd_buf4_close(&T2A);
190
dpd_buf4_close(&T2B);
193
if(params.semicanonical) {
194
dpd_file2_init(&D, CC_OEI, 0, 3, 3, "Dab");
195
dpd_file2_init(&T1A, CC_OEI, 0, 2, 3, "tia");
196
dpd_file2_init(&T1B, CC_OEI, 0, 2, 3, "tia");
197
dpd_contract222(&T1A, &T1B, &D, 1, 1, 1, 0);
198
dpd_file2_close(&T1A);
199
dpd_file2_close(&T1B);
201
dpd_buf4_init(&T2A, CC_TAMPS, 0, 12, 15, 12, 17, 0, "tijab");
202
dpd_buf4_init(&T2B, CC_TAMPS, 0, 12, 15, 12, 17, 0, "tijab");
203
dpd_contract442(&T2A, &T2B, &D, 3, 3, 1, 1);
204
dpd_buf4_close(&T2A);
205
dpd_buf4_close(&T2B);
208
dpd_file2_init(&D, CC_OEI, 0, 3, 3, "Dab");
209
dpd_buf4_init(&T2A, CC_TAMPS, 0, 12, 15, 12, 17, 0, "tijab");
210
dpd_buf4_init(&T2B, CC_TAMPS, 0, 12, 15, 12, 17, 0, "tijab");
211
dpd_contract442(&T2A, &T2B, &D, 3, 3, 1, 0);
212
dpd_buf4_close(&T2A);
213
dpd_buf4_close(&T2B);
216
dpd_buf4_init(&T2A, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tIjAb");
217
dpd_buf4_init(&T2B, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tIjAb");
218
dpd_contract442(&T2A, &T2B, &D, 3, 3, 1, 1);
219
traceB += dpd_file2_trace(&D);
220
dpd_buf4_close(&T2A);
221
dpd_buf4_close(&T2B);
225
fprintf(outfile,"\n");
226
fprintf(outfile,"\tTrace of Alpha OPDM(2) = %20.15f\n", fabs(traceA));
227
fprintf(outfile,"\tTrace of Beta OPDM(2) = %20.15f\n", fabs(traceB));
234
/* This code isn't used anymore, and if you try to resurrect it, be sure to
235
note that the contract244 calls that point to the same file4 are not safe
236
in the dpd_cache structure. -TDC, 11/21/08
238
void rhf_sf_opdm(void)
242
double trace_IJ = 0.0;
243
double trace_ij = 0.0;
244
double trace_AB = 0.0;
245
double trace_ab = 0.0;
247
dpd_buf4_init(&TA, CC_TAMPS, 0, 2, 7, 2, 7, 0, "tIJAB");
248
dpd_buf4_copy(&TA, CC_TMP0, "tIJAB");
250
dpd_buf4_init(&TA, CC_TAMPS, 0, 2, 7, 2, 7, 0, "tijab");
251
dpd_buf4_copy(&TA, CC_TMP0, "tijab");
253
dpd_buf4_init(&TA, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tIjAb");
254
dpd_buf4_copy(&TA, CC_TMP0, "tIjAb");
256
dpd_buf4_init(&TA, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tiJaB");
257
dpd_buf4_copy(&TA, CC_TMP0, "tiJaB");
260
dpd_file2_init(&D, CC_OEI, 0, 0, 0, "DIJ");
261
dpd_file2_scm(&D, 0.0);
262
dpd_buf4_init(&TA, CC_TAMPS, 0, 0, 7, 2, 7, 0, "tIJAB");
263
dpd_buf4_init(&TB, CC_TAMPS, 0, 0, 7, 2, 7, 0, "tIJAB");
264
dpd_contract442(&TA, &TB, &D, 0, 0, -1.0, 0.0);
268
dpd_buf4_init(&TA, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tIjAb");
269
dpd_buf4_init(&TB, CC_TMP0, 0, 0, 5, 0, 5, 0, "tIjAb");
270
dpd_contract442(&TA, &TB, &D, 0, 0, -1.0, 1.0);
273
trace_IJ += dpd_file2_trace(&D);
276
dpd_file2_init(&D, CC_OEI, 0, 0, 0, "Dij");
277
dpd_file2_scm(&D, 0.0);
278
dpd_buf4_init(&TA, CC_TAMPS, 0, 0, 7, 2, 7, 0, "tijab");
279
dpd_buf4_init(&TB, CC_TAMPS, 0, 0, 7, 2, 7, 0, "tijab");
280
dpd_contract442(&TA, &TB, &D, 0, 0, -1.0, 0.0);
284
dpd_buf4_init(&TA, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tiJaB");
285
dpd_buf4_init(&TB, CC_TMP0, 0, 0, 5, 0, 5, 0, "tiJaB");
286
dpd_contract442(&TA, &TB, &D, 0, 0, -1.0, 1.0);
289
trace_ij += dpd_file2_trace(&D);
292
dpd_file2_init(&D, CC_OEI, 0, 1, 1, "DAB");
293
dpd_file2_scm(&D, 0.0);
294
dpd_buf4_init(&TA, CC_TAMPS, 0, 2, 5, 2, 7, 0, "tIJAB");
295
dpd_buf4_init(&TB, CC_TAMPS, 0, 2, 5, 2, 7, 0, "tIJAB");
296
dpd_contract442(&TA, &TB, &D, 3, 3, 1.0, 0.0);
300
dpd_buf4_init(&TA, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tiJaB");
301
dpd_buf4_init(&TB, CC_TMP0, 0, 0, 5, 0, 5, 0, "tiJaB");
302
dpd_contract442(&TA, &TB, &D, 3, 3, 1.0, 1.0);
305
trace_AB += dpd_file2_trace(&D);
308
dpd_file2_init(&D, CC_OEI, 0, 1, 1, "Dab");
309
dpd_file2_scm(&D, 0.0);
310
dpd_buf4_init(&TA, CC_TAMPS, 0, 2, 5, 2, 7, 0, "tijab");
311
dpd_buf4_init(&TB, CC_TAMPS, 0, 2, 5, 2, 7, 0, "tijab");
312
dpd_contract442(&TA, &TB, &D, 3, 3, 1.0, 0.0);
316
dpd_buf4_init(&TA, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tIjAb");
317
dpd_buf4_init(&TB, CC_TMP0, 0, 0, 5, 0, 5, 0, "tIjAb");
318
dpd_contract442(&TA, &TB, &D, 3, 3, 1.0, 1.0);
321
trace_ab += dpd_file2_trace(&D);
324
/* zero out Dia DIA Dai DAI */
325
dpd_file2_init(&D, CC_OEI, 0, 0, 1, "DAI");
326
dpd_file2_scm(&D,0.0);
328
dpd_file2_init(&D, CC_OEI, 0, 0, 1, "Dai");
329
dpd_file2_scm(&D,0.0);
331
dpd_file2_init(&D, CC_OEI, 0, 0, 1, "DIA");
332
dpd_file2_scm(&D,0.0);
334
dpd_file2_init(&D, CC_OEI, 0, 0, 1, "Dia");
335
dpd_file2_scm(&D,0.0);
339
fprintf(outfile, "\n\tTrace of IJ onepdm = %20.15f\n", trace_IJ);
340
fprintf(outfile, "\tTrace of ij onepdm = %20.15f\n", trace_ij);
341
fprintf(outfile, "\tTrace of oo onepdm = %20.15f\n", trace_IJ+trace_ij);
342
fprintf(outfile, "\tTrace of AB onepdm = %20.15f\n", trace_AB);
343
fprintf(outfile, "\tTrace of ab onepdm = %20.15f\n", trace_ab);
344
fprintf(outfile, "\tTrace of vv onepdm = %20.15f\n", (trace_AB+trace_ab));
345
fprintf(outfile, "\tTrace of total onepdm = %20.15f\n", trace_IJ+trace_ij+trace_AB+trace_ab);
348
void uhf_sf_opdm(void)
350
fprintf(outfile,"\n\tNot yet yo! -MLA\n");
351
exit(PSI_RETURN_FAILURE);
354
}} /* End namespaces */