8
void cc2_sigmaSS(int i, int C_irr);
10
void cc2_sigma(int i, int C_irr)
33
int Gej, Gab, Gij, Gj, Gi, Ge, nrows, length, E, e, I;
34
int Gam, Gef, Gim, Ga, Gm, ncols, A, a, am;
36
if (params.eom_ref == 0) { /* RHF */
40
sprintf(lbl, "%s %d", "SIA", i);
41
dpd_file2_init(&SIA, EOM_SIA, C_irr, 0, 1, lbl);
42
dpd_file2_init(&FME, CC_OEI, H_IRR, 0, 1, "FME");
43
dpd_buf4_init(&CMnEf, EOM_TMP, C_irr, 0, 5, 0, 5, 0, "2CMnEf - CMnfE");
44
dpd_dot24(&FME,&CMnEf,&SIA, 0, 0, 1.0, 1.0);
45
dpd_buf4_close(&CMnEf);
46
dpd_file2_close(&FME);
47
dpd_file2_close(&SIA);
50
sprintf(lbl, "%s %d", "SIA", i);
51
dpd_file2_init(&SIA, EOM_SIA, C_irr, 0, 1, lbl);
52
sprintf(lbl, "%s %d", "CMnEf", i);
53
dpd_buf4_init(&CMnEf, EOM_CMnEf, C_irr, 0, 5, 0, 5, 0, lbl);
54
dpd_buf4_init(&WAmEf, CC_HBAR, H_IRR, 11, 5, 11, 5, 0, "WAmEf 2(Am,Ef) - (Am,fE)");
55
dpd_contract442(&CMnEf, &WAmEf, &SIA, 0, 0, 1.0, 1.0);
56
dpd_buf4_close(&WAmEf);
57
dpd_buf4_close(&CMnEf);
58
dpd_file2_close(&SIA);
61
dpd_buf4_init(&C, EOM_TMP, C_irr, 0, 5, 0, 5, 0, "2CMnEf - CMnfE");
62
dpd_buf4_init(&W, CC_HBAR, H_IRR, 11, 5, 11, 5, 0, "WAmEf");
63
sprintf(lbl, "%s %d", "SIA", i);
64
dpd_file2_init(&S, EOM_SIA, C_irr, 0, 1, lbl);
65
dpd_file2_mat_init(&S);
67
for(Gam=0; Gam < moinfo.nirreps; Gam++) {
71
dpd_buf4_mat_irrep_init(&C, Gim);
72
dpd_buf4_mat_irrep_rd(&C, Gim);
73
dpd_buf4_mat_irrep_shift13(&C, Gim);
75
for(Gi=0; Gi < moinfo.nirreps; Gi++) {
79
W.matrix[Gam] = dpd_block_matrix(moinfo.occpi[Gm], W.params->coltot[Gef]);
81
nrows = moinfo.occpi[Gi];
82
ncols = moinfo.occpi[Gm] * W.params->coltot[Gef];
84
for(A=0; A < moinfo.virtpi[Ga]; A++) {
85
a = moinfo.vir_off[Ga] + A;
86
am = W.row_offset[Gam][a];
88
dpd_buf4_mat_irrep_rd_block(&W, Gam, am, moinfo.occpi[Gm]);
90
if(nrows && ncols && moinfo.virtpi[Ga])
91
C_DGEMV('n',nrows,ncols,1,C.shift.matrix[Gim][Gi][0],ncols,W.matrix[Gam][0], 1,
92
1, &(S.matrix[Gi][0][A]), moinfo.virtpi[Ga]);
95
dpd_free_block(W.matrix[Gam], moinfo.occpi[Gm], W.params->coltot[Gef]);
98
dpd_buf4_mat_irrep_close(&C, Gim);
100
dpd_file2_mat_wrt(&S);
101
dpd_file2_mat_close(&S);
106
sprintf(lbl, "%s %d", "SIA", i);
107
dpd_file2_init(&SIA, EOM_SIA, C_irr, 0, 1, lbl);
108
sprintf(lbl, "%s %d", "CMnEf", i);
109
dpd_buf4_init(&CMnEf, EOM_CMnEf, C_irr, 0, 5, 0, 5, 0, lbl);
110
dpd_buf4_init(&WMnIe, CC_HBAR, H_IRR, 0, 11, 0, 11, 0, "WMnIe - 2WnMIe (Mn,eI)");
111
dpd_contract442(&WMnIe, &CMnEf, &SIA, 3, 3, 1.0, 1.0);
112
dpd_buf4_close(&CMnEf);
113
dpd_buf4_close(&WMnIe);
114
dpd_file2_close(&SIA);
116
sprintf(CME_lbl, "%s %d", "CME", i);
117
sprintf(SIjAb_lbl, "%s %d", "SIjAb", i);
119
dpd_buf4_init(&Z, EOM_TMP, C_irr, 0, 5, 0, 5, 0, "WmaijDS Z(Ij,Ab)");
120
dpd_buf4_init(&WMbIj, CC2_HET1, H_IRR, 10, 0, 10, 0, 0, "CC2 WMbIj");
121
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
122
dpd_contract244(&CME, &WMbIj, &Z, 0, 0, 1, 1.0, 0.0);
123
dpd_file2_close(&CME);
124
dpd_buf4_close(&WMbIj);
125
dpd_buf4_sort(&Z, EOM_TMP, qpsr, 0, 5, "WmaijDS Z(jI,bA)");
126
dpd_buf4_init(&SIjAb, EOM_SIjAb, C_irr, 0, 5, 0, 5, 0, SIjAb_lbl);
127
dpd_buf4_axpy(&Z, &SIjAb, -1.0);
129
dpd_buf4_init(&Z, EOM_TMP, C_irr, 0, 5, 0, 5, 0, "WmaijDS Z(jI,bA)");
130
dpd_buf4_axpy(&Z, &SIjAb, -1.0);
132
dpd_buf4_close(&SIjAb);
134
sprintf(CME_lbl, "%s %d", "CME", i);
135
sprintf(SIjAb_lbl, "%s %d", "SIjAb", i);
137
dpd_buf4_init(&Z, EOM_TMP, C_irr, 0, 5, 0, 5, 0, "WabejDS Z(Ij,Ab)");
139
dpd_buf4_init(&W, CC2_HET1, H_IRR, 11, 5, 11, 5, 0, "CC2 WAbEi (Ei,Ab)");
140
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, CME_lbl);
141
/*dpd_contract244(&CME, &WAbEi, &Z, 1, 0, 0, 1.0, 0.0);*/
142
dpd_file2_mat_init(&CME);
143
dpd_file2_mat_rd(&CME);
144
for(Gej=0; Gej < moinfo.nirreps; Gej++) {
148
dpd_buf4_mat_irrep_init(&Z, Gij);
149
dpd_buf4_mat_irrep_shift13(&Z, Gij);
151
for(Ge=0; Ge < moinfo.nirreps; Ge++) {
155
nrows = moinfo.occpi[Gj];
156
length = nrows * W.params->coltot[Gab];
157
dpd_buf4_mat_irrep_init_block(&W, Gej, nrows);
159
for(E=0; E < moinfo.virtpi[Ge]; E++) {
160
e = moinfo.vir_off[Ge] + E;
161
dpd_buf4_mat_irrep_rd_block(&W, Gej, W.row_offset[Gej][e], nrows);
163
for(I=0; I < moinfo.occpi[Gi]; I++) {
165
C_DAXPY(length, CME.matrix[Gi][I][E], W.matrix[Gej][0], 1,
166
Z.shift.matrix[Gij][Gi][I], 1);
170
dpd_buf4_mat_irrep_close_block(&W, Gej, nrows);
173
dpd_buf4_mat_irrep_wrt(&Z, Gij);
174
dpd_buf4_mat_irrep_close(&Z, Gij);
177
dpd_file2_mat_close(&CME);
178
dpd_file2_close(&CME);
182
dpd_buf4_sort(&Z, EOM_TMP, qpsr, 0, 5, "WabejDS Z(jI,bA)");
183
dpd_buf4_init(&SIjAb, EOM_SIjAb, C_irr, 0, 5, 0, 5, 0, SIjAb_lbl);
184
dpd_buf4_axpy(&Z, &SIjAb, 1.0);
186
dpd_buf4_init(&Z, EOM_TMP, C_irr, 0, 5, 0, 5, 0, "WabejDS Z(jI,bA)");
187
dpd_buf4_axpy(&Z, &SIjAb, 1.0);
189
dpd_buf4_close(&SIjAb);
192
dpd_buf4_sort_axpy(&Z, EOM_SIjAb, qpsr, 0, 5, SIjAb_lbl, 1);
193
dpd_buf4_init(&SIjAb, EOM_SIjAb, C_irr, 0, 5, 0, 5, 0, SIjAb_lbl);
194
dpd_buf4_axpy(&Z, &SIjAb, 1.0);
195
dpd_buf4_close(&SIjAb);
198
sprintf(CMnEf_lbl, "%s %d", "CMnEf", i);
199
sprintf(SIjAb_lbl, "%s %d", "SIjAb", i);
201
dpd_buf4_init(&Z, EOM_TMP, C_irr, 0, 5, 0, 5, 0, "FDD_Fbe Z(Ij,Ab)");
202
dpd_buf4_init(&CMnEf, EOM_CMnEf, C_irr, 0, 5, 0, 5, 0, CMnEf_lbl);
203
dpd_file2_init(&FAE, CC_OEI, H_IRR, 1, 1, "fAB");
204
dpd_contract424(&CMnEf, &FAE, &Z, 3, 1, 0, 1.0, 0.0);
205
dpd_file2_close(&FAE);
206
dpd_buf4_close(&CMnEf);
208
dpd_buf4_sort(&Z, EOM_TMP, qpsr, 0, 5, "FDD_Fbe Z(jI,bA)");
209
dpd_buf4_init(&Z2, EOM_TMP, C_irr, 0, 5, 0, 5, 0, "FDD_Fbe Z(jI,bA)");
211
dpd_buf4_init(&SIjAb, EOM_SIjAb, C_irr, 0, 5, 0, 5, 0, SIjAb_lbl);
212
dpd_buf4_axpy(&Z, &SIjAb, 1.0);
213
dpd_buf4_axpy(&Z2, &SIjAb, 1.0);
216
dpd_buf4_close(&SIjAb);
218
dpd_buf4_init(&Z, EOM_TMP, C_irr, 0, 5, 0, 5, 0, "FDD_Fmj Z(Ij,Ab)");
219
dpd_buf4_init(&CMnEf, EOM_CMnEf, C_irr, 0, 5, 0, 5, 0, CMnEf_lbl);
220
dpd_file2_init(&FMI, CC_OEI, H_IRR, 0, 0, "fIJ");
221
dpd_contract244(&FMI, &CMnEf, &Z, 0, 0, 0, 1.0, 0.0);
222
dpd_file2_close(&FMI);
223
dpd_buf4_close(&CMnEf);
224
dpd_buf4_sort(&Z, EOM_TMP, qpsr, 0, 5, "FDD_Fmj Z(jI,bA)");
225
dpd_buf4_init(&SIjAb, EOM_SIjAb, C_irr, 0, 5, 0, 5, 0, SIjAb_lbl);
226
dpd_buf4_axpy(&Z, &SIjAb, -1.0);
228
dpd_buf4_init(&Z, EOM_TMP, C_irr, 0, 5, 0, 5, 0, "FDD_Fmj Z(jI,bA)");
229
dpd_buf4_axpy(&Z, &SIjAb, -1.0);
231
dpd_buf4_close(&SIjAb);
233
else if (params.eom_ref == 1) { /* ROHF */
234
printf("ROHF EOM_CC2 is not currently implemented\n");
235
exit(PSI_RETURN_FAILURE);
238
printf("UHF EOM_CC2 is not currently implemented\n");
239
exit(PSI_RETURN_FAILURE);
243
void cc2_sigmaSS(int i, int C_irr)
255
if (params.eom_ref == 0) { /* RHF */
259
sprintf(lbl, "%s %d", "SIA", i);
260
dpd_file2_init(&SIA, EOM_SIA, C_irr, 0, 1, lbl);
261
sprintf(lbl, "%s %d", "CME", i);
262
dpd_file2_init(&CME, EOM_CME, C_irr, 0, 1, lbl);
264
dpd_file2_init(&FAE, CC_OEI, H_IRR, 1, 1, "FAE");
265
dpd_contract222(&CME, &FAE, &SIA, 0, 0, 1.0, 0.0);
266
dpd_file2_close(&FAE);
268
dpd_file2_init(&FMI, CC_OEI, H_IRR, 0, 0, "FMI");
269
dpd_contract222(&FMI, &CME, &SIA, 1, 1, -1.0, 1.0);
270
dpd_file2_close(&FMI);
272
dpd_buf4_init(&WMbEj, CC2_HET1, H_IRR, 10, 10, 10, 10, 0, "CC2 2 W(jb,ME) + W(Jb,Me)");
273
dpd_contract422(&WMbEj, &CME, &SIA, 0, 0, 1.0, 1.0);
274
dpd_buf4_close(&WMbEj);
276
dpd_file2_init(&Xme, CC_OEI, C_irr, 0, 1, "XME");
277
dpd_buf4_init(&D, CC_DINTS, 0, 10, 10, 10, 10, 0, "D 2<ij|ab> - <ij|ba> (ia,jb)");
278
dpd_contract422(&D, &CME, &Xme, 0, 0, 1, 0);
281
dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "2 tIAjb - tIBja");
282
dpd_contract422(&T2, &Xme, &SIA, 0, 0, 1, 1);
284
dpd_file2_close(&Xme);
286
dpd_file2_close(&CME);
287
dpd_file2_close(&SIA);
289
else if (params.eom_ref == 1) { /* ROHF */
290
printf("ROHF CC2-LR is not currently implemented\n");
291
exit(PSI_RETURN_FAILURE);
294
printf("UHF CC2-LR is not currently implemented\n");
295
exit(PSI_RETURN_FAILURE);