6
/* This function computes the H-bar doubles-singles block contribution
7
of Wnmje to a Sigma vector stored at Sigma plus 'i' */
9
void WnmjeDS(int i, int C_irr) {
10
dpdfile2 CME, Cme, XNJ, Xnj;
11
dpdbuf4 SIJAB, Sijab, SIjAb, Z;
12
dpdbuf4 WMNIE, Wmnie, WMnIe, WmNiE, WM, WP, W;
13
dpdbuf4 TIJAB, TIjAb, Tijab;
14
char CME_lbl[32], Cme_lbl[32], SIJAB_lbl[32], Sijab_lbl[32], SIjAb_lbl[32];
17
if (params.eom_ref == 0) { /* RHF */
18
sprintf(CME_lbl, "%s %d", "CME", i);
19
sprintf(SIjAb_lbl, "%s %d", "SIjAb", i);
21
/* Form XNJ intermediates */
22
dpd_file2_init(&XNJ, EOM_TMP, C_irr, 0, 0, "XNJ");
23
dpd_buf4_init(&W, CC_HBAR, H_IRR, 0, 11, 0, 11, 0, "2WMnIe - WnMIe");
24
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
25
dpd_dot23(&CME, &W, &XNJ, 0, 0, 1.0, 0.0);
26
dpd_file2_close(&CME);
29
dpd_buf4_init(&Z, EOM_TMP, C_irr, 0, 5, 0, 5, 0, "WnmjeDS Z(Ij,Ab)");
30
dpd_buf4_init(&TIjAb, CC_TAMPS, H_IRR, 0, 5, 0, 5, 0, "tIjAb");
31
dpd_contract244(&XNJ, &TIjAb, &Z, 0, 0, 0, 1.0, 0.0);
32
dpd_buf4_close(&TIjAb);
33
dpd_file2_close(&XNJ);
34
dpd_buf4_sort(&Z, EOM_TMP, qpsr, 0, 5, "WnmjeDS Z(jI,bA)");
36
dpd_buf4_init(&SIjAb, EOM_SIjAb, C_irr, 0, 5, 0, 5, 0, SIjAb_lbl);
37
dpd_buf4_axpy(&Z, &SIjAb, -1.0);
39
dpd_buf4_init(&Z, EOM_TMP, C_irr, 0, 5, 0, 5, 0, "WnmjeDS Z(jI,bA)");
40
dpd_buf4_axpy(&Z, &SIjAb, -1.0);
42
dpd_buf4_close(&SIjAb);
45
else if (params.eom_ref == 1) { /* ROHF */
46
sprintf(CME_lbl, "%s %d", "CME", i);
47
sprintf(Cme_lbl, "%s %d", "Cme", i);
48
sprintf(SIJAB_lbl, "%s %d", "SIJAB", i);
49
sprintf(Sijab_lbl, "%s %d", "Sijab", i);
50
sprintf(SIjAb_lbl, "%s %d", "SIjAb", i);
52
/* Form XNJ intermediates */
53
/* XNJ = CME * WNMJE + Cme * WNmJe */
54
dpd_file2_init(&XNJ, EOM_TMP, C_irr, 0, 0, "XNJ");
55
dpd_file2_scm(&XNJ, 0.0);
56
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
57
dpd_buf4_init(&WMNIE, CC_HBAR, H_IRR, 0, 11, 2, 11, 0, "WMNIE");
58
dpd_dot23(&CME, &WMNIE, &XNJ, 0, 0, 1.0, 1.0);
59
dpd_buf4_close(&WMNIE);
60
dpd_file2_close(&CME);
61
dpd_file2_init(&Cme, EOM_Cme, C_irr, 0, 1, Cme_lbl);
62
dpd_buf4_init(&WMnIe, CC_HBAR, H_IRR, 0, 11, 0, 11, 0, "WMnIe");
63
dpd_dot23(&Cme, &WMnIe, &XNJ, 0, 0, 1.0, 1.0);
64
dpd_buf4_close(&WMnIe);
65
dpd_file2_close(&Cme);
66
dpd_file2_close(&XNJ);
69
/* Xnj = Cme * Wnmje + CME * WnMjE */
70
dpd_file2_init(&Xnj, EOM_TMP, C_irr, 0, 0, "Xnj");
71
dpd_file2_scm(&Xnj, 0.0);
72
dpd_file2_init(&Cme, EOM_Cme, C_irr, 0, 1, Cme_lbl);
73
dpd_buf4_init(&Wmnie, CC_HBAR, H_IRR, 0, 11, 2, 11, 0, "Wmnie");
74
dpd_dot23(&Cme, &Wmnie, &Xnj, 0, 0, 1.0, 1.0);
75
dpd_buf4_close(&Wmnie);
76
dpd_file2_close(&Cme);
77
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
78
dpd_buf4_init(&WmNiE, CC_HBAR, H_IRR, 0, 11, 0, 11, 0, "WmNiE");
79
dpd_dot23(&CME, &WmNiE, &Xnj, 0, 0, 1.0, 1.0);
80
dpd_buf4_close(&WmNiE);
81
dpd_file2_close(&CME);
82
dpd_file2_close(&Xnj);
84
/* SIJAB -= XNJ * TINAB + XNI * TJNAB */
85
dpd_buf4_init(&WM, EOM_TMP, C_irr, 0, 7, 0, 7, 0, "WnmjeDS_M");
86
dpd_buf4_init(&TIJAB, CC_TAMPS, H_IRR, 0, 7, 2, 7, 0, "tIJAB");
87
dpd_file2_init(&XNJ, EOM_TMP, C_irr, 0, 0, "XNJ");
88
dpd_contract424(&TIJAB, &XNJ, &WM, 1, 0, 1, 1.0, 0.0);
89
dpd_file2_close(&XNJ);
90
dpd_buf4_close(&TIJAB);
91
dpd_buf4_sort(&WM, EOM_TMP, qprs, 0, 7, "WnmjeDS_P");
92
dpd_buf4_init(&SIJAB, EOM_SIJAB, C_irr, 0, 7, 2, 7, 0, SIJAB_lbl);
93
dpd_buf4_axpy(&WM, &SIJAB, -1.0);
95
dpd_buf4_init(&WP, EOM_TMP, C_irr, 0, 7, 0, 7, 0, "WnmjeDS_P");
96
dpd_buf4_axpy(&WP, &SIJAB, 1.0);
98
dpd_buf4_close(&SIJAB);
100
/* Sijab -= Xnj * Tinab + Xni * Tjnab */
101
dpd_buf4_init(&WM, EOM_TMP, C_irr, 0, 7, 0, 7, 0, "WnmjeDS_M");
102
dpd_buf4_init(&Tijab, CC_TAMPS, H_IRR, 0, 7, 2, 7, 0, "tijab");
103
dpd_file2_init(&Xnj, EOM_TMP, C_irr, 0, 0, "Xnj");
104
dpd_contract424(&Tijab, &Xnj, &WM, 1, 0, 1, 1.0, 0.0);
105
dpd_file2_close(&Xnj);
106
dpd_buf4_close(&Tijab);
107
dpd_buf4_sort(&WM, EOM_TMP, qprs, 0, 7, "WnmjeDS_P");
108
dpd_buf4_init(&Sijab, EOM_Sijab, C_irr, 0, 7, 2, 7, 0, Sijab_lbl);
109
dpd_buf4_axpy(&WM, &Sijab, -1.0);
111
dpd_buf4_init(&WP, EOM_TMP, C_irr, 0, 7, 0, 7, 0, "WnmjeDS_P");
112
dpd_buf4_axpy(&WP, &Sijab, 1.0);
114
dpd_buf4_close(&Sijab);
116
/* SIjAb -= Xnj * tInAb + XNI * TjNAb */
117
dpd_buf4_init(&SIjAb, EOM_SIjAb, C_irr, 0, 5, 0, 5, 0, SIjAb_lbl);
118
dpd_buf4_init(&TIjAb, CC_TAMPS, H_IRR, 0, 5, 0, 5, 0, "tIjAb");
119
dpd_file2_init(&Xnj, EOM_TMP, C_irr, 0, 0, "Xnj");
120
dpd_contract424(&TIjAb, &Xnj, &SIjAb, 1, 0, 1, -1.0, 1.0);
121
dpd_file2_close(&Xnj);
122
dpd_file2_init(&XNJ, EOM_TMP, C_irr, 0, 0, "XNJ");
123
dpd_contract244(&XNJ, &TIjAb, &SIjAb, 0, 0, 0, -1.0, 1.0);
124
dpd_file2_close(&XNJ);
125
dpd_buf4_close(&TIjAb);
126
dpd_buf4_close(&SIjAb);
129
else if (params.eom_ref == 2) {
130
sprintf(CME_lbl, "%s %d", "CME", i);
131
sprintf(Cme_lbl, "%s %d", "Cme", i);
132
sprintf(SIJAB_lbl, "%s %d", "SIJAB", i);
133
sprintf(Sijab_lbl, "%s %d", "Sijab", i);
134
sprintf(SIjAb_lbl, "%s %d", "SIjAb", i);
136
/* Form XNJ intermediates */
137
/* XNJ = CME * WNMJE + Cme * WNmJe */
138
dpd_file2_init(&XNJ, EOM_TMP, C_irr, 0, 0, "XNJ");
139
dpd_file2_scm(&XNJ, 0.0);
140
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
141
dpd_buf4_init(&WMNIE, CC_HBAR, H_IRR, 0, 21, 2, 21, 0, "WMNIE");
142
dpd_dot23(&CME, &WMNIE, &XNJ, 0, 0, 1.0, 1.0);
143
dpd_buf4_close(&WMNIE);
144
dpd_file2_close(&CME);
145
dpd_file2_init(&Cme, EOM_Cme, C_irr, 2, 3, Cme_lbl);
146
dpd_buf4_init(&WMnIe, CC_HBAR, H_IRR, 22, 25, 22, 25, 0, "WMnIe");
147
dpd_dot23(&Cme, &WMnIe, &XNJ, 0, 0, 1.0, 1.0);
148
dpd_buf4_close(&WMnIe);
149
dpd_file2_close(&Cme);
151
tval = dpd_file2_dot_self(&XNJ);
152
fprintf(outfile,"XNJ self dot %15.10lf\n",tval);
154
dpd_file2_close(&XNJ);
157
/* Xnj = Cme * Wnmje + CME * WnMjE */
158
dpd_file2_init(&Xnj, EOM_TMP, C_irr, 2, 2, "Xnj");
159
dpd_file2_scm(&Xnj, 0.0);
160
dpd_file2_init(&Cme, EOM_Cme, C_irr, 2, 3, Cme_lbl);
161
dpd_buf4_init(&Wmnie, CC_HBAR, H_IRR, 10, 31, 12, 31, 0, "Wmnie");
162
dpd_dot23(&Cme, &Wmnie, &Xnj, 0, 0, 1.0, 1.0);
163
dpd_buf4_close(&Wmnie);
164
dpd_file2_close(&Cme);
165
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
166
dpd_buf4_init(&WmNiE, CC_HBAR, H_IRR, 23, 26, 23, 26, 0, "WmNiE");
167
dpd_dot23(&CME, &WmNiE, &Xnj, 0, 0, 1.0, 1.0);
168
dpd_buf4_close(&WmNiE);
169
dpd_file2_close(&CME);
172
tval = dpd_file2_dot_self(&Xnj);
173
fprintf(outfile,"Xnj self dot %15.10lf\n",tval);
175
dpd_file2_close(&Xnj);
177
/* SIJAB -= XNJ * TINAB + XNI * TJNAB */
178
dpd_buf4_init(&WM, EOM_TMP, C_irr, 0, 7, 0, 7, 0, "WnmjeDS_M");
179
dpd_buf4_init(&TIJAB, CC_TAMPS, H_IRR, 0, 7, 2, 7, 0, "tIJAB");
180
dpd_file2_init(&XNJ, EOM_TMP, C_irr, 0, 0, "XNJ");
181
dpd_contract424(&TIJAB, &XNJ, &WM, 1, 0, 1, 1.0, 0.0);
182
dpd_file2_close(&XNJ);
183
dpd_buf4_close(&TIJAB);
184
dpd_buf4_sort(&WM, EOM_TMP, qprs, 0, 7, "WnmjeDS_P");
185
dpd_buf4_init(&SIJAB, EOM_SIJAB, C_irr, 0, 7, 2, 7, 0, SIJAB_lbl);
186
dpd_buf4_axpy(&WM, &SIJAB, -1.0);
188
dpd_buf4_init(&WP, EOM_TMP, C_irr, 0, 7, 0, 7, 0, "WnmjeDS_P");
189
dpd_buf4_axpy(&WP, &SIJAB, 1.0);
191
dpd_buf4_close(&SIJAB);
193
/* Sijab -= Xnj * Tinab + Xni * Tjnab */
194
dpd_buf4_init(&WM, EOM_TMP, C_irr, 10, 17, 10, 17, 0, "WnmjeDS_MB");
195
dpd_buf4_init(&Tijab, CC_TAMPS, H_IRR, 10, 17, 12, 17, 0, "tijab");
196
dpd_file2_init(&Xnj, EOM_TMP, C_irr, 2, 2, "Xnj");
197
dpd_contract424(&Tijab, &Xnj, &WM, 1, 0, 1, 1.0, 0.0);
198
dpd_file2_close(&Xnj);
199
dpd_buf4_close(&Tijab);
200
dpd_buf4_sort(&WM, EOM_TMP, qprs, 10, 17, "WnmjeDS_PB");
201
dpd_buf4_init(&Sijab, EOM_Sijab, C_irr, 10, 17, 12, 17, 0, Sijab_lbl);
202
dpd_buf4_axpy(&WM, &Sijab, -1.0);
204
dpd_buf4_init(&WP, EOM_TMP, C_irr, 10, 17, 10, 17, 0, "WnmjeDS_PB");
205
dpd_buf4_axpy(&WP, &Sijab, 1.0);
207
dpd_buf4_close(&Sijab);
209
/* SIjAb -= Xnj * tInAb + XNI * TjNAb */
210
dpd_buf4_init(&SIjAb, EOM_SIjAb, C_irr, 22, 28, 22, 28, 0, SIjAb_lbl);
211
dpd_buf4_init(&TIjAb, CC_TAMPS, H_IRR, 22, 28, 22, 28, 0, "tIjAb");
212
dpd_file2_init(&Xnj, EOM_TMP, C_irr, 2, 2, "Xnj");
213
dpd_contract424(&TIjAb, &Xnj, &SIjAb, 1, 0, 1, -1.0, 1.0);
214
dpd_file2_close(&Xnj);
215
dpd_file2_init(&XNJ, EOM_TMP, C_irr, 0, 0, "XNJ");
216
dpd_contract244(&XNJ, &TIjAb, &SIjAb, 0, 0, 0, -1.0, 1.0);
217
dpd_file2_close(&XNJ);
218
dpd_buf4_close(&TIjAb);
219
dpd_buf4_close(&SIjAb);
223
check_sum("WnmjeDS",i,C_irr);