1
#include <libmoinfo/libmoinfo.h>
6
#include <libutil/libutil.h>
10
namespace psi{ namespace psimrcc{
14
void MP2_CCSD::build_F_intermediates()
16
build_F_ae_intermediates();
17
build_F_AE_intermediates();
19
build_F_mi_intermediates();
20
build_F_MI_intermediates();
22
build_F_me_intermediates();
23
build_F_ME_intermediates();
25
build_F_prime_ae_intermediates();
26
build_F_prime_AE_intermediates();
28
build_F_prime_mi_intermediates();
29
build_F_prime_MI_intermediates();
32
void MP2_CCSD::build_offdiagonal_F()
34
blas->solve("offdiagonal_F[v][v]{u} = fock[v][v]{u}");
35
blas->solve_zero_two_diagonal("offdiagonal_F[v][v]{u}");
37
blas->solve("offdiagonal_F[o][o]{u} = fock[o][o]{u}");
38
blas->solve_zero_two_diagonal("offdiagonal_F[o][o]{u}");
41
void MP2_CCSD::build_F_ae_intermediates()
45
fprintf(outfile,"\n\tBuilding the F_ae Intermediates ...");
48
// Add the VV Fock matrix with the diagonal terms zeroed
49
blas->solve("F_ae[v][v]{u} = fock[v][v]{u}");
50
blas->solve_zero_two_diagonal("F_ae[v][v]{u}");
52
blas->solve("F_ae[v][v]{u} += -1/2 t1[o][v]{u} 1@1 fock[o][v]{u}");
54
blas->solve("F_ae[v][v]{u} += #12# ([ov]:[vv]) 1@1 t1[ov]{u}");
55
blas->solve("F_ae[v][v]{u} += #12# ([ov]|[vv]) 1@1 t1[OV]{u} ");
57
blas->solve("F_ae[v][v]{u} += -1/2 tau2[v][voo]{u} 2@2 <[v]:[voo]>");
58
blas->solve("F_ae[v][v]{u} += - tau2[v][VoO]{u} 2@2 <[v]|[voo]>");
60
blas->reduce_spaces("F_ae[a][v]{u}","F_ae[v][v]{u}");
63
blas->print("F_ae[v][v]{u}");
66
fprintf(outfile," done. Timing %20.6f s",timer.get());
71
void MP2_CCSD::build_F_AE_intermediates()
75
fprintf(outfile,"\n\tBuilding the F_AE Intermediates ...");
78
// Add the VV Fock matrix with the diagonal terms zeroed
79
blas->solve("F_AE[V][V]{u} = fock[V][V]{u}");
81
blas->solve_zero_two_diagonal("F_AE[V][V]{u}");
83
blas->solve("F_AE[V][V]{u} += -1/2 t1[O][V]{u} 1@1 fock[O][V]{u}");
85
blas->solve("F_AE[V][V]{u} += #12# ([ov]:[vv]) 1@1 t1[OV]{u}");
86
blas->solve("F_AE[V][V]{u} += #12# ([ov]|[vv]) 1@1 t1[ov]{u} ");
88
blas->solve("F_AE[V][V]{u} += -1/2 tau2[V][VOO]{u} 2@2 <[v]:[voo]>");
89
blas->solve("F_AE[V][V]{u} += - tau2[V][vOo]{u} 2@2 <[v]|[voo]>");
91
blas->reduce_spaces("F_AE[A][V]{u}","F_AE[V][V]{u}");
93
DEBUGGING(3,blas->print("F_AE[V][V]{u}"););
96
fprintf(outfile," done. Timing %20.6f s",timer.get());
101
void MP2_CCSD::build_F_mi_intermediates()
105
fprintf(outfile,"\n\tBuilding the F_mi Intermediates ...");
109
// Add the VV Fock matrix with the diagonal terms zeroed
110
blas->solve("F_mi[o][o]{u} = fock[o][o]{u}");
111
blas->solve_zero_two_diagonal("F_mi[o][o]{u}");
113
blas->solve("F_mi[o][o]{u} += 1/2 fock[o][v]{u} 2@2 t1[o][v]{u}");
115
blas->solve("F_mi[o][o]{u} += #12# ([oo]:[ov]) 2@1 t1[ov]{u}");
116
blas->solve("F_mi[o][o]{u} += #12# ([oo]|[ov]) 2@1 t1[OV]{u} ");
118
blas->solve("F_mi[o][o]{u} += 1/2 <[o]:[ovv]> 2@2 tau2[o][ovv]{u}");
119
blas->solve("F_mi[o][o]{u} += <[o]|[ovv]> 2@2 tau2[o][OvV]{u} ");
122
blas->print("F_mi[o][o]{u}"););
125
fprintf(outfile," done. Timing %20.6f s",timer.get());
130
void MP2_CCSD::build_F_MI_intermediates()
134
fprintf(outfile,"\n\tBuilding the F_MI Intermediates ...");
138
// Add the VV Fock matrix with the diagonal terms zeroed
139
blas->solve("F_MI[O][O]{u} = fock[O][O]{u}");
141
blas->solve_zero_two_diagonal("F_MI[O][O]{u}");
143
blas->solve("F_MI[O][O]{u} += 1/2 fock[O][V]{u} 2@2 t1[O][V]{u}");
145
blas->solve("F_MI[O][O]{u} += #12# ([oo]:[ov]) 2@1 t1[OV]{u}");
146
blas->solve("F_MI[O][O]{u} += #12# ([oo]|[ov]) 2@1 t1[ov]{u} ");
148
blas->solve("F_MI[O][O]{u} += 1/2 <[o]:[ovv]> 2@2 tau2[O][OVV]{u}");
149
blas->solve("F_MI[O][O]{u} += <[o]|[ovv]> 2@2 tau2[O][oVv]{u} ");
153
DEBUGGING(3,blas->print("F_MI[O][O]{u}"););
156
fprintf(outfile," done. Timing %20.6f s",timer.get());
161
void MP2_CCSD::build_F_prime_mi_intermediates()
165
fprintf(outfile,"\n\tBuilding the F'_mi Intermediates ...");
168
blas->solve("F'_mi[o][o]{u} = F_mi[o][o]{u}");
169
blas->solve("F'_mi[o][o]{u} += #12# 1/2 F_me[o][v]{u} 2@2 t1[o][v]{u}");
170
blas->reduce_spaces("F'_mi[o][a]{u}","F'_mi[o][o]{u}");
173
fprintf(outfile," done. Timing %20.6f s",timer.get());
178
void MP2_CCSD::build_F_prime_MI_intermediates()
182
fprintf(outfile,"\n\tBuilding the F'_MI Intermediates ...");
186
blas->reduce_spaces("F'_MI[O][A]{u}","F_MI[O][O]{u}");
187
blas->solve("F'_MI[O][A]{u} += #12# 1/2 F_ME[O][V]{u} 2@2 t1_OV[A][V]{u}");
191
DEBUGGING(3,blas->print("F'_MI[O][A]{u}"););
194
fprintf(outfile," done. Timing %20.6f s",timer.get());
199
void MP2_CCSD::build_F_me_intermediates()
203
fprintf(outfile,"\n\tBuilding the F_me Intermediates ...");
206
// Add the VV Fock matrix with the diagonal terms zeroed
207
blas->solve("F_me[o][v]{u} = fock[o][v]{u}");
209
blas->solve("F_me[o][v]{u} += #12# ([ov]:[ov]) 2@1 t1[ov]{u}");
210
blas->solve("F_me[o][v]{u} += #12# ([ov]|[ov]) 2@1 t1[OV]{u} ");
212
blas->solve("F_me[ov]{u} = #12# F_me[o][v]{u}");
214
DEBUGGING(3,blas->print("F_me[o][v]{u}"););
217
fprintf(outfile," done. Timing %20.6f s",timer.get());
222
void MP2_CCSD::build_F_ME_intermediates()
226
fprintf(outfile,"\n\tBuilding the F_ME Intermediates ...");
229
// Add the VV Fock matrix with the diagonal terms zeroed
230
blas->solve("F_ME[O][V]{u} = fock[O][V]{u}");
232
blas->solve("F_ME[O][V]{u} += #12# ([ov]:[ov]) 2@1 t1[OV]{u}");
233
blas->solve("F_ME[O][V]{u} += #12# ([ov]|[ov]) 2@1 t1[ov]{u} ");
235
blas->solve("F_ME[OV]{u} = #12# F_ME[O][V]{u}");
237
DEBUGGING(3,blas->print("F_ME[O][V]{u}"););
240
fprintf(outfile," done. Timing %20.6f s",timer.get());
245
void MP2_CCSD::build_F_prime_ae_intermediates()
249
fprintf(outfile,"\n\tBuilding the F'_ae Intermediates ...");
252
// Closed-Shell + Open-Shell Spin-Adapted Form
253
// Add the VV Fock matrix with the diagonal terms zeroed
254
// blas->solve("F'_ae[a][v]{u} = F_ae[a][v]{u}");
255
// blas->solve("F'_ae[a][v]{u} += #12# -1/2 t1_ov[o][a]{u} 1@1 F_me[o][v]{u}");
257
blas->solve("F'_ae[v][v]{u} = F_ae[v][v]{u}");
258
blas->solve("F'_ae[v][v]{u} += #12# -1/2 t1[o][v]{u} 1@1 F_me[o][v]{u}");
260
blas->reduce_spaces("F'_ae[a][v]{u}","F'_ae[v][v]{u}");
263
blas->print("F'_ae[a][v]{u}"););
266
fprintf(outfile," done. Timing %20.6f s",timer.get());
271
void MP2_CCSD::build_F_prime_AE_intermediates()
275
fprintf(outfile,"\n\tBuilding the F'_AE Intermediates ...");
279
// Add the VV Fock matrix with the diagonal terms zeroed
280
blas->solve("F'_AE[A][V]{u} = F_AE[A][V]{u}");
281
blas->solve("F'_AE[A][V]{u} += #12# -1/2 t1_OV[O][A]{u} 1@1 F_ME[O][V]{u}");
283
DEBUGGING(3,blas->print("F'_AE[A][V]{u}"););
286
fprintf(outfile," done. Timing %20.6f s",timer.get());
291
}} /* End Namespaces */