~ubuntu-branches/ubuntu/karmic/psicode/karmic

« back to all changes in this revision

Viewing changes to src/bin/cceom/WmnefDD.c

  • Committer: Bazaar Package Importer
  • Author(s): Michael Banck, Michael Banck, Daniel Leidert
  • Date: 2009-02-23 00:12:02 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20090223001202-rutldoy3dimfpesc
Tags: 3.4.0-1
* New upstream release.

[ Michael Banck ]
* debian/patches/01_DESTDIR.dpatch: Refreshed.
* debian/patches/02_FHS.dpatch: Removed, applied upstream.
* debian/patches/03_debian_docdir: Likewise.
* debian/patches/04_man.dpatch: Likewise.
* debian/patches/06_466828_fix_gcc_43_ftbfs.dpatch: Likewise.
* debian/patches/07_464867_move_executables: Fixed and refreshed.
* debian/patches/00list: Adjusted.
* debian/control: Improved description.
* debian/patches-held: Removed.
* debian/rules (install/psi3): Do not ship the ruby bindings for now.

[ Daniel Leidert ]
* debian/rules: Fix txtdir via DEB_MAKE_INSTALL_TARGET.
* debian/patches/01_DESTDIR.dpatch: Refreshed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#include <stdio.h>
2
 
#include <math.h>
3
 
#define EXTERN
4
 
#include "globals.h"
5
 
 
6
 
/* This function computes the H-bar doubles-doubles block contribution
7
 
   from -0.5*P(ab)*Wnmfe*Cmnea*tijfb and +0.5*Wnmfe*Cimfe*tjnab to a
8
 
   Sigma vector stored at Sigma plus 'i' */
9
 
 
10
 
void WmnefDD(int i, int C_irr) {
11
 
  dpdbuf4 C2, T2, S2, D;
12
 
  dpdfile2 X;
13
 
  dpdbuf4 SIJAB, Sijab, SIjAb, B;
14
 
  dpdbuf4 CMNEF, Cmnef, CMnEf, F, tau, Z;
15
 
  char CMNEF_lbl[32], Cmnef_lbl[32], CMnEf_lbl[32];
16
 
  char SIJAB_lbl[32], Sijab_lbl[32], SIjAb_lbl[32];
17
 
  int l,I,a,f,h,nC_irrs,*occpi,*virtpi,*openpi;
18
 
 
19
 
  nC_irrs = moinfo.nirreps;
20
 
  occpi = moinfo.occpi; virtpi = moinfo.virtpi; openpi = moinfo.openpi;
21
 
 
22
 
  if (params.eom_ref == 0) { /* RHF */
23
 
    sprintf(CMnEf_lbl, "%s %d", "CMnEf", i);
24
 
    sprintf(SIjAb_lbl, "%s %d", "SIjAb", i);
25
 
    /* XAF = CMNAE * WMNFE + CMnAe * WMnFe */
26
 
    dpd_file2_init(&X, EOM_TMP, C_irr, 1, 1, "XFA");
27
 
    dpd_buf4_init(&CMnEf, EOM_TMP, C_irr, 0, 5, 0, 5, 0, "2CMnEf - CMnfE");
28
 
    dpd_buf4_init(&D, CC_DINTS, H_IRR, 0, 5, 0, 5, 0, "D <ij|ab>");
29
 
    dpd_contract442(&D, &CMnEf, &X, 2, 2, 1.0, 0.0);
30
 
    dpd_buf4_close(&D);
31
 
    dpd_buf4_close(&CMnEf);
32
 
 
33
 
    /* SIjAb += -XFA * TIjFb - TIjAf * Xfb */
34
 
    dpd_buf4_init(&Z, EOM_TMP, C_irr, 0, 5, 0, 5, 0, "WmnefDD Z(Ij,Ab)");
35
 
    dpd_buf4_init(&T2, CC_TAMPS, H_IRR, 0, 5, 0, 5, 0, "tIjAb");
36
 
    dpd_contract424(&T2, &X, &Z, 3, 0, 0, 1.0, 0.0);
37
 
    dpd_buf4_close(&T2);
38
 
    dpd_file2_close(&X);
39
 
    dpd_buf4_sort(&Z, EOM_TMP, qpsr, 0, 5, "WmnefDD Z(jI,bA)");
40
 
    dpd_buf4_init(&SIjAb, EOM_SIjAb, C_irr, 0, 5, 0, 5, 0, SIjAb_lbl);
41
 
    dpd_buf4_axpy(&Z, &SIjAb, -1.0);
42
 
    dpd_buf4_close(&Z);
43
 
    dpd_buf4_init(&Z, EOM_TMP, C_irr, 0, 5, 0, 5, 0, "WmnefDD Z(jI,bA)");
44
 
    dpd_buf4_axpy(&Z, &SIjAb, -1.0);
45
 
    dpd_buf4_close(&Z);
46
 
    dpd_buf4_close(&SIjAb);
47
 
 
48
 
#ifdef EOM_DEBUG
49
 
    check_sum("WmnefDD XAF",i,C_irr);
50
 
#endif
51
 
 
52
 
    /* XLI = WLMEF * CIMEF + WLmEf * CImEf */
53
 
    dpd_file2_init(&X, EOM_TMP, C_irr, 0, 0, "XLI");
54
 
    dpd_buf4_init(&CMnEf, EOM_TMP, C_irr, 0, 5, 0, 5, 0, "2CMnEf - CMnfE");
55
 
    dpd_buf4_init(&D, CC_DINTS, H_IRR, 0, 5, 0, 5, 0, "D <ij|ab>");
56
 
    dpd_contract442(&D, &CMnEf, &X, 0, 0, 1.0, 0.0);
57
 
    dpd_buf4_close(&D);
58
 
    dpd_buf4_close(&CMnEf);
59
 
 
60
 
    /* SIjAb += -XLI * TLjAb - Xli * TIlAb */
61
 
    dpd_buf4_init(&Z, EOM_TMP, C_irr, 0, 5, 0, 5, 0, "WmnefDD Z(Ij,Ab)");
62
 
 
63
 
    dpd_buf4_init(&T2, CC_TAMPS, H_IRR, 0, 5, 0, 5, 0, "tIjAb");
64
 
    dpd_contract244(&X, &T2, &Z, 0, 0, 0, 1.0, 0.0);
65
 
    dpd_buf4_close(&T2);
66
 
    dpd_file2_close(&X);
67
 
 
68
 
    dpd_buf4_sort(&Z, EOM_TMP, qpsr, 0, 5, "WmnefDD Z(jI,bA)");
69
 
 
70
 
    dpd_buf4_init(&SIjAb, EOM_SIjAb, C_irr, 0, 5, 0, 5, 0, SIjAb_lbl);
71
 
    dpd_buf4_axpy(&Z, &SIjAb, -1.0);
72
 
    dpd_buf4_close(&Z);
73
 
    dpd_buf4_init(&Z, EOM_TMP, C_irr, 0, 5, 0, 5, 0, "WmnefDD Z(jI,bA)");
74
 
    dpd_buf4_axpy(&Z, &SIjAb, -1.0);
75
 
    dpd_buf4_close(&Z);
76
 
    dpd_buf4_close(&SIjAb);
77
 
  }
78
 
 
79
 
  else if (params.eom_ref == 1) { /* ROHF */
80
 
    sprintf(CMNEF_lbl, "%s %d", "CMNEF", i);
81
 
    sprintf(Cmnef_lbl, "%s %d", "Cmnef", i);
82
 
    sprintf(CMnEf_lbl, "%s %d", "CMnEf", i);
83
 
    sprintf(SIJAB_lbl, "%s %d", "SIJAB", i);
84
 
    sprintf(Sijab_lbl, "%s %d", "Sijab", i);
85
 
    sprintf(SIjAb_lbl, "%s %d", "SIjAb", i);
86
 
 
87
 
    /* XAF = CMNAE * WMNFE + CMnAe * WMnFe */
88
 
    /* SIJAB -= P(ab) XAF * TIJFB */
89
 
    dpd_file2_init(&X, EOM_TMP, C_irr, 1, 1, "XFA");
90
 
    dpd_file2_scm(&X, 0.0);
91
 
    dpd_buf4_init(&D, CC_DINTS, H_IRR, 2, 5, 2, 5, 0, "D <ij||ab> (i>j,ab)");
92
 
    dpd_buf4_init(&CMNEF, EOM_CMNEF, C_irr, 2, 5, 2, 7, 0, CMNEF_lbl);
93
 
    dpd_contract442(&D, &CMNEF, &X, 2, 2, 1.0, 1.0);
94
 
    dpd_buf4_close(&CMNEF);
95
 
    dpd_buf4_close(&D);
96
 
    dpd_buf4_init(&D, CC_DINTS, H_IRR, 0, 5, 0, 5, 0, "D <ij|ab>");
97
 
    dpd_buf4_init(&CMnEf, EOM_CMnEf, C_irr, 0, 5, 0, 5, 0, CMnEf_lbl);
98
 
    dpd_contract442(&D, &CMnEf, &X, 2, 2, 1.0, 1.0);
99
 
    dpd_buf4_close(&CMnEf);
100
 
    dpd_buf4_close(&D);
101
 
 
102
 
    dpd_buf4_init(&S2, EOM_TMP, C_irr, 2, 5, 2, 5, 0, "SIJAB");
103
 
    dpd_buf4_init(&T2, CC_TAMPS, H_IRR, 2, 5, 2, 7, 0, "tIJAB");
104
 
    dpd_contract244(&X, &T2, &S2, 0, 2, 1, 1.0, 0.0);
105
 
    dpd_buf4_close(&T2);
106
 
    dpd_file2_close(&X);
107
 
    dpd_buf4_sort(&S2, EOM_TMP, pqsr, 2, 5, "SIJBA");
108
 
    dpd_buf4_init(&SIJAB, EOM_SIJAB, C_irr, 2, 5, 2, 7, 0, SIJAB_lbl);
109
 
    dpd_buf4_axpy(&S2, &SIJAB, -1.0);
110
 
    dpd_buf4_close(&S2);
111
 
    dpd_buf4_init(&S2, EOM_TMP, C_irr, 2, 5, 2, 5, 0, "SIJBA");
112
 
    dpd_buf4_axpy(&S2, &SIJAB, 1.0);
113
 
    dpd_buf4_close(&S2);
114
 
    dpd_buf4_close(&SIJAB);
115
 
 
116
 
    /* Xaf = Cmnae * Wmnfe + CmNaE * WmNfE */
117
 
    /* Sijab -= P(ab) Xfa * Tijfb */
118
 
    dpd_file2_init(&X, EOM_TMP, C_irr, 1, 1, "Xfa");
119
 
    dpd_file2_scm(&X, 0.0);
120
 
    dpd_buf4_init(&D, CC_DINTS, H_IRR, 2, 5, 2, 5, 0, "D <ij||ab> (i>j,ab)");
121
 
    dpd_buf4_init(&Cmnef, EOM_Cmnef, C_irr, 2, 5, 2, 7, 0, Cmnef_lbl);
122
 
    dpd_contract442(&D, &Cmnef, &X, 2, 2, 1.0, 1.0);
123
 
    dpd_buf4_close(&Cmnef);
124
 
    dpd_buf4_close(&D);
125
 
 
126
 
    dpd_buf4_init(&D, CC_DINTS, H_IRR, 0, 5, 0, 5, 0, "D <ij|ab>");
127
 
    dpd_buf4_init(&CMnEf, EOM_TMP, C_irr, 0, 5, 0, 5, 0, "CmNeF");
128
 
    dpd_contract442(&D, &CMnEf, &X, 2, 2, 1.0, 1.0);
129
 
    dpd_buf4_close(&CMnEf);
130
 
    dpd_buf4_close(&D);
131
 
 
132
 
    dpd_buf4_init(&S2, EOM_TMP, C_irr, 2, 5, 2, 5, 0, "Sijab");
133
 
    dpd_buf4_init(&T2, CC_TAMPS, H_IRR, 2, 5, 2, 7, 0, "tijab");
134
 
    dpd_contract244(&X, &T2, &S2, 0, 2, 1, 1.0, 0.0);
135
 
    dpd_file2_close(&X);
136
 
    dpd_buf4_close(&T2);
137
 
    dpd_buf4_sort(&S2, EOM_TMP, pqsr, 2, 5, "Sijba");
138
 
    dpd_buf4_init(&Sijab, EOM_Sijab, C_irr, 2, 5, 2, 7, 0, Sijab_lbl);
139
 
    dpd_buf4_axpy(&S2, &Sijab, -1.0);
140
 
    dpd_buf4_close(&S2);
141
 
    dpd_buf4_init(&S2, EOM_TMP, C_irr, 2, 5, 2, 5, 0, "Sijba");
142
 
    dpd_buf4_axpy(&S2, &Sijab, 1.0);
143
 
    dpd_buf4_close(&S2);
144
 
    dpd_buf4_close(&Sijab);
145
 
 
146
 
    /* SIjAb += -XFA * TIjFb - TIjAf * Xfb */
147
 
    dpd_buf4_init(&SIjAb, EOM_SIjAb, C_irr, 0, 5, 0, 5, 0, SIjAb_lbl);
148
 
    dpd_file2_init(&X, EOM_TMP, C_irr, 1, 1, "XFA");
149
 
    dpd_buf4_init(&T2, CC_TAMPS, H_IRR, 0, 5, 0, 5, 0, "tIjAb");
150
 
    dpd_contract244(&X, &T2, &SIjAb, 0, 2, 1, -1.0, 1.0);
151
 
    dpd_buf4_close(&T2);
152
 
    dpd_file2_close(&X);
153
 
    dpd_file2_init(&X, EOM_TMP, C_irr, 1, 1, "Xfa");
154
 
    dpd_buf4_init(&T2, CC_TAMPS, H_IRR, 0, 5, 0, 5, 0, "tIjAb");
155
 
    dpd_contract424(&T2, &X, &SIjAb, 3, 0, 0, -1.0, 1.0);
156
 
    dpd_buf4_close(&T2);
157
 
    dpd_file2_close(&X);
158
 
    dpd_buf4_close(&SIjAb);
159
 
 
160
 
#ifdef EOM_DEBUG
161
 
    check_sum("WmnefDD XAF",i,C_irr);
162
 
#endif
163
 
 
164
 
    /* XLI = WLMEF * CIMEF + WLmEf * CImEf */
165
 
    /* SIJAB += P(IJ) XLI * TLJAB */
166
 
    dpd_file2_init(&X, EOM_TMP, C_irr, 0, 0, "XLI");
167
 
    dpd_file2_scm(&X, 0.0);
168
 
    dpd_buf4_init(&CMNEF, EOM_CMNEF, C_irr, 0, 7, 2, 7, 0, CMNEF_lbl);
169
 
    dpd_buf4_init(&D, CC_DINTS, H_IRR, 0, 7, 0, 7, 0, "D <ij||ab> (ij,a>b)");
170
 
    dpd_contract442(&D, &CMNEF, &X, 0, 0, 1.0, 1.0);
171
 
    dpd_buf4_close(&D);
172
 
    dpd_buf4_close(&CMNEF);
173
 
    dpd_buf4_init(&CMnEf, EOM_CMnEf, C_irr, 0, 5, 0, 5, 0, CMnEf_lbl);
174
 
    dpd_buf4_init(&D, CC_DINTS, H_IRR, 0, 5, 0, 5, 0, "D <ij|ab>");
175
 
    dpd_contract442(&D, &CMnEf, &X, 0, 0, 1.0, 1.0);
176
 
    dpd_buf4_close(&D);
177
 
    dpd_buf4_close(&CMnEf);
178
 
 
179
 
    /*
180
 
       dpd_file2_mat_init(&X);
181
 
       dpd_file2_mat_rd(&X);
182
 
       for(h=0; h < nC_irrs; h++) {
183
 
       for(l=0; l<occpi[h]; l++)
184
 
       for(I=(occpi[h]-openpi[h]); I<occpi[h]; I++)
185
 
       X.matrix[h][l][I] = 0.0;
186
 
       for(I=0; I<occpi[h]; I++)
187
 
       for(l=(occpi[h]-openpi[h]); l<occpi[h]; l++)
188
 
       X.matrix[h][l][I] = 0.0;
189
 
       }
190
 
       dpd_file2_mat_wrt(&X);
191
 
       dpd_file2_mat_close(&X);
192
 
     */
193
 
 
194
 
    dpd_buf4_init(&S2, EOM_TMP, C_irr, 0, 7, 0, 7, 0, "SIJAB");
195
 
    dpd_buf4_init(&T2, CC_TAMPS, H_IRR, 0, 7, 2, 7, 0, "tIJAB");
196
 
    dpd_contract244(&X, &T2, &S2, 0, 0, 0, 1.0, 0.0);
197
 
    dpd_buf4_close(&T2);
198
 
    dpd_file2_close(&X);
199
 
    dpd_buf4_sort(&S2, EOM_TMP, qprs, 0, 7, "SJIAB");
200
 
    dpd_buf4_init(&SIJAB, EOM_SIJAB, C_irr, 0, 7, 2, 7, 0, SIJAB_lbl);
201
 
    dpd_buf4_axpy(&S2, &SIJAB, -1.0);
202
 
    dpd_buf4_close(&S2);
203
 
    dpd_buf4_init(&S2, EOM_TMP, C_irr, 0, 7, 0, 7, 0, "SJIAB");
204
 
    dpd_buf4_axpy(&S2, &SIJAB, 1.0);
205
 
    dpd_buf4_close(&S2);
206
 
    dpd_buf4_close(&SIJAB);
207
 
 
208
 
 
209
 
    /* Xli = Wlmef * Cimef + WlMeF * CiMeF */
210
 
    /* Sijab += P(ij) Xli * Tljab */
211
 
    dpd_file2_init(&X, EOM_TMP, C_irr, 0, 0, "Xli");
212
 
    dpd_file2_scm(&X, 0.0);
213
 
    dpd_buf4_init(&Cmnef, EOM_Cmnef, C_irr, 0, 7, 2, 7, 0, Cmnef_lbl);
214
 
    dpd_buf4_init(&D, CC_DINTS, H_IRR, 0, 7, 0, 7, 0, "D <ij||ab> (ij,a>b)");
215
 
    dpd_contract442(&D, &Cmnef, &X, 0, 0, 1.0, 1.0);
216
 
    dpd_buf4_close(&D);
217
 
    dpd_buf4_close(&Cmnef);
218
 
    dpd_buf4_init(&CMnEf, EOM_TMP, C_irr, 0, 5, 0, 5, 0, "CmNeF");
219
 
    dpd_buf4_init(&D, CC_DINTS, H_IRR, 0, 5, 0, 5, 0, "D <ij|ab>");
220
 
    dpd_contract442(&D, &CMnEf, &X, 0, 0, 1.0, 1.0);
221
 
    dpd_buf4_close(&D);
222
 
    dpd_buf4_close(&CMnEf);
223
 
    dpd_buf4_init(&S2, EOM_TMP, C_irr, 0, 7, 0, 7, 0, "Sijab");
224
 
    dpd_buf4_init(&T2, CC_TAMPS, H_IRR, 0, 7, 2, 7, 0, "tijab");
225
 
    dpd_contract244(&X, &T2, &S2, 0, 0, 0, 1.0, 0.0);
226
 
    dpd_buf4_close(&T2);
227
 
    dpd_file2_close(&X);
228
 
    dpd_buf4_sort(&S2, EOM_TMP, qprs, 0, 7, "Sjiab");
229
 
    dpd_buf4_init(&Sijab, EOM_Sijab, C_irr, 0, 7, 2, 7, 0, Sijab_lbl);
230
 
    dpd_buf4_axpy(&S2, &Sijab, -1.0);
231
 
    dpd_buf4_close(&S2);
232
 
    dpd_buf4_init(&S2, EOM_TMP, C_irr, 0, 7, 0, 7, 0, "Sjiab");
233
 
    dpd_buf4_axpy(&S2, &Sijab, 1.0);
234
 
    dpd_buf4_close(&S2);
235
 
    dpd_buf4_close(&Sijab);
236
 
 
237
 
    /* SIjAb += -XLI * TLjAb - Xli * TIlAb */
238
 
    dpd_buf4_init(&SIjAb, EOM_SIjAb, C_irr, 0, 5, 0, 5, 0, SIjAb_lbl);
239
 
    dpd_file2_init(&X, EOM_TMP, C_irr, 0, 0, "XLI");
240
 
    dpd_buf4_init(&T2, CC_TAMPS, H_IRR, 0, 5, 0, 5, 0, "tIjAb");
241
 
    dpd_contract244(&X, &T2, &SIjAb, 0, 0, 0, -1.0, 1.0);
242
 
    dpd_file2_close(&X);
243
 
    dpd_file2_init(&X, EOM_TMP, C_irr, 0, 0, "Xli");
244
 
    dpd_contract424(&T2, &X, &SIjAb, 1, 0, 1, -1.0, 1.0);
245
 
    dpd_buf4_close(&T2);
246
 
    dpd_file2_close(&X);
247
 
    dpd_buf4_close(&SIjAb);
248
 
  }
249
 
 
250
 
  else if (params.eom_ref == 2) {
251
 
    sprintf(CMNEF_lbl, "%s %d", "CMNEF", i);
252
 
    sprintf(Cmnef_lbl, "%s %d", "Cmnef", i);
253
 
    sprintf(CMnEf_lbl, "%s %d", "CMnEf", i);
254
 
    sprintf(SIJAB_lbl, "%s %d", "SIJAB", i);
255
 
    sprintf(Sijab_lbl, "%s %d", "Sijab", i);
256
 
    sprintf(SIjAb_lbl, "%s %d", "SIjAb", i);
257
 
 
258
 
    /* XAF = CMNAE * WMNFE + CMnAe * WMnFe */
259
 
    /* SIJAB -= P(ab) XAF * TIJFB */
260
 
    dpd_file2_init(&X, EOM_TMP, C_irr, 1, 1, "XFA");
261
 
    dpd_file2_scm(&X, 0.0);
262
 
    dpd_buf4_init(&D, CC_DINTS, H_IRR, 2, 5, 2, 5, 0, "D <IJ||AB> (I>J,AB)");
263
 
    dpd_buf4_init(&CMNEF, EOM_CMNEF, C_irr, 2, 5, 2, 7, 0, CMNEF_lbl);
264
 
    dpd_contract442(&D, &CMNEF, &X, 2, 2, 1.0, 1.0);
265
 
    dpd_buf4_close(&CMNEF);
266
 
    dpd_buf4_close(&D);
267
 
    dpd_buf4_init(&D, CC_DINTS, H_IRR, 22, 28, 22, 28, 0, "D <Ij|Ab>");
268
 
    dpd_buf4_init(&CMnEf, EOM_CMnEf, C_irr, 22, 28, 22, 28, 0, CMnEf_lbl);
269
 
    dpd_contract442(&D, &CMnEf, &X, 2, 2, 1.0, 1.0);
270
 
    dpd_buf4_close(&CMnEf);
271
 
    dpd_buf4_close(&D);
272
 
 
273
 
    dpd_buf4_init(&S2, EOM_TMP, C_irr, 2, 5, 2, 5, 0, "SIJAB");
274
 
    dpd_buf4_init(&T2, CC_TAMPS, H_IRR, 2, 5, 2, 7, 0, "tIJAB");
275
 
    dpd_contract244(&X, &T2, &S2, 0, 2, 1, 1.0, 0.0);
276
 
    dpd_buf4_close(&T2);
277
 
    dpd_file2_close(&X);
278
 
    dpd_buf4_sort(&S2, EOM_TMP, pqsr, 2, 5, "SIJBA");
279
 
    dpd_buf4_init(&SIJAB, EOM_SIJAB, C_irr, 2, 5, 2, 7, 0, SIJAB_lbl);
280
 
    dpd_buf4_axpy(&S2, &SIJAB, -1.0);
281
 
    dpd_buf4_close(&S2);
282
 
    dpd_buf4_init(&S2, EOM_TMP, C_irr, 2, 5, 2, 5, 0, "SIJBA");
283
 
    dpd_buf4_axpy(&S2, &SIJAB, 1.0);
284
 
    dpd_buf4_close(&S2);
285
 
    dpd_buf4_close(&SIJAB);
286
 
 
287
 
    /* Xaf = Cmnae * Wmnfe + CmNaE * WmNfE */
288
 
    /* Sijab -= P(ab) Xfa * Tijfb */
289
 
    dpd_file2_init(&X, EOM_TMP, C_irr, 3, 3, "Xfa");
290
 
    dpd_file2_scm(&X, 0.0);
291
 
    dpd_buf4_init(&D, CC_DINTS, H_IRR, 12, 15, 12, 15, 0, "D <ij||ab> (i>j,ab)");
292
 
    dpd_buf4_init(&Cmnef, EOM_Cmnef, C_irr, 12, 15, 12, 17, 0, Cmnef_lbl);
293
 
    dpd_contract442(&D, &Cmnef, &X, 2, 2, 1.0, 1.0);
294
 
    dpd_buf4_close(&Cmnef);
295
 
    dpd_buf4_close(&D);
296
 
 
297
 
    dpd_buf4_init(&D, CC_DINTS, H_IRR, 23, 29, 23, 29, 0, "D <iJ|aB>");
298
 
    dpd_buf4_init(&CMnEf, EOM_TMP, C_irr, 23, 29, 23, 29, 0, "CmNeF");
299
 
    dpd_contract442(&D, &CMnEf, &X, 2, 2, 1.0, 1.0);
300
 
    dpd_buf4_close(&CMnEf);
301
 
    dpd_buf4_close(&D);
302
 
 
303
 
    dpd_buf4_init(&S2, EOM_TMP, C_irr, 12, 15, 12, 15, 0, "Sijab");
304
 
    dpd_buf4_init(&T2, CC_TAMPS, H_IRR, 12, 15, 12, 17, 0, "tijab");
305
 
    dpd_contract244(&X, &T2, &S2, 0, 2, 1, 1.0, 0.0);
306
 
    dpd_file2_close(&X);
307
 
    dpd_buf4_close(&T2);
308
 
    dpd_buf4_sort(&S2, EOM_TMP, pqsr, 12, 15, "Sijba");
309
 
    dpd_buf4_init(&Sijab, EOM_Sijab, C_irr, 12, 15, 12, 17, 0, Sijab_lbl);
310
 
    dpd_buf4_axpy(&S2, &Sijab, -1.0);
311
 
    dpd_buf4_close(&S2);
312
 
    dpd_buf4_init(&S2, EOM_TMP, C_irr, 12, 15, 12, 15, 0, "Sijba");
313
 
    dpd_buf4_axpy(&S2, &Sijab, 1.0);
314
 
    dpd_buf4_close(&S2);
315
 
    dpd_buf4_close(&Sijab);
316
 
 
317
 
    /* SIjAb += -XFA * TIjFb - TIjAf * Xfb */
318
 
    dpd_buf4_init(&SIjAb, EOM_SIjAb, C_irr, 22, 28, 22, 28, 0, SIjAb_lbl);
319
 
    dpd_file2_init(&X, EOM_TMP, C_irr, 1, 1, "XFA");
320
 
    dpd_buf4_init(&T2, CC_TAMPS, H_IRR, 22, 28, 22, 28, 0, "tIjAb");
321
 
    dpd_contract244(&X, &T2, &SIjAb, 0, 2, 1, -1.0, 1.0);
322
 
    dpd_buf4_close(&T2);
323
 
    dpd_file2_close(&X);
324
 
    dpd_file2_init(&X, EOM_TMP, C_irr, 3, 3, "Xfa");
325
 
    dpd_buf4_init(&T2, CC_TAMPS, H_IRR, 22, 28, 22, 28, 0, "tIjAb");
326
 
    dpd_contract424(&T2, &X, &SIjAb, 3, 0, 0, -1.0, 1.0);
327
 
    dpd_buf4_close(&T2);
328
 
    dpd_file2_close(&X);
329
 
    dpd_buf4_close(&SIjAb);
330
 
 
331
 
#ifdef EOM_DEBUG
332
 
    check_sum("WmnefDD XAF",i,C_irr);
333
 
#endif
334
 
 
335
 
    /* XLI = WLMEF * CIMEF + WLmEf * CImEf */
336
 
    /* SIJAB += P(IJ) XLI * TLJAB */
337
 
    dpd_file2_init(&X, EOM_TMP, C_irr, 0, 0, "XLI");
338
 
    dpd_file2_scm(&X, 0.0);
339
 
    dpd_buf4_init(&CMNEF, EOM_CMNEF, C_irr, 0, 7, 2, 7, 0, CMNEF_lbl);
340
 
    dpd_buf4_init(&D, CC_DINTS, H_IRR, 0, 7, 0, 7, 0, "D <IJ||AB> (IJ,A>B)");
341
 
    dpd_contract442(&D, &CMNEF, &X, 0, 0, 1.0, 1.0);
342
 
    dpd_buf4_close(&D);
343
 
    dpd_buf4_close(&CMNEF);
344
 
    dpd_buf4_init(&CMnEf, EOM_CMnEf, C_irr, 22, 28, 22, 28, 0, CMnEf_lbl);
345
 
    dpd_buf4_init(&D, CC_DINTS, H_IRR, 22, 28, 22, 28, 0, "D <Ij|Ab>");
346
 
    dpd_contract442(&D, &CMnEf, &X, 0, 0, 1.0, 1.0);
347
 
    dpd_buf4_close(&D);
348
 
    dpd_buf4_close(&CMnEf);
349
 
 
350
 
    dpd_buf4_init(&S2, EOM_TMP, C_irr, 0, 7, 0, 7, 0, "SIJAB");
351
 
    dpd_buf4_init(&T2, CC_TAMPS, H_IRR, 0, 7, 2, 7, 0, "tIJAB");
352
 
    dpd_contract244(&X, &T2, &S2, 0, 0, 0, 1.0, 0.0);
353
 
    dpd_buf4_close(&T2);
354
 
    dpd_file2_close(&X);
355
 
    dpd_buf4_sort(&S2, EOM_TMP, qprs, 0, 7, "SJIAB");
356
 
    dpd_buf4_init(&SIJAB, EOM_SIJAB, C_irr, 0, 7, 2, 7, 0, SIJAB_lbl);
357
 
    dpd_buf4_axpy(&S2, &SIJAB, -1.0);
358
 
    dpd_buf4_close(&S2);
359
 
    dpd_buf4_init(&S2, EOM_TMP, C_irr, 0, 7, 0, 7, 0, "SJIAB");
360
 
    dpd_buf4_axpy(&S2, &SIJAB, 1.0);
361
 
    dpd_buf4_close(&S2);
362
 
    dpd_buf4_close(&SIJAB);
363
 
 
364
 
 
365
 
    /* Xli = Wlmef * Cimef + WlMeF * CiMeF */
366
 
    /* Sijab += P(ij) Xli * Tljab */
367
 
    dpd_file2_init(&X, EOM_TMP, C_irr, 2, 2, "Xli");
368
 
    dpd_file2_scm(&X, 0.0);
369
 
    dpd_buf4_init(&Cmnef, EOM_Cmnef, C_irr, 10, 17, 12, 17, 0, Cmnef_lbl);
370
 
    dpd_buf4_init(&D, CC_DINTS, H_IRR, 10, 17, 10, 17, 0, "D <ij||ab> (ij,a>b)");
371
 
    dpd_contract442(&D, &Cmnef, &X, 0, 0, 1.0, 1.0);
372
 
    dpd_buf4_close(&D);
373
 
    dpd_buf4_close(&Cmnef);
374
 
    dpd_buf4_init(&CMnEf, EOM_TMP, C_irr, 23, 29, 23, 29, 0, "CmNeF");
375
 
    dpd_buf4_init(&D, CC_DINTS, H_IRR, 23, 29, 23, 29, 0, "D <iJ|aB>");
376
 
    dpd_contract442(&D, &CMnEf, &X, 0, 0, 1.0, 1.0);
377
 
    dpd_buf4_close(&D);
378
 
    dpd_buf4_close(&CMnEf);
379
 
    dpd_buf4_init(&S2, EOM_TMP, C_irr, 10, 17, 10, 17, 0, "Sijab");
380
 
    dpd_buf4_init(&T2, CC_TAMPS, H_IRR, 10, 17, 12, 17, 0, "tijab");
381
 
    dpd_contract244(&X, &T2, &S2, 0, 0, 0, 1.0, 0.0);
382
 
    dpd_buf4_close(&T2);
383
 
    dpd_file2_close(&X);
384
 
    dpd_buf4_sort(&S2, EOM_TMP, qprs, 10, 17, "Sjiab");
385
 
    dpd_buf4_init(&Sijab, EOM_Sijab, C_irr, 10, 17, 12, 17, 0, Sijab_lbl);
386
 
    dpd_buf4_axpy(&S2, &Sijab, -1.0);
387
 
    dpd_buf4_close(&S2);
388
 
    dpd_buf4_init(&S2, EOM_TMP, C_irr, 10, 17, 10, 17, 0, "Sjiab");
389
 
    dpd_buf4_axpy(&S2, &Sijab, 1.0);
390
 
    dpd_buf4_close(&S2);
391
 
    dpd_buf4_close(&Sijab);
392
 
 
393
 
    /* SIjAb += -XLI * TLjAb - Xli * TIlAb */
394
 
    dpd_buf4_init(&SIjAb, EOM_SIjAb, C_irr, 22, 28, 22, 28, 0, SIjAb_lbl);
395
 
    dpd_file2_init(&X, EOM_TMP, C_irr, 0, 0, "XLI");
396
 
    dpd_buf4_init(&T2, CC_TAMPS, H_IRR, 22, 28, 22, 28, 0, "tIjAb");
397
 
    dpd_contract244(&X, &T2, &SIjAb, 0, 0, 0, -1.0, 1.0);
398
 
    dpd_file2_close(&X);
399
 
    dpd_file2_init(&X, EOM_TMP, C_irr, 2, 2, "Xli");
400
 
    dpd_contract424(&T2, &X, &SIjAb, 1, 0, 1, -1.0, 1.0);
401
 
    dpd_buf4_close(&T2);
402
 
    dpd_file2_close(&X);
403
 
    dpd_buf4_close(&SIjAb);
404
 
  }
405
 
 
406
 
#ifdef EOM_DEBUG
407
 
  check_sum("WmnefDD XLI",i,C_irr);
408
 
#endif
409
 
  return;
410
 
}