~ubuntu-branches/ubuntu/quantal/psicode/quantal

« back to all changes in this revision

Viewing changes to src/bin/cchbar/Wmbij.cc

  • 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
/*! \file
 
2
    \ingroup CCHBAR
 
3
    \brief Enter brief description of file here 
 
4
*/
 
5
#include <cstdio>
 
6
#include <libdpd/dpd.h>
 
7
#include "MOInfo.h"
 
8
#include "Params.h"
 
9
#define EXTERN
 
10
#include "globals.h"
 
11
 
 
12
namespace psi { namespace cchbar {
 
13
 
 
14
/** Wmbij_build(): Constructs the Wmbij HBAR intermediate, defined in 
 
15
 ** spin orbitals as:
 
16
 **
 
17
 ** Wmbij = <mb||ij> - Fme t_ij^be - t_n^b Wmnij + 1/2 <mb||ef> tau_ij^ef
 
18
 **    + P(ij) <mn||ie> t_jn^be + P(ij) t_i^e { <mb||ej> - t_nj^bf <mn||ef> }
 
19
 **
 
20
 ** [cf. Gauss and Stanton, JCP 103, 3561-3577 (1995)]
 
21
 **
 
22
 ** For RHF orbitals, there is only one unique spin case: WMbIj.
 
23
 **
 
24
 ** TDC, March 2004
 
25
 */
 
26
 
 
27
void Wmbij_build(void)
 
28
{
 
29
  dpdfile2 Fme, T1;
 
30
  dpdbuf4 W, E, T2, Wmnij, I, Tau, Z, Z1, Z2, C, D;
 
31
 
 
32
  if(params.ref == 0) { /** RHF **/
 
33
 
 
34
    dpd_buf4_init(&E, CC_EINTS, 0, 0, 10, 0, 10, 0, "E <ij|ka>");
 
35
    dpd_buf4_sort(&E, CC_HBAR, rspq, 10, 0, "WMbIj");
 
36
    dpd_buf4_close(&E);
 
37
 
 
38
  }
 
39
  else if(params.ref == 1) { /** ROHF **/
 
40
 
 
41
    dpd_buf4_init(&E, CC_EINTS, 0, 2, 10, 2, 10, 0, "E <ij||ka> (i>j,ka)");
 
42
    /** <MB||IJ> **/
 
43
    dpd_buf4_sort(&E, CC_HBAR, rspq, 10, 2, "WMBIJ");
 
44
    /** <mb||ij> **/
 
45
    dpd_buf4_sort(&E, CC_HBAR, rspq, 10, 2, "Wmbij");
 
46
    dpd_buf4_close(&E);
 
47
 
 
48
    dpd_buf4_init(&E, CC_EINTS, 0, 0, 10, 0, 10, 0, "E <ij|ka>");
 
49
    /** <Mb|Ij> **/
 
50
    dpd_buf4_sort(&E, CC_HBAR, rspq, 10, 0, "WMbIj");
 
51
    /** <mB|iJ> **/
 
52
    dpd_buf4_sort(&E, CC_HBAR, rspq, 10, 0, "WmBiJ");
 
53
    dpd_buf4_close(&E);
 
54
 
 
55
  }
 
56
  else if(params.ref == 2) { /** UHF **/
 
57
 
 
58
    /** <MB||IJ> **/
 
59
    dpd_buf4_init(&E, CC_EINTS, 0, 2, 20, 2, 20, 0, "E <IJ||KA> (I>J,KA)");
 
60
    dpd_buf4_sort(&E, CC_HBAR, rspq, 20, 2, "WMBIJ");
 
61
    dpd_buf4_close(&E);
 
62
 
 
63
    /** <mb||ij> **/
 
64
    dpd_buf4_init(&E, CC_EINTS, 0, 12, 30, 12, 30, 0, "E <ij||ka> (i>j,ka)");
 
65
    dpd_buf4_sort(&E, CC_HBAR, rspq, 30, 12, "Wmbij");
 
66
    dpd_buf4_close(&E);
 
67
 
 
68
    /** <Mb|Ij> **/
 
69
    dpd_buf4_init(&E, CC_EINTS, 0, 22, 24, 22, 24, 0, "E <Ij|Ka>");
 
70
    dpd_buf4_sort(&E, CC_HBAR, rspq, 24, 22, "WMbIj");
 
71
    dpd_buf4_close(&E);
 
72
 
 
73
    /** <mB|iJ> **/
 
74
    dpd_buf4_init(&E, CC_EINTS, 0, 23, 27, 23, 27, 0, "E <iJ|kA>");
 
75
    dpd_buf4_sort(&E, CC_HBAR, rspq, 27, 23, "WmBiJ");
 
76
    dpd_buf4_close(&E);
 
77
 
 
78
  }
 
79
 
 
80
  if(params.ref == 0) { /** RHF **/
 
81
 
 
82
    /** F_ME t_Ij^Eb --> W(Mb,Ij) **/
 
83
    dpd_file2_init(&Fme, CC_OEI, 0, 0, 1, "FME");
 
84
    dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tIjAb");
 
85
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 0, 10, 0, 0, "WMbIj");
 
86
    dpd_contract244(&Fme, &T2, &W, 1, 2, 0, 1.0, 1.0);
 
87
    dpd_buf4_close(&W);
 
88
    dpd_buf4_close(&T2);
 
89
    dpd_file2_close(&Fme);
 
90
 
 
91
  }
 
92
  else if(params.ref ==1) { /** ROHF **/
 
93
 
 
94
    /** F_ME t_IJ^EB --> W(MB,IJ) **/
 
95
    dpd_file2_init(&Fme, CC_OEI, 0, 0, 1, "FME");
 
96
    dpd_buf4_init(&T2, CC_TAMPS, 0, 2, 5, 2, 7, 0, "tIJAB");
 
97
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 2, 10, 2, 0, "WMBIJ");
 
98
    dpd_contract244(&Fme, &T2, &W, 1, 2, 0, 1.0, 1.0);
 
99
    dpd_buf4_close(&W);
 
100
    dpd_buf4_close(&T2);
 
101
    dpd_file2_close(&Fme);
 
102
 
 
103
    /** F_me t_ij^eb --> W(mb,ij) **/
 
104
    dpd_file2_init(&Fme, CC_OEI, 0, 0, 1, "Fme");
 
105
    dpd_buf4_init(&T2, CC_TAMPS, 0, 2, 5, 2, 7, 0, "tijab");
 
106
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 2, 10, 2, 0, "Wmbij");
 
107
    dpd_contract244(&Fme, &T2, &W, 1, 2, 0, 1.0, 1.0);
 
108
    dpd_buf4_close(&W);
 
109
    dpd_buf4_close(&T2);
 
110
    dpd_file2_close(&Fme);
 
111
 
 
112
    /** F_ME t_Ij^Eb --> W(Mb,Ij) **/
 
113
    dpd_file2_init(&Fme, CC_OEI, 0, 0, 1, "FME");
 
114
    dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tIjAb");
 
115
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 0, 10, 0, 0, "WMbIj");
 
116
    dpd_contract244(&Fme, &T2, &W, 1, 2, 0, 1.0, 1.0);
 
117
    dpd_buf4_close(&W);
 
118
    dpd_buf4_close(&T2);
 
119
    dpd_file2_close(&Fme);
 
120
 
 
121
    /** F_me t_iJ^eB --> W(mB,iJ) **/
 
122
    dpd_file2_init(&Fme, CC_OEI, 0, 0, 1, "Fme");
 
123
    dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tiJaB");
 
124
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 0, 10, 0, 0, "WmBiJ");
 
125
    dpd_contract244(&Fme, &T2, &W, 1, 2, 0, 1.0, 1.0);
 
126
    dpd_buf4_close(&W);
 
127
    dpd_buf4_close(&T2);
 
128
    dpd_file2_close(&Fme);
 
129
 
 
130
  }
 
131
  else if(params.ref == 2) { /** UHF **/
 
132
 
 
133
    /** F_ME t_IJ^EB --> W(MB,IJ) **/
 
134
    dpd_file2_init(&Fme, CC_OEI, 0, 0, 1, "FME");
 
135
    dpd_buf4_init(&T2, CC_TAMPS, 0, 2, 5, 2, 7, 0, "tIJAB");
 
136
    dpd_buf4_init(&W, CC_HBAR, 0, 20, 2, 20, 2, 0, "WMBIJ");
 
137
    dpd_contract244(&Fme, &T2, &W, 1, 2, 0, 1.0, 1.0);
 
138
    dpd_buf4_close(&W);
 
139
    dpd_buf4_close(&T2);
 
140
    dpd_file2_close(&Fme);
 
141
 
 
142
    /** F_me t_ij^eb --> W(mb,ij) **/
 
143
    dpd_file2_init(&Fme, CC_OEI, 0, 2, 3, "Fme");
 
144
    dpd_buf4_init(&T2, CC_TAMPS, 0, 12, 15, 12, 17, 0, "tijab");
 
145
    dpd_buf4_init(&W, CC_HBAR, 0, 30, 12, 30, 12, 0, "Wmbij");
 
146
    dpd_contract244(&Fme, &T2, &W, 1, 2, 0, 1.0, 1.0);
 
147
    dpd_buf4_close(&W);
 
148
    dpd_buf4_close(&T2);
 
149
    dpd_file2_close(&Fme);
 
150
 
 
151
    /** F_ME t_Ij^Eb --> W(Mb,Ij) **/
 
152
    dpd_file2_init(&Fme, CC_OEI, 0, 0, 1, "FME");
 
153
    dpd_buf4_init(&T2, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tIjAb");
 
154
    dpd_buf4_init(&W, CC_HBAR, 0, 24, 22, 24, 22, 0, "WMbIj");
 
155
    dpd_contract244(&Fme, &T2, &W, 1, 2, 0, 1.0, 1.0);
 
156
    dpd_buf4_close(&W);
 
157
    dpd_buf4_close(&T2);
 
158
    dpd_file2_close(&Fme);
 
159
 
 
160
    /** F_me t_iJ^eB --> W(mB,iJ) **/
 
161
    dpd_file2_init(&Fme, CC_OEI, 0, 2, 3, "Fme");
 
162
    dpd_buf4_init(&T2, CC_TAMPS, 0, 23, 29, 23, 29, 0, "tiJaB");
 
163
    dpd_buf4_init(&W, CC_HBAR, 0, 27, 23, 27, 23, 0, "WmBiJ");
 
164
    dpd_contract244(&Fme, &T2, &W, 1, 2, 0, 1.0, 1.0);
 
165
    dpd_buf4_close(&W);
 
166
    dpd_buf4_close(&T2);
 
167
    dpd_file2_close(&Fme);
 
168
 
 
169
  }
 
170
 
 
171
  if(params.ref == 0) { /** RHF **/
 
172
 
 
173
    /** - t_n^b W_MnIj **/
 
174
    dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
 
175
    dpd_buf4_init(&Wmnij, CC_HBAR, 0, 0, 0, 0, 0, 0, "WMnIj");
 
176
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 0, 10, 0, 0, "WMbIj");
 
177
    dpd_contract424(&Wmnij, &T1, &W, 1, 0, 1, -1.0, 1.0);
 
178
    dpd_buf4_close(&W);
 
179
    dpd_buf4_close(&Wmnij);
 
180
    dpd_file2_close(&T1);
 
181
 
 
182
  }
 
183
  else if(params.ref == 1) { /** ROHF **/
 
184
 
 
185
    /** - t_N^B W_MNIJ --> W(MB,IJ) **/
 
186
    dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
 
187
    dpd_buf4_init(&Wmnij, CC_HBAR, 0, 0, 2, 2, 2, 0, "WMNIJ");
 
188
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 2, 10, 2, 0, "WMBIJ");
 
189
    dpd_contract424(&Wmnij, &T1, &W, 1, 0, 1, -1.0, 1.0);
 
190
    dpd_buf4_close(&W);
 
191
    dpd_buf4_close(&Wmnij);
 
192
    dpd_file2_close(&T1);
 
193
 
 
194
    /** - t_n^b W_mnij **/
 
195
    dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tia");
 
196
    dpd_buf4_init(&Wmnij, CC_HBAR, 0, 0, 2, 2, 2, 0, "Wmnij");
 
197
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 2, 10, 2, 0, "Wmbij");
 
198
    dpd_contract424(&Wmnij, &T1, &W, 1, 0, 1, -1.0, 1.0);
 
199
    dpd_buf4_close(&W);
 
200
    dpd_buf4_close(&Wmnij);
 
201
    dpd_file2_close(&T1);
 
202
 
 
203
    /** - t_n^b W_MnIj **/
 
204
    dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tia");
 
205
    dpd_buf4_init(&Wmnij, CC_HBAR, 0, 0, 0, 0, 0, 0, "WMnIj");
 
206
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 0, 10, 0, 0, "WMbIj");
 
207
    dpd_contract424(&Wmnij, &T1, &W, 1, 0, 1, -1.0, 1.0);
 
208
    dpd_buf4_close(&W);
 
209
    dpd_buf4_close(&Wmnij);
 
210
    dpd_file2_close(&T1);
 
211
 
 
212
    /** - t_N^B W_mNiJ **/
 
213
    dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
 
214
    dpd_buf4_init(&Wmnij, CC_HBAR, 0, 0, 0, 0, 0, 0, "WMnIj");
 
215
    dpd_buf4_sort(&Wmnij, CC_TMP0, qprs, 0, 0, "WnMIj");
 
216
    dpd_buf4_close(&Wmnij);
 
217
    dpd_buf4_init(&Wmnij, CC_TMP0, 0, 0, 0, 0, 0, 0, "WnMIj");
 
218
    dpd_buf4_sort(&Wmnij, CC_TMP1, pqsr, 0, 0, "WnMjI");
 
219
    dpd_buf4_close(&Wmnij);
 
220
    dpd_buf4_init(&Wmnij, CC_TMP1, 0, 0, 0, 0, 0, 0, "WnMjI");
 
221
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 0, 10, 0, 0, "WmBiJ");
 
222
    dpd_contract424(&Wmnij, &T1, &W, 1, 0, 1, -1.0, 1.0);
 
223
    dpd_buf4_close(&W);
 
224
    dpd_buf4_close(&Wmnij);
 
225
    dpd_file2_close(&T1);
 
226
  }
 
227
  else if(params.ref == 2) { /** UHF **/
 
228
 
 
229
    /** - t_N^B W_MNIJ --> W(MB,IJ) **/
 
230
    dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
 
231
    dpd_buf4_init(&Wmnij, CC_HBAR, 0, 0, 2, 2, 2, 0, "WMNIJ");
 
232
    dpd_buf4_init(&W, CC_HBAR, 0, 20, 2, 20, 2, 0, "WMBIJ");
 
233
    dpd_contract424(&Wmnij, &T1, &W, 1, 0, 1, -1.0, 1.0);
 
234
    dpd_buf4_close(&W);
 
235
    dpd_buf4_close(&Wmnij);
 
236
    dpd_file2_close(&T1);
 
237
 
 
238
    /** - t_n^b W_mnij **/
 
239
    dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
 
240
    dpd_buf4_init(&Wmnij, CC_HBAR, 0, 10, 12, 12, 12, 0, "Wmnij");
 
241
    dpd_buf4_init(&W, CC_HBAR, 0, 30, 12, 30, 12, 0, "Wmbij");
 
242
    dpd_contract424(&Wmnij, &T1, &W, 1, 0, 1, -1.0, 1.0);
 
243
    dpd_buf4_close(&W);
 
244
    dpd_buf4_close(&Wmnij);
 
245
    dpd_file2_close(&T1);
 
246
 
 
247
    /** - t_n^b W_MnIj **/
 
248
    dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
 
249
    dpd_buf4_init(&Wmnij, CC_HBAR, 0, 22, 22, 22, 22, 0, "WMnIj");
 
250
    dpd_buf4_init(&W, CC_HBAR, 0, 24, 22, 24, 22, 0, "WMbIj");
 
251
    dpd_contract424(&Wmnij, &T1, &W, 1, 0, 1, -1.0, 1.0);
 
252
    dpd_buf4_close(&W);
 
253
    dpd_buf4_close(&Wmnij);
 
254
    dpd_file2_close(&T1);
 
255
 
 
256
    /** - t_N^B W_mNiJ **/
 
257
    dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
 
258
    dpd_buf4_init(&Wmnij, CC_HBAR, 0, 22, 22, 22, 22, 0, "WMnIj");
 
259
    dpd_buf4_sort(&Wmnij, CC_TMP0, qpsr, 23, 23, "WmNiJ");
 
260
    dpd_buf4_close(&Wmnij);
 
261
    dpd_buf4_init(&Wmnij, CC_TMP0, 0, 23, 23, 23, 23, 0, "WmNiJ");
 
262
    dpd_buf4_init(&W, CC_HBAR, 0, 27, 23, 27, 23, 0, "WmBiJ");
 
263
    dpd_contract424(&Wmnij, &T1, &W, 1, 0, 1, -1.0, 1.0);
 
264
    dpd_buf4_close(&W);
 
265
    dpd_buf4_close(&Wmnij);
 
266
    dpd_file2_close(&T1);
 
267
 
 
268
  }
 
269
 
 
270
  if(params.ref == 0) { /** RHF **/
 
271
 
 
272
    /** <Mb|Ef> tau_Ij^Ef **/
 
273
    dpd_buf4_init(&I, CC_FINTS, 0, 10, 5, 10, 5, 0, "F <ia|bc>");
 
274
    dpd_buf4_init(&Tau, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tauIjAb");
 
275
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 0, 10, 0, 0, "WMbIj");
 
276
    dpd_contract444(&I, &Tau, &W, 0, 0, 1.0, 1.0); /* should run OCC, if needed */
 
277
    dpd_buf4_close(&W);
 
278
    dpd_buf4_close(&Tau);
 
279
    dpd_buf4_close(&I);
 
280
 
 
281
  }
 
282
  else if(params.ref == 1) { /** ROHF **/
 
283
 
 
284
    /** <MB||EF> tau_IJ^EF **/
 
285
    dpd_buf4_init(&I, CC_FINTS, 0, 10, 7, 10, 5, 1, "F <ia|bc>");
 
286
    dpd_buf4_init(&Tau, CC_TAMPS, 0, 2, 7, 2, 7, 0, "tauIJAB");
 
287
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 2, 10, 2, 0, "WMBIJ");
 
288
    dpd_contract444(&I, &Tau, &W, 0, 0, 1.0, 1.0);
 
289
    dpd_buf4_close(&W);
 
290
    dpd_buf4_close(&Tau);
 
291
    dpd_buf4_close(&I);
 
292
 
 
293
    /* <mb||ef> tau_ij^ef **/
 
294
    dpd_buf4_init(&I, CC_FINTS, 0, 10, 7, 10, 5, 1, "F <ia|bc>");
 
295
    dpd_buf4_init(&Tau, CC_TAMPS, 0, 2, 7, 2, 7, 0, "tauijab");
 
296
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 2, 10, 2, 0, "Wmbij");
 
297
    dpd_contract444(&I, &Tau, &W, 0, 0, 1.0, 1.0);
 
298
    dpd_buf4_close(&W);
 
299
    dpd_buf4_close(&Tau);
 
300
    dpd_buf4_close(&I);
 
301
 
 
302
    /** <Mb|Ef> tau_Ij^Ef **/
 
303
    dpd_buf4_init(&I, CC_FINTS, 0, 10, 5, 10, 5, 0, "F <ia|bc>");
 
304
    dpd_buf4_init(&Tau, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tauIjAb");
 
305
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 0, 10, 0, 0, "WMbIj");
 
306
    dpd_contract444(&I, &Tau, &W, 0, 0, 1.0, 1.0);
 
307
    dpd_buf4_close(&W);
 
308
    dpd_buf4_close(&Tau);
 
309
    dpd_buf4_close(&I);
 
310
 
 
311
    /** <mB|eF> tau_iJ^eF **/
 
312
    dpd_buf4_init(&I, CC_FINTS, 0, 10, 5, 10, 5, 0, "F <ia|bc>");
 
313
    dpd_buf4_init(&Tau, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tauiJaB");
 
314
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 0, 10, 0, 0, "WmBiJ");
 
315
    dpd_contract444(&I, &Tau, &W, 0, 0, 1.0, 1.0);
 
316
    dpd_buf4_close(&W);
 
317
    dpd_buf4_close(&Tau);
 
318
    dpd_buf4_close(&I);
 
319
  }
 
320
  else if(params.ref == 2) { /** UHF **/
 
321
 
 
322
    /** <MB||EF> tau_IJ^EF **/
 
323
    dpd_buf4_init(&I, CC_FINTS, 0, 20, 7, 20, 5, 1, "F <IA|BC>");
 
324
    dpd_buf4_init(&Tau, CC_TAMPS, 0, 2, 7, 2, 7, 0, "tauIJAB");
 
325
    dpd_buf4_init(&W, CC_HBAR, 0, 20, 2, 20, 2, 0, "WMBIJ");
 
326
    dpd_contract444(&I, &Tau, &W, 0, 0, 1.0, 1.0);
 
327
    dpd_buf4_close(&Tau);
 
328
    dpd_buf4_close(&I);
 
329
    dpd_buf4_close(&W);
 
330
 
 
331
    /* <mb||ef> tau_ij^ef **/
 
332
    dpd_buf4_init(&I, CC_FINTS, 0, 30, 17, 30, 15, 1, "F <ia|bc>");
 
333
    dpd_buf4_init(&Tau, CC_TAMPS, 0, 12, 17, 12, 17, 0, "tauijab");
 
334
    dpd_buf4_init(&W, CC_HBAR, 0, 30, 12, 30, 12, 0, "Wmbij");
 
335
    dpd_contract444(&I, &Tau, &W, 0, 0, 1.0, 1.0);
 
336
    dpd_buf4_close(&W);
 
337
    dpd_buf4_close(&Tau);
 
338
    dpd_buf4_close(&I);
 
339
 
 
340
    /** <Mb|Ef> tau_Ij^Ef **/
 
341
    dpd_buf4_init(&I, CC_FINTS, 0, 24, 28, 24, 28, 0, "F <Ia|Bc>");
 
342
    dpd_buf4_init(&Tau, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tauIjAb");
 
343
    dpd_buf4_init(&W, CC_HBAR, 0, 24, 22, 24, 22, 0, "WMbIj");
 
344
    dpd_contract444(&I, &Tau, &W, 0, 0, 1.0, 1.0);
 
345
    dpd_buf4_close(&W);
 
346
    dpd_buf4_close(&Tau);
 
347
    dpd_buf4_close(&I);
 
348
 
 
349
    /** <mB|eF> tau_iJ^eF **/
 
350
    dpd_buf4_init(&I, CC_FINTS, 0, 27, 29, 27, 29, 0, "F <iA|bC>");
 
351
    dpd_buf4_init(&Tau, CC_TAMPS, 0, 23, 29, 23, 29, 0, "tauiJaB");
 
352
    dpd_buf4_init(&W, CC_HBAR, 0, 27, 23, 27, 23, 0, "WmBiJ");
 
353
    dpd_contract444(&I, &Tau, &W, 0, 0, 1.0, 1.0);
 
354
    dpd_buf4_close(&W);
 
355
    dpd_buf4_close(&Tau);
 
356
    dpd_buf4_close(&I);
 
357
 
 
358
  }
 
359
 
 
360
  /* Sort <ij||ka> integrals for the E*T2 contributions */
 
361
  if(params.ref == 0) { /** RHF **/
 
362
 
 
363
    dpd_buf4_init(&I, CC_EINTS, 0, 0, 10, 0, 10, 0, "E <ij|ka>");
 
364
    dpd_buf4_sort(&I, CC_TMP0, prqs, 0, 10, "<Mn|Ie> (MI,ne)");
 
365
    dpd_buf4_close(&I);
 
366
 
 
367
    dpd_buf4_init(&I, CC_EINTS, 0, 11, 0, 11, 0, 0, "E 2<ai|jk> - <ai|kj>");
 
368
    dpd_buf4_sort(&I, CC_TMP0, sqrp, 0, 10, "2 <Mn|Ie> - <Nm|Ie> (MI,ne)");
 
369
    dpd_buf4_close(&I);
 
370
 
 
371
  }
 
372
  else if(params.ref == 1) { /** ROHF **/
 
373
 
 
374
    dpd_buf4_init(&I, CC_EINTS, 0, 0, 10, 2, 10, 0, "E <ij||ka> (i>j,ka)");
 
375
    dpd_buf4_sort(&I, CC_TMP0, prqs, 0, 10, "I(MI,NE)");
 
376
    dpd_buf4_close(&I);
 
377
 
 
378
    dpd_buf4_init(&I, CC_EINTS, 0, 0, 10, 0, 10, 0, "E <ij|ka>");
 
379
    dpd_buf4_sort(&I, CC_TMP1, prqs, 0, 10, "I(MI,NE)");
 
380
    dpd_buf4_close(&I);
 
381
  }
 
382
  else if(params.ref == 2) { /** UHF **/
 
383
 
 
384
    dpd_buf4_init(&I, CC_EINTS, 0, 0, 20, 2, 20, 0, "E <IJ||KA> (I>J,KA)");
 
385
    dpd_buf4_sort(&I, CC_TMP0, prqs, 0, 20, "<MN||IE> (MI,NE)");
 
386
    dpd_buf4_close(&I);
 
387
 
 
388
    dpd_buf4_init(&I, CC_EINTS, 0, 10, 30, 12, 30, 0, "E <ij||ka> (i>j,ka)");
 
389
    dpd_buf4_sort(&I, CC_TMP0, prqs, 10, 30, "<mn||ie> (mi,ne)");
 
390
    dpd_buf4_close(&I);
 
391
 
 
392
    dpd_buf4_init(&I, CC_EINTS, 0, 22, 24, 22, 24, 0, "E <Ij|Ka>");
 
393
    dpd_buf4_sort(&I, CC_TMP0, prqs, 0, 30, "<Mn|Ie> (MI,ne)");
 
394
    dpd_buf4_close(&I);
 
395
 
 
396
    dpd_buf4_init(&I, CC_EINTS, 0, 23, 27, 23, 27, 0, "E <iJ|kA>");
 
397
    dpd_buf4_sort(&I, CC_TMP0, prqs, 10, 20, "<mN|iE> (mi,NE)");
 
398
    dpd_buf4_close(&I);
 
399
 
 
400
  }
 
401
 
 
402
  if(params.ref == 0) { /** RHF **/
 
403
 
 
404
    dpd_buf4_init(&Z, CC_TMP0, 0, 0, 10, 0, 10, 0, "Z(MI,jb)");
 
405
 
 
406
    dpd_buf4_init(&I, CC_TMP0, 0, 0, 10, 0, 10, 0, "2 <Mn|Ie> - <Nm|Ie> (MI,ne)");
 
407
    dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "tIAjb");
 
408
    dpd_contract444(&I, &T2, &Z, 0, 0, 1, 0);
 
409
    dpd_buf4_close(&T2);
 
410
    dpd_buf4_close(&I);
 
411
 
 
412
    dpd_buf4_init(&I, CC_TMP0, 0, 0, 10, 0, 10, 0, "<Mn|Ie> (MI,ne)");
 
413
    dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "tIbjA");
 
414
    dpd_contract444(&I, &T2, &Z, 0, 1, -1, 1);
 
415
    dpd_buf4_close(&T2);
 
416
    dpd_buf4_close(&I);
 
417
 
 
418
    dpd_buf4_sort_axpy(&Z, CC_HBAR, psqr, 10, 0, "WMbIj", 1);
 
419
    dpd_buf4_close(&Z);
 
420
 
 
421
    dpd_buf4_init(&Z, CC_TMP0, 0, 0, 10, 0, 10, 0, "Z(Mj,Ib)");
 
422
    dpd_buf4_init(&I, CC_EINTS, 0, 0, 11, 0, 11, 0, "E <ij|ak>");
 
423
    dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 11, 10, 11, 0, "tIbAj");
 
424
    dpd_contract444(&I, &T2, &Z, 0, 0, 1, 0);
 
425
    dpd_buf4_close(&T2);
 
426
    dpd_buf4_close(&I);
 
427
 
 
428
    dpd_buf4_sort_axpy(&Z, CC_HBAR, psrq, 10, 0, "WMbIj", -1);
 
429
    dpd_buf4_close(&Z);
 
430
 
 
431
  }
 
432
  else if(params.ref == 1) { /** ROHF **/
 
433
 
 
434
    /** <MN||IE> t_JN^BE **/
 
435
    dpd_buf4_init(&I, CC_TMP0, 0, 0, 10, 0, 10, 0, "I(MI,NE)");
 
436
    dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "tIAJB");
 
437
    dpd_buf4_init(&Z, CC_TMP2, 0, 0, 10, 0, 10, 0, "Z(MI,JB)");
 
438
    dpd_contract444(&I, &T2, &Z, 0, 0, 1.0, 0.0);
 
439
    dpd_buf4_close(&T2);
 
440
    dpd_buf4_close(&I);
 
441
 
 
442
    /** <Mn||Ie> t_Jn^Be **/
 
443
    dpd_buf4_init(&I, CC_TMP1, 0, 0, 10, 0, 10, 0, "I(MI,NE)");
 
444
    dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "tIAjb");
 
445
    dpd_contract444(&I, &T2, &Z, 0, 0, 1.0, 1.0);
 
446
    dpd_buf4_close(&Z);
 
447
    dpd_buf4_close(&T2);
 
448
    dpd_buf4_close(&I);
 
449
 
 
450
    /** <MN||JE> t_IN^BE **/
 
451
    dpd_buf4_init(&I, CC_TMP0, 0, 0, 10, 0, 10, 0, "I(MI,NE)");
 
452
    dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "tIAJB");
 
453
    dpd_buf4_init(&Z, CC_TMP3, 0, 0, 10, 0, 10, 0, "Z(MJ,IB)");
 
454
    dpd_contract444(&I, &T2, &Z, 0, 0, -1.0, 0.0);
 
455
    dpd_buf4_close(&T2);
 
456
    dpd_buf4_close(&I);
 
457
 
 
458
    /** <Mn||Je> t_In^Be **/
 
459
    dpd_buf4_init(&I, CC_TMP1, 0, 0, 10, 0, 10, 0, "I(MI,NE)");
 
460
    dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "tIAjb");
 
461
    dpd_contract444(&I, &T2, &Z, 0, 0, -1.0, 1.0);
 
462
    dpd_buf4_close(&Z);
 
463
    dpd_buf4_close(&T2);
 
464
    dpd_buf4_close(&I);
 
465
 
 
466
    dpd_buf4_init(&Z1, CC_TMP2, 0, 0, 10, 0, 10, 0, "Z(MI,JB)");
 
467
    dpd_buf4_sort(&Z1, CC_TMP4, prqs, 0, 10, "Z(MJ,IB)");
 
468
    dpd_buf4_close(&Z1);
 
469
    dpd_buf4_init(&Z1, CC_TMP4, 0, 0, 10, 0, 10, 0, "Z(MJ,IB)");
 
470
    dpd_buf4_init(&Z2, CC_TMP3, 0, 0, 10, 0, 10, 0, "Z(MJ,IB)");
 
471
    dpd_buf4_axpy(&Z1, &Z2, 1.0);
 
472
    dpd_buf4_close(&Z1);
 
473
    dpd_buf4_close(&Z2);
 
474
    dpd_buf4_init(&Z2, CC_TMP3, 0, 0, 10, 0, 10, 0, "Z(MJ,IB)");
 
475
    dpd_buf4_sort(&Z2, CC_TMP4, psrq, 10, 0, "Z(MB,IJ)");
 
476
    dpd_buf4_close(&Z2);
 
477
    dpd_buf4_init(&Z, CC_TMP4, 0, 10, 0, 10, 0, 0, "Z(MB,IJ)");
 
478
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 0, 10, 2, 0, "WMBIJ");
 
479
    dpd_buf4_axpy(&Z, &W, 1.0);
 
480
    dpd_buf4_close(&Z);
 
481
    dpd_buf4_close(&W);
 
482
 
 
483
    /** <mn||ie> t_jn^be **/
 
484
    dpd_buf4_init(&I, CC_TMP0, 0, 0, 10, 0, 10, 0, "I(MI,NE)");
 
485
    dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "tiajb");
 
486
    dpd_buf4_init(&Z, CC_TMP2, 0, 0, 10, 0, 10, 0, "Z(mi,jb)");
 
487
    dpd_contract444(&I, &T2, &Z, 0, 0, 1.0, 0.0);
 
488
    dpd_buf4_close(&T2);
 
489
    dpd_buf4_close(&I);
 
490
 
 
491
    /** <mN||iE> t_jN^bE **/
 
492
    dpd_buf4_init(&I, CC_TMP1, 0, 0, 10, 0, 10, 0, "I(MI,NE)");
 
493
    dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "tiaJB");
 
494
    dpd_contract444(&I, &T2, &Z, 0, 0, 1.0, 1.0);
 
495
    dpd_buf4_close(&Z);
 
496
    dpd_buf4_close(&T2);
 
497
    dpd_buf4_close(&I);
 
498
 
 
499
    /** <mn||je> t_in^be **/
 
500
    dpd_buf4_init(&I, CC_TMP0, 0, 0, 10, 0, 10, 0, "I(MI,NE)");
 
501
    dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "tiajb");
 
502
    dpd_buf4_init(&Z, CC_TMP3, 0, 0, 10, 0, 10, 0, "Z(mj,ib)");
 
503
    dpd_contract444(&I, &T2, &Z, 0, 0, -1.0, 0.0);
 
504
    dpd_buf4_close(&T2);
 
505
    dpd_buf4_close(&I);
 
506
 
 
507
    /** <mN||jE> t_iN^bE **/
 
508
    dpd_buf4_init(&I, CC_TMP1, 0, 0, 10, 0, 10, 0, "I(MI,NE)");
 
509
    dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "tiaJB");
 
510
    dpd_contract444(&I, &T2, &Z, 0, 0, -1.0, 1.0);
 
511
    dpd_buf4_close(&Z);
 
512
    dpd_buf4_close(&T2);
 
513
    dpd_buf4_close(&I);
 
514
 
 
515
    dpd_buf4_init(&Z1, CC_TMP2, 0, 0, 10, 0, 10, 0, "Z(mi,jb)");
 
516
    dpd_buf4_sort(&Z1, CC_TMP4, prqs, 0, 10, "Z(mj,ib)");
 
517
    dpd_buf4_close(&Z1);
 
518
    dpd_buf4_init(&Z1, CC_TMP4, 0, 0, 10, 0, 10, 0, "Z(mj,ib)");
 
519
    dpd_buf4_init(&Z2, CC_TMP3, 0, 0, 10, 0, 10, 0, "Z(mj,ib)");
 
520
    dpd_buf4_axpy(&Z1, &Z2, 1.0);
 
521
    dpd_buf4_close(&Z1);
 
522
    dpd_buf4_close(&Z2);
 
523
    dpd_buf4_init(&Z2, CC_TMP3, 0, 0, 10, 0, 10, 0, "Z(mj,ib)");
 
524
    dpd_buf4_sort(&Z2, CC_TMP4, psrq, 10, 0, "Z(mb,ij)");
 
525
    dpd_buf4_close(&Z2);
 
526
    dpd_buf4_init(&Z, CC_TMP4, 0, 10, 0, 10, 0, 0, "Z(mb,ij)");
 
527
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 0, 10, 2, 0, "Wmbij");
 
528
    dpd_buf4_axpy(&Z, &W, 1.0);
 
529
    dpd_buf4_close(&Z);
 
530
    dpd_buf4_close(&W);
 
531
 
 
532
    /** <MN||IE> t_jN^bE **/
 
533
    dpd_buf4_init(&I, CC_TMP0, 0, 0, 10, 0, 10, 0, "I(MI,NE)");
 
534
    dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "tiaJB");
 
535
    dpd_buf4_init(&Z, CC_TMP2, 0, 0, 10, 0, 10, 0, "Z(MI,jb)");
 
536
    dpd_contract444(&I, &T2, &Z, 0, 0, 1.0, 0.0);
 
537
    dpd_buf4_sort(&Z, CC_TMP3, psrq, 10, 0, "Z(Mb,jI)");
 
538
    dpd_buf4_close(&Z);
 
539
    dpd_buf4_close(&T2);
 
540
    dpd_buf4_close(&I);
 
541
    dpd_buf4_init(&Z, CC_TMP3, 0, 10, 0, 10, 0, 0, "Z(Mb,jI)");
 
542
    dpd_buf4_sort(&Z, CC_TMP4, pqsr, 10, 0, "Z(Mb,Ij)");
 
543
    dpd_buf4_close(&Z);
 
544
    dpd_buf4_init(&Z, CC_TMP4, 0, 10, 0, 10, 0, 0, "Z(Mb,Ij)");
 
545
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 0, 10, 0, 0, "WMbIj");
 
546
    dpd_buf4_axpy(&Z, &W, 1.0);
 
547
    dpd_buf4_close(&Z);
 
548
    dpd_buf4_close(&W);
 
549
 
 
550
    /** <Mn|Ie> t_jn^be **/
 
551
    dpd_buf4_init(&I, CC_TMP1, 0, 0, 10, 0, 10, 0, "I(MI,NE)");
 
552
    dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "tiajb");
 
553
    dpd_buf4_init(&Z, CC_TMP2, 0, 0, 10, 0, 10, 0, "Z(MI,jb)");
 
554
    dpd_contract444(&I, &T2, &Z, 0, 0, 1.0, 0.0);
 
555
    dpd_buf4_sort(&Z, CC_TMP3, psrq, 10, 0, "Z(Mb,jI)");
 
556
    dpd_buf4_close(&Z);
 
557
    dpd_buf4_close(&T2);
 
558
    dpd_buf4_close(&I);
 
559
    dpd_buf4_init(&Z, CC_TMP3, 0, 10, 0, 10, 0, 0, "Z(Mb,jI)");
 
560
    dpd_buf4_sort(&Z, CC_TMP4, pqsr, 10, 0, "Z(Mb,Ij)");
 
561
    dpd_buf4_close(&Z);
 
562
    dpd_buf4_init(&Z, CC_TMP4, 0, 10, 0, 10, 0, 0, "Z(Mb,Ij)");
 
563
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 0, 10, 0, 0, "WMbIj");
 
564
    dpd_buf4_axpy(&Z, &W, 1.0);
 
565
    dpd_buf4_close(&Z);
 
566
    dpd_buf4_close(&W);
 
567
 
 
568
    /** <mn||ie> t_Jn^Be **/
 
569
    dpd_buf4_init(&I, CC_TMP0, 0, 0, 10, 0, 10, 0, "I(MI,NE)");
 
570
    dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "tIAjb");
 
571
    dpd_buf4_init(&Z, CC_TMP2, 0, 0, 10, 0, 10, 0, "Z(mi,JB)");
 
572
    dpd_contract444(&I, &T2, &Z, 0, 0, 1.0, 0.0);
 
573
    dpd_buf4_sort(&Z, CC_TMP3, psrq, 10, 0, "Z(mB,Ji)");
 
574
    dpd_buf4_close(&Z);
 
575
    dpd_buf4_close(&T2);
 
576
    dpd_buf4_close(&I);
 
577
    dpd_buf4_init(&Z, CC_TMP3, 0, 10, 0, 10, 0, 0, "Z(mB,Ji)");
 
578
    dpd_buf4_sort(&Z, CC_TMP4, pqsr, 10, 0, "Z(mB,iJ)");
 
579
    dpd_buf4_close(&Z);
 
580
    dpd_buf4_init(&Z, CC_TMP4, 0, 10, 0, 10, 0, 0, "Z(mB,iJ)");
 
581
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 0, 10, 0, 0, "WmBiJ");
 
582
    dpd_buf4_axpy(&Z, &W, 1.0);
 
583
    dpd_buf4_close(&Z);
 
584
    dpd_buf4_close(&W);
 
585
 
 
586
    /** <mN|iE> t_JN^BE **/
 
587
    dpd_buf4_init(&I, CC_TMP1, 0, 0, 10, 0, 10, 0, "I(MI,NE)");
 
588
    dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "tIAJB");
 
589
    dpd_buf4_init(&Z, CC_TMP2, 0, 0, 10, 0, 10, 0, "Z(mi,JB)");
 
590
    dpd_contract444(&I, &T2, &Z, 0, 0, 1.0, 0.0);
 
591
    dpd_buf4_sort(&Z, CC_TMP3, psrq, 10, 0, "Z(mB,Ji)");
 
592
    dpd_buf4_close(&Z);
 
593
    dpd_buf4_close(&T2);
 
594
    dpd_buf4_close(&I);
 
595
    dpd_buf4_init(&Z, CC_TMP3, 0, 10, 0, 10, 0, 0, "Z(mB,Ji)");
 
596
    dpd_buf4_sort(&Z, CC_TMP4, pqsr, 10, 0, "Z(mB,iJ)");
 
597
    dpd_buf4_close(&Z);
 
598
    dpd_buf4_init(&Z, CC_TMP4, 0, 10, 0, 10, 0, 0, "Z(mB,iJ)");
 
599
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 0, 10, 0, 0, "WmBiJ");
 
600
    dpd_buf4_axpy(&Z, &W, 1.0);
 
601
    dpd_buf4_close(&Z);
 
602
    dpd_buf4_close(&W);
 
603
  } /** RHF or ROHF **/
 
604
  else if(params.ref == 2) { /** UHF **/
 
605
 
 
606
    dpd_buf4_init(&Z, CC_TMP0, 0, 0, 20, 0, 20, 0, "Z(MI,JB)");
 
607
 
 
608
    /** <MN||IE> t_JN^BE **/
 
609
    dpd_buf4_init(&I, CC_TMP0, 0, 0, 20, 0, 20, 0, "<MN||IE> (MI,NE)");
 
610
    dpd_buf4_init(&T2, CC_TAMPS, 0, 20, 20, 20, 20, 0, "tIAJB");
 
611
    dpd_contract444(&I, &T2, &Z, 0, 0, 1.0, 0.0);
 
612
    dpd_buf4_close(&T2);
 
613
    dpd_buf4_close(&I);
 
614
 
 
615
    /** <Mn|Ie> t_Jn^Be **/
 
616
    dpd_buf4_init(&I, CC_TMP0, 0, 0, 30, 0, 30, 0, "<Mn|Ie> (MI,ne)");
 
617
    dpd_buf4_init(&T2, CC_TAMPS, 0, 20, 30, 20, 30, 0, "tIAjb");
 
618
    dpd_contract444(&I, &T2, &Z, 0, 0, 1.0, 1.0);
 
619
    dpd_buf4_close(&T2);
 
620
    dpd_buf4_close(&I);
 
621
 
 
622
    /** Z(MI,JB) --> Z(MB,IJ) **/
 
623
    dpd_buf4_sort(&Z, CC_TMP0, psqr, 20, 0, "Z(MB,IJ)");
 
624
    dpd_buf4_close(&Z);
 
625
 
 
626
    /** Z(MB,IJ) = Z(MB,IJ) - Z(MB,JI) **/
 
627
    dpd_buf4_init(&Z1, CC_TMP0, 0, 20, 0, 20, 0, 0, "Z(MB,IJ)");
 
628
    dpd_buf4_sort(&Z1, CC_TMP0, pqsr, 20, 0, "Z(MB,JI)");
 
629
    dpd_buf4_init(&Z2, CC_TMP0, 0, 20, 0, 20, 0, 0, "Z(MB,JI)");
 
630
    dpd_buf4_axpy(&Z2, &Z1, -1.0);
 
631
    dpd_buf4_close(&Z2);
 
632
 
 
633
    /** Z(MB,IJ) --> W(MB,IJ) **/
 
634
    dpd_buf4_init(&W, CC_HBAR, 0, 20, 0, 20, 2, 0, "WMBIJ");
 
635
    dpd_buf4_axpy(&Z1, &W, 1.0);
 
636
    dpd_buf4_close(&Z1);
 
637
    dpd_buf4_close(&W);
 
638
 
 
639
 
 
640
    dpd_buf4_init(&Z, CC_TMP0, 0, 10, 30, 10, 30, 0, "Z(mi,jb)");
 
641
 
 
642
    /** <mn||ie> t_jn^be **/
 
643
    dpd_buf4_init(&I, CC_TMP0, 0, 10, 30, 10, 30, 0, "<mn||ie> (mi,ne)");
 
644
    dpd_buf4_init(&T2, CC_TAMPS, 0, 30, 30, 30, 30, 0, "tiajb");
 
645
    dpd_contract444(&I, &T2, &Z, 0, 0, 1.0, 0.0);
 
646
    dpd_buf4_close(&T2);
 
647
    dpd_buf4_close(&I);
 
648
 
 
649
    /** <mN||iE> t_jN^bE **/
 
650
    dpd_buf4_init(&I, CC_TMP0, 0, 10, 20, 10, 20, 0, "<mN|iE> (mi,NE)");
 
651
    dpd_buf4_init(&T2, CC_TAMPS, 0, 30, 20, 30, 20, 0, "tiaJB");
 
652
    dpd_contract444(&I, &T2, &Z, 0, 0, 1.0, 1.0);
 
653
    dpd_buf4_close(&T2);
 
654
    dpd_buf4_close(&I);
 
655
 
 
656
    /** Z(mi,jb) --> Z(mb,ij) **/
 
657
    dpd_buf4_sort(&Z, CC_TMP0, psqr, 30, 10, "Z(mb,ij)");
 
658
    dpd_buf4_close(&Z);
 
659
 
 
660
    /** Z(mb,ij) = Z(mb,ij) - Z(mb,ji) **/
 
661
    dpd_buf4_init(&Z1, CC_TMP0, 0, 30, 10, 30, 10, 0, "Z(mb,ij)");
 
662
    dpd_buf4_sort(&Z1, CC_TMP0, pqsr, 30, 10, "Z(mb,ji)");
 
663
    dpd_buf4_init(&Z2, CC_TMP0, 0, 30, 10, 30, 10, 0, "Z(mb,ji)");
 
664
    dpd_buf4_axpy(&Z2, &Z1, -1.0);
 
665
    dpd_buf4_close(&Z2);
 
666
 
 
667
    /** Z(mb,ij) --> W(mb,ij) **/
 
668
    dpd_buf4_init(&W, CC_HBAR, 0, 30, 10, 30, 12, 0, "Wmbij");
 
669
    dpd_buf4_axpy(&Z1, &W, 1.0);
 
670
    dpd_buf4_close(&Z1);
 
671
    dpd_buf4_close(&W);
 
672
 
 
673
 
 
674
    dpd_buf4_init(&Z, CC_TMP0, 0, 0, 30, 0, 30, 0, "Z(MI,jb)");
 
675
 
 
676
    /** <MN||IE> t_jN^bE **/
 
677
    dpd_buf4_init(&I, CC_TMP0, 0, 0, 20, 0, 20, 0, "<MN||IE> (MI,NE)");
 
678
    dpd_buf4_init(&T2, CC_TAMPS, 0, 30, 20, 30, 20, 0, "tiaJB");
 
679
    dpd_contract444(&I, &T2, &Z, 0, 0, 1.0, 0.0);
 
680
    dpd_buf4_close(&T2);
 
681
    dpd_buf4_close(&I);
 
682
 
 
683
    /** <Mn|Ie> t_jn^be **/
 
684
    dpd_buf4_init(&I, CC_TMP0, 0, 0, 30, 0, 30, 0, "<Mn|Ie> (MI,ne)");
 
685
    dpd_buf4_init(&T2, CC_TAMPS, 0, 30, 30, 30, 30, 0, "tiajb");
 
686
    dpd_contract444(&I, &T2, &Z, 0, 0, 1.0, 1.0);
 
687
    dpd_buf4_close(&T2);
 
688
    dpd_buf4_close(&I);
 
689
 
 
690
    /** Z(MI,jb) --> Z(Mb,Ij) **/
 
691
    dpd_buf4_sort(&Z, CC_TMP0, psqr, 24, 22, "Z(Mb,Ij)");
 
692
    dpd_buf4_close(&Z);
 
693
 
 
694
 
 
695
    /** -<Mn|Ej> t_In^Eb **/
 
696
    dpd_buf4_init(&Z, CC_TMP0, 0, 22, 24, 22, 24, 0, "Z(Mj,Ib)");
 
697
    dpd_buf4_init(&I, CC_EINTS, 0, 22, 26, 22, 26, 0, "E <Ij|Ak>");
 
698
    dpd_buf4_init(&T2, CC_TAMPS, 0, 24, 26, 24, 26, 0, "tIbAj");
 
699
    dpd_contract444(&I, &T2, &Z, 0, 0, -1.0, 0.0);
 
700
    dpd_buf4_close(&T2);
 
701
    dpd_buf4_close(&I);
 
702
 
 
703
    dpd_buf4_sort(&Z, CC_TMP0, psrq, 24, 22, "Z1(Mb,Ij)");
 
704
    dpd_buf4_close(&Z);
 
705
 
 
706
    /** Z(Mb,Ij) --> W(Mb,Ij) **/
 
707
    dpd_buf4_init(&Z, CC_TMP0, 0, 24, 22, 24, 22, 0, "Z(Mb,Ij)");
 
708
    dpd_buf4_init(&Z1, CC_TMP0, 0, 24, 22, 24, 22, 0, "Z1(Mb,Ij)");
 
709
    dpd_buf4_axpy(&Z1, &Z, 1.0);
 
710
    dpd_buf4_close(&Z1);
 
711
    dpd_buf4_init(&W, CC_HBAR, 0, 24, 22, 24, 22, 0, "WMbIj");
 
712
    dpd_buf4_axpy(&Z, &W, 1.0);
 
713
    dpd_buf4_close(&W);
 
714
    dpd_buf4_close(&Z);
 
715
 
 
716
 
 
717
    dpd_buf4_init(&Z, CC_TMP0, 0, 10, 20, 10, 20, 0, "Z(mi,JB)");
 
718
 
 
719
    /** <mn||ie> t_Jn^Be **/
 
720
    dpd_buf4_init(&I, CC_TMP0, 0, 10, 30, 10, 30, 0, "<mn||ie> (mi,ne)");
 
721
    dpd_buf4_init(&T2, CC_TAMPS, 0, 20, 30, 20, 30, 0, "tIAjb");
 
722
    dpd_contract444(&I, &T2, &Z, 0, 0, 1.0, 0.0);
 
723
    dpd_buf4_close(&T2);
 
724
    dpd_buf4_close(&I);
 
725
 
 
726
    /** <mN|iE> t_JN^BE **/
 
727
    dpd_buf4_init(&I, CC_TMP0, 0, 10, 20, 10, 20, 0, "<mN|iE> (mi,NE)");
 
728
    dpd_buf4_init(&T2, CC_TAMPS, 0, 20, 20, 20, 20, 0, "tIAJB");
 
729
    dpd_contract444(&I, &T2, &Z, 0, 0, 1.0, 1.0);
 
730
    dpd_buf4_close(&T2);
 
731
    dpd_buf4_close(&I);
 
732
 
 
733
    /** Z(mi,JB) --> Z(mB,iJ) **/
 
734
    dpd_buf4_sort(&Z, CC_TMP0, psqr, 27, 23, "Z(mB,iJ)");
 
735
    dpd_buf4_close(&Z);
 
736
 
 
737
    /** Z(mB,iJ) --> W(mB,iJ) **/
 
738
    dpd_buf4_init(&Z, CC_TMP0, 0, 27, 23, 27, 23, 0, "Z(mB,iJ)");
 
739
    dpd_buf4_init(&W, CC_HBAR, 0, 27, 23, 27, 23, 0, "WmBiJ");
 
740
    dpd_buf4_axpy(&Z, &W, 1.0);
 
741
    dpd_buf4_close(&W);
 
742
 
 
743
    dpd_buf4_close(&Z);
 
744
 
 
745
    /** -<mN|eJ> t_iN^eB **/
 
746
    dpd_buf4_init(&Z, CC_TMP0, 0, 23, 27, 23, 27, 0, "Z(mJ,iB)");
 
747
    dpd_buf4_init(&I, CC_EINTS, 0, 23, 25, 23, 25, 0, "E <iJ|aK>");
 
748
    dpd_buf4_init(&T2, CC_TAMPS, 0, 27, 25, 27, 25, 0, "tiBaJ");
 
749
    dpd_contract444(&I, &T2, &Z, 0, 0, -1.0, 0.0);
 
750
    dpd_buf4_close(&T2);
 
751
    dpd_buf4_close(&I);
 
752
 
 
753
    dpd_buf4_sort(&Z, CC_TMP0, psrq, 27, 23, "Z(mB,iJ)");
 
754
    dpd_buf4_close(&Z);
 
755
 
 
756
    dpd_buf4_init(&Z, CC_TMP0, 0, 27, 23, 27, 23, 0, "Z(mB,iJ)");
 
757
    dpd_buf4_init(&W, CC_HBAR, 0, 27, 23, 27, 23, 0, "WmBiJ");
 
758
    dpd_buf4_axpy(&Z, &W, 1.0);
 
759
    dpd_buf4_close(&W);
 
760
    dpd_buf4_close(&Z);
 
761
 
 
762
  } /** UHF **/
 
763
 
 
764
 
 
765
  if(params.ref == 1) { /** RHF or ROHF **/
 
766
 
 
767
    /* Sort <ai||jk> integrals for remaining E*T2 contributions */
 
768
    /** THIS IS NOT ACTUALLY NECESSARY!  FIX THESE CONTRACTIONS! (11/14/01) **/
 
769
    dpd_buf4_init(&I, CC_EINTS, 0, 11, 0, 11, 0, 0, "E <ai|jk>");
 
770
    dpd_buf4_sort(&I, CC_TMP0, rspq, 0, 11, "I(Mn,Ej)");
 
771
    dpd_buf4_close(&I);
 
772
    dpd_buf4_init(&I, CC_TMP0, 0, 0, 11, 0, 11, 0, "I(Mn,Ej)");
 
773
    dpd_buf4_sort(&I, CC_TMP1, psrq, 0, 11, "I(Mj,En)");
 
774
    dpd_buf4_close(&I);
 
775
 
 
776
 
 
777
    /** -<Mn|Ej> t_In^EB **/ /** Can be written as: - <Mj|En> t_In^Eb !! **/
 
778
    dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tIjAb");
 
779
    dpd_buf4_sort(&T2, CC_TMP0, psrq, 10, 11, "T2(Ib,En)");
 
780
    dpd_buf4_close(&T2);
 
781
    dpd_buf4_init(&I, CC_TMP1, 0, 0, 11, 0, 11, 0, "I(Mj,En)");
 
782
    dpd_buf4_init(&T2, CC_TMP0, 0, 10, 11, 10, 11, 0, "T2(Ib,En)");
 
783
    dpd_buf4_init(&Z, CC_TMP2, 0, 0, 10, 0, 10, 0, "Z(Mj,Ib)");
 
784
    dpd_contract444(&I, &T2, &Z, 0, 0, -1.0, 0.0);
 
785
    dpd_buf4_sort(&Z, CC_TMP0, psrq, 10, 0, "Z(Mb,Ij)");
 
786
    dpd_buf4_close(&T2);
 
787
    dpd_buf4_close(&I);
 
788
    dpd_buf4_close(&Z);
 
789
    dpd_buf4_init(&Z, CC_TMP0, 0, 10, 0, 10, 0, 0, "Z(Mb,Ij)");
 
790
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 0, 10, 0, 0, "WMbIj");
 
791
    dpd_buf4_axpy(&Z, &W, 1.0);
 
792
    dpd_buf4_close(&Z);
 
793
    dpd_buf4_close(&W);
 
794
  
 
795
 
 
796
    /** -<mN|eJ> t_iN^eB **/ /** Can be written as: -<mJ|eN> t_iN^Eb !! **/
 
797
    dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tiJaB");
 
798
    dpd_buf4_sort(&T2, CC_TMP0, psrq, 10, 11, "T2(iB,eN)");
 
799
    dpd_buf4_close(&T2);
 
800
    dpd_buf4_init(&I, CC_TMP1, 0, 0, 11, 0, 11, 0, "I(Mj,En)");
 
801
    dpd_buf4_init(&T2, CC_TMP0, 0, 10, 11, 10, 11, 0, "T2(iB,eN)");
 
802
    dpd_buf4_init(&Z, CC_TMP2, 0, 0, 10, 0, 10, 0, "Z(mJ,iB)");
 
803
    dpd_contract444(&I, &T2, &Z, 0, 0, -1.0, 0.0);
 
804
    dpd_buf4_sort(&Z, CC_TMP0, psrq, 10, 0, "Z(mB,iJ)");
 
805
    dpd_buf4_close(&T2);
 
806
    dpd_buf4_close(&I);
 
807
    dpd_buf4_close(&Z);
 
808
    dpd_buf4_init(&Z, CC_TMP0, 0, 10, 0, 10, 0, 0, "Z(mB,iJ)");
 
809
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 0, 10, 0, 0, "WmBiJ");
 
810
    dpd_buf4_axpy(&Z, &W, 1.0);
 
811
    dpd_buf4_close(&Z);
 
812
    dpd_buf4_close(&W);
 
813
  }
 
814
 
 
815
  /** Prepare intermediates for final term of Wmbij **/
 
816
 
 
817
  if(params.ref == 0) { /** RHF **/
 
818
 
 
819
    /* Z(ME,jb) = { <Mb|Ej> + t_jN^bF [2 <Mn|Ef> - <Mn|Fe>] - t_jN^Fb <Mn|Ef> } */
 
820
    dpd_buf4_init(&Z, CC_TMP0, 0, 10, 10, 10, 10, 0, "Z(ME,jb)");
 
821
 
 
822
    dpd_buf4_init(&D, CC_DINTS, 0, 10, 10, 10, 10, 0, "D 2<ij|ab> - <ij|ba> (ia,jb)");
 
823
    dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "tIAjb");
 
824
    dpd_contract444(&D, &T2, &Z, 0, 0, 1, 0);
 
825
    dpd_buf4_close(&T2);
 
826
    dpd_buf4_close(&D);
 
827
 
 
828
    dpd_buf4_init(&D, CC_DINTS, 0, 10, 10, 10, 10, 0, "D <ij|ab> (ia,jb)");
 
829
    dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "tIbjA");
 
830
    dpd_contract444(&D, &T2, &Z, 0, 0, -1, 1);
 
831
    dpd_buf4_close(&T2);
 
832
    dpd_buf4_close(&D);
 
833
 
 
834
    dpd_buf4_init(&D, CC_DINTS, 0, 10, 10, 10, 10, 0, "D <ij|ab> (ia,jb)");
 
835
    dpd_buf4_axpy(&D, &Z, 1);
 
836
    dpd_buf4_close(&D);
 
837
 
 
838
    /* W(Mb,Ij) <-- Z(ME,jb) t_I^E */
 
839
    dpd_buf4_init(&Z1, CC_TMP0, 0, 0, 10, 0, 10, 0, "Z(MI,jb)");
 
840
    dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
 
841
    dpd_contract424(&Z, &T1, &Z1, 1, 1, 1, 1, 0);
 
842
    dpd_file2_close(&T1);
 
843
    dpd_buf4_close(&Z);
 
844
 
 
845
    dpd_buf4_sort_axpy(&Z1, CC_HBAR, psqr, 10, 0, "WMbIj", 1);
 
846
    dpd_buf4_close(&Z1);
 
847
 
 
848
    /* Z(Me,Ib) = { - <Mb|Ie> + t_In^Fb <Mn|Fe> } */
 
849
    dpd_buf4_init(&Z, CC_TMP0, 0, 10, 10, 10, 10, 0, "Z(Me,Ib)");
 
850
    dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "tIbjA");
 
851
    dpd_buf4_init(&D, CC_DINTS, 0, 10, 10, 10, 10, 0, "D <ij|ab> (ib,ja)");
 
852
    dpd_contract444(&D, &T2, &Z, 0, 0, 1, 0);
 
853
    dpd_buf4_close(&D);
 
854
    dpd_buf4_close(&T2);
 
855
    dpd_buf4_close(&Z);
 
856
 
 
857
    dpd_buf4_init(&C, CC_CINTS, 0, 11, 10, 11, 10, 0, "C <ia|jb> (bi,ja)");
 
858
    dpd_buf4_sort_axpy(&C, CC_TMP0, qprs, 10, 10, "Z(Me,Ib)", -1);
 
859
    dpd_buf4_close(&C);
 
860
 
 
861
    /* W(Mb,Ij) <-- Z(Me,Ib) t_j^e */
 
862
    dpd_buf4_init(&Z1, CC_TMP0, 0, 0, 10, 0, 10, 0, "Z(Mj,Ib)");
 
863
    dpd_buf4_init(&Z, CC_TMP0, 0, 10, 10, 10, 10, 0, "Z(Me,Ib)");
 
864
    dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
 
865
    dpd_contract424(&Z, &T1, &Z1, 1, 1, 1, 1, 0);
 
866
    dpd_file2_close(&T1);
 
867
    dpd_buf4_close(&Z);
 
868
 
 
869
    dpd_buf4_sort_axpy(&Z1, CC_HBAR, psrq, 10, 0, "WMbIj", -1);
 
870
    dpd_buf4_close(&Z1);
 
871
 
 
872
  }
 
873
  else if(params.ref == 1) { /** ROHF **/
 
874
 
 
875
    /** t_JN^BF <MN||EF> --> Z_MBJE **/
 
876
    dpd_buf4_init(&Z, CC_TMP0, 0, 10, 10, 10, 10, 0, "Z(ME,JB)");
 
877
    dpd_buf4_init(&D, CC_DINTS, 0, 10, 10, 10, 10, 0, "D <ij||ab> (ia,jb)");
 
878
    dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "tIAJB");
 
879
    dpd_contract444(&D, &T2, &Z, 0, 0, 1.0, 0.0);
 
880
    dpd_buf4_close(&T2);
 
881
    dpd_buf4_close(&D);
 
882
    dpd_buf4_init(&D, CC_DINTS, 0, 10, 10, 10, 10, 0, "D <ij|ab> (ia,jb)");
 
883
    dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "tIAjb");
 
884
    dpd_contract444(&D, &T2, &Z, 0, 0, 1.0, 1.0);
 
885
    dpd_buf4_close(&T2);
 
886
    dpd_buf4_close(&D);
 
887
    dpd_buf4_sort(&Z, CC_TMP1, psrq, 10, 10, "Z(MB,JE)");
 
888
    dpd_buf4_close(&Z);
 
889
 
 
890
    /** t_I^E ( <MB||JE> + Z1_MBJE ) --> Z2_MBIJ **/
 
891
    dpd_buf4_init(&Z1, CC_TMP1, 0, 10, 10, 10, 10, 0, "Z(MB,JE)");
 
892
    dpd_buf4_init(&C, CC_CINTS, 0, 10, 10, 10, 10, 0, "C <ia||jb>");
 
893
    dpd_buf4_axpy(&C, &Z1, -1.0);
 
894
    dpd_buf4_close(&C);
 
895
    dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
 
896
    dpd_buf4_init(&Z2, CC_TMP0, 0, 10, 0, 10, 0, 0, "Z1(MB,JI)");
 
897
    dpd_contract424(&Z1, &T1, &Z2, 3, 1, 0, 1.0, 0.0);
 
898
    dpd_file2_close(&T1);
 
899
    dpd_buf4_close(&Z1);
 
900
    dpd_buf4_sort(&Z2, CC_TMP1, pqsr, 10, 0, "Z2(MB,IJ)");
 
901
    dpd_buf4_close(&Z2);
 
902
 
 
903
    /** Z1_MBJI(TMP0) - Z2_MBIJ(TMP1) --> W_MBIJ **/
 
904
    dpd_buf4_init(&Z1, CC_TMP0, 0, 10, 0, 10, 0, 0, "Z1(MB,JI)");
 
905
    dpd_buf4_init(&Z2, CC_TMP1, 0, 10, 0, 10, 0, 0, "Z2(MB,IJ)");
 
906
    dpd_buf4_axpy(&Z1, &Z2, -1.0);
 
907
    dpd_buf4_close(&Z1);
 
908
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 0, 10, 2, 0, "WMBIJ");
 
909
    dpd_buf4_axpy(&Z2, &W, 1.0);
 
910
    dpd_buf4_close(&Z2);
 
911
    dpd_buf4_close(&W);
 
912
 
 
913
    /** t_jn^bf <mn||ef> --> Z_mbje **/
 
914
    dpd_buf4_init(&Z, CC_TMP0, 0, 10, 10, 10, 10, 0, "Z(me,jb)");
 
915
    dpd_buf4_init(&D, CC_DINTS, 0, 10, 10, 10, 10, 0, "D <ij||ab> (ia,jb)");
 
916
    dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "tiajb");
 
917
    dpd_contract444(&D, &T2, &Z, 0, 0, 1.0, 0.0);
 
918
    dpd_buf4_close(&T2);
 
919
    dpd_buf4_close(&D);
 
920
    dpd_buf4_init(&D, CC_DINTS, 0, 10, 10, 10, 10, 0, "D <ij|ab> (ia,jb)");
 
921
    dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "tiaJB");
 
922
    dpd_contract444(&D, &T2, &Z, 0, 0, 1.0, 1.0);
 
923
    dpd_buf4_close(&T2);
 
924
    dpd_buf4_close(&D);
 
925
    dpd_buf4_sort(&Z, CC_TMP1, psrq, 10, 10, "Z(mb,je)");
 
926
    dpd_buf4_close(&Z);
 
927
 
 
928
    /** t_i^e ( <mb||je> + Z1_mbje ) --> Z2_mbij **/
 
929
    dpd_buf4_init(&Z1, CC_TMP1, 0, 10, 10, 10, 10, 0, "Z(mb,je)");
 
930
    dpd_buf4_init(&C, CC_CINTS, 0, 10, 10, 10, 10, 0, "C <ia||jb>");
 
931
    dpd_buf4_axpy(&C, &Z1, -1.0);
 
932
    dpd_buf4_close(&C);
 
933
    dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tia");
 
934
    dpd_buf4_init(&Z2, CC_TMP0, 0, 10, 0, 10, 0, 0, "Z1(mb,ji)");
 
935
    dpd_contract424(&Z1, &T1, &Z2, 3, 1, 0, 1.0, 0.0);
 
936
    dpd_file2_close(&T1);
 
937
    dpd_buf4_close(&Z1);
 
938
    dpd_buf4_sort(&Z2, CC_TMP1, pqsr, 10, 0, "Z2(mb,ij)");
 
939
    dpd_buf4_close(&Z2);
 
940
 
 
941
    /** Z1_mbji(TMP0) - Z2_mbij(TMP1) --> W_mbij **/
 
942
    dpd_buf4_init(&Z1, CC_TMP0, 0, 10, 0, 10, 0, 0, "Z1(mb,ji)");
 
943
    dpd_buf4_init(&Z2, CC_TMP1, 0, 10, 0, 10, 0, 0, "Z2(mb,ij)");
 
944
    dpd_buf4_axpy(&Z1, &Z2, -1.0);
 
945
    dpd_buf4_close(&Z1);
 
946
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 0, 10, 2, 0, "Wmbij");
 
947
    dpd_buf4_axpy(&Z2, &W, 1.0);
 
948
    dpd_buf4_close(&Z2);
 
949
    dpd_buf4_close(&W);
 
950
 
 
951
 
 
952
    /** <Mn|Ef> t_jn^bf + <MN||EF> t_jN^bF --> Z1_MEjb(TMP0) **/
 
953
    dpd_buf4_init(&Z1, CC_TMP0, 0, 10, 10, 10, 10, 0, "Z1(ME,jb)");
 
954
    dpd_buf4_init(&D, CC_DINTS, 0, 10, 10, 10, 10, 0, "D <ij|ab> (ia,jb)");
 
955
    dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "tiajb");
 
956
    dpd_contract444(&D, &T2, &Z1, 0, 0, 1.0, 0.0);
 
957
    dpd_buf4_close(&T2);
 
958
    dpd_buf4_close(&D);
 
959
    dpd_buf4_init(&D, CC_DINTS, 0, 10, 10, 10, 10, 0, "D <ij||ab> (ia,jb)");
 
960
    dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "tiaJB");
 
961
    dpd_contract444(&D, &T2, &Z1, 0, 0, 1.0, 1.0);
 
962
    dpd_buf4_close(&T2);
 
963
    dpd_buf4_close(&D);
 
964
    dpd_buf4_close(&Z1);
 
965
 
 
966
    /** <Mn|Fe> t_In^Fb --> Z2_MeIb (TMP3) **/
 
967
    dpd_buf4_init(&D, CC_DINTS, 0, 0, 5, 0, 5, 0, "D <ij|ab>");
 
968
    dpd_buf4_sort(&D, CC_TMP1, psrq, 10, 11, "D(Me,Fn)");
 
969
    dpd_buf4_close(&D);
 
970
    dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tIjAb");
 
971
    dpd_buf4_sort(&T2, CC_TMP2, psrq, 10, 11, "T2(Ib,Fn)");
 
972
    dpd_buf4_close(&T2);
 
973
    dpd_buf4_init(&Z2, CC_TMP3, 0, 10, 10, 10, 10, 0, "Z(Me,Ib)");
 
974
    dpd_buf4_init(&T2, CC_TMP2, 0, 10, 11, 10, 11, 0, "T2(Ib,Fn)");
 
975
    dpd_buf4_init(&D, CC_TMP1, 0, 10, 11, 10, 11, 0, "D(Me,Fn)");
 
976
    dpd_contract444(&D, &T2, &Z2, 0, 0, 1.0, 0.0);
 
977
    dpd_buf4_close(&D);
 
978
    dpd_buf4_close(&T2);
 
979
    dpd_buf4_close(&Z2);
 
980
 
 
981
    dpd_buf4_init(&Z1, CC_TMP0, 0, 10, 10, 10, 10, 0, "Z1(ME,jb)");
 
982
    dpd_buf4_sort(&Z1, CC_TMP1, psrq, 10, 10, "Z1(Mb,jE)");
 
983
    dpd_buf4_close(&Z1);
 
984
    dpd_buf4_init(&Z2, CC_TMP3, 0, 10, 10, 10, 10, 0, "Z(Me,Ib)");
 
985
    dpd_buf4_sort(&Z2, CC_TMP0, psrq, 10, 10, "Z(Mb,Ie)");
 
986
    dpd_buf4_close(&Z2);
 
987
 
 
988
    /** t_I^E ( <Mj|Eb> + Z(Mb,jE)(TMP1) ) --> Z(Mb,jI)(TMP1) **/
 
989
    dpd_buf4_init(&Z1, CC_TMP1, 0, 10, 10, 10, 10, 0, "Z1(Mb,jE)");
 
990
    dpd_buf4_init(&D, CC_DINTS, 0, 10, 10, 10, 10, 0, "D <ij|ab> (ib,ja)");
 
991
    dpd_buf4_axpy(&D, &Z1, 1.0);
 
992
    dpd_buf4_close(&D);
 
993
    dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
 
994
    dpd_buf4_init(&Z, CC_TMP2, 0, 10, 0, 10, 0, 0, "Z(Mb,jI)");
 
995
    dpd_contract424(&Z1, &T1, &Z, 3, 1, 0, 1.0, 0.0);
 
996
    dpd_file2_close(&T1);
 
997
    dpd_buf4_close(&Z1);
 
998
    dpd_buf4_sort(&Z, CC_TMP1, pqsr, 10, 0, "Z(Mb,Ij)");
 
999
    dpd_buf4_close(&Z);
 
1000
 
 
1001
    /** t_j^e ( <Mb|Ie> - Z(Mb,Ie)(TMP0) ) --> Z(Mb,Ij)(TMP2) **/
 
1002
    dpd_buf4_init(&Z1, CC_TMP0, 0, 10, 10, 10, 10, 0, "Z(Mb,Ie)");
 
1003
    dpd_buf4_init(&C, CC_CINTS, 0, 10, 10, 10, 10, 0, "C <ia|jb>");
 
1004
    dpd_buf4_axpy(&C, &Z1, -1.0);
 
1005
    dpd_buf4_close(&C);
 
1006
    dpd_buf4_scm(&Z1, -1.0);
 
1007
    dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tia");
 
1008
    dpd_buf4_init(&Z, CC_TMP2, 0, 10, 0, 10, 0, 0, "Z(Mb,Ij)");
 
1009
    dpd_contract424(&Z1, &T1, &Z, 3, 1, 0, 1.0, 0.0);
 
1010
    dpd_file2_close(&T1);
 
1011
    dpd_buf4_close(&Z1);
 
1012
    dpd_buf4_close(&Z);
 
1013
 
 
1014
    /** Z(Mb,Ij) (TMP1) + Z(Mb,Ij) (TMP2) --> W_MbIj **/
 
1015
    dpd_buf4_init(&Z1, CC_TMP1, 0, 10, 0, 10, 0, 0, "Z(Mb,Ij)");
 
1016
    dpd_buf4_init(&Z2, CC_TMP2, 0, 10, 0, 10, 0, 0, "Z(Mb,Ij)");
 
1017
    dpd_buf4_axpy(&Z2, &Z1, 1.0);
 
1018
    dpd_buf4_close(&Z2);
 
1019
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 0, 10, 0, 0, "WMbIj");
 
1020
    dpd_buf4_axpy(&Z1, &W, 1.0);
 
1021
    dpd_buf4_close(&Z1);
 
1022
    dpd_buf4_close(&W);
 
1023
 
 
1024
    /** t_JN^BF <mN|eF> + t_Jn^Bf <mn||ef> --> Z(mB,Je) (TMP1) **/
 
1025
    dpd_buf4_init(&Z, CC_TMP0, 0, 10, 10, 10, 10, 0, "Z(me,JB)");
 
1026
    dpd_buf4_init(&D, CC_DINTS, 0, 10, 10, 10, 10, 0, "D <ij|ab> (ia,jb)");
 
1027
    dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "tIAJB");
 
1028
    dpd_contract444(&D, &T2, &Z, 0 , 0, 1.0, 0.0);
 
1029
    dpd_buf4_close(&T2);
 
1030
    dpd_buf4_close(&D);
 
1031
    dpd_buf4_init(&D, CC_DINTS, 0, 10, 10, 10, 10, 0, "D <ij||ab> (ia,jb)");
 
1032
    dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "tIAjb");
 
1033
    dpd_contract444(&D, &T2, &Z, 0, 0, 1.0, 1.0);
 
1034
    dpd_buf4_close(&T2);
 
1035
    dpd_buf4_close(&D);
 
1036
    dpd_buf4_sort(&Z, CC_TMP1, psrq, 10, 10, "Z(mB,Je)");
 
1037
    dpd_buf4_close(&Z);
 
1038
 
 
1039
    /** -t_Ni^Bf <mN|fE> --> Z(mB,iE) (TMP0) **/
 
1040
    dpd_buf4_init(&Z, CC_TMP2, 0, 10, 10, 10, 10, 0, "Z(mE,iB)");
 
1041
    dpd_buf4_init(&D, CC_DINTS, 0, 10, 10, 10, 10, 0, "D <ij|ab> (ib,ja)");
 
1042
    dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "tjAIb");
 
1043
    dpd_contract444(&D, &T2, &Z, 0, 0, -1.0, 0.0);
 
1044
    dpd_buf4_close(&T2);
 
1045
    dpd_buf4_close(&D);
 
1046
    dpd_buf4_sort(&Z, CC_TMP0, psrq, 10, 10, "Z(mB,iE)");
 
1047
    dpd_buf4_close(&Z);
 
1048
 
 
1049
    /** t_i^e ( <mJ|eB> + Z(mB,Je) ) --> Z1(mB,iJ) (TMP1) **/
 
1050
    dpd_buf4_init(&Z, CC_TMP1, 0, 10, 10, 10, 10, 0, "Z(mB,Je)");
 
1051
    dpd_buf4_init(&D, CC_DINTS, 0, 10, 10, 10, 10, 0, "D <ij|ab> (ib,ja)");
 
1052
    dpd_buf4_axpy(&D, &Z, 1.0);
 
1053
    dpd_buf4_close(&D);
 
1054
    dpd_buf4_init(&Z1, CC_TMP2, 0, 10, 0, 10, 0, 0, "Z(mB,Ji)");
 
1055
    dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tia");
 
1056
    dpd_contract424(&Z, &T1, &Z1, 3, 1, 0, 1.0, 0.0);
 
1057
    dpd_file2_close(&T1);
 
1058
    dpd_buf4_close(&Z);
 
1059
    dpd_buf4_sort(&Z1, CC_TMP1, pqsr, 10, 0, "Z1(mB,iJ)");
 
1060
    dpd_buf4_close(&Z1);
 
1061
 
 
1062
    /** t_J^E ( <mB|iE> + Z(mB,iE) ) + Z1(mB,Ij) (TMP1) --> Z2(mB,iJ) (TMP2) **/
 
1063
    dpd_buf4_init(&Z, CC_TMP0, 0, 10, 10, 10, 10, 0, "Z(mB,iE)");
 
1064
    dpd_buf4_init(&C, CC_CINTS, 0, 10, 10, 10, 10, 0, "C <ia|jb>");
 
1065
    dpd_buf4_axpy(&C, &Z, 1.0);
 
1066
    dpd_buf4_close(&C);
 
1067
    dpd_buf4_init(&Z2, CC_TMP2, 0, 10, 0, 10, 0, 0, "Z2(mB,iJ)");
 
1068
    dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
 
1069
    dpd_contract424(&Z, &T1, &Z2, 3, 1, 0, 1.0, 0.0);
 
1070
    dpd_file2_close(&T1);
 
1071
    dpd_buf4_close(&Z);
 
1072
    dpd_buf4_init(&Z1, CC_TMP1, 0, 10, 0, 10, 0, 0, "Z1(mB,iJ)");
 
1073
    dpd_buf4_axpy(&Z1, &Z2, 1.0);
 
1074
    dpd_buf4_close(&Z1);
 
1075
 
 
1076
    /** Z2(mB,iJ) --> W_mBiJ **/
 
1077
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 0, 10, 0, 0, "WmBiJ");
 
1078
    dpd_buf4_axpy(&Z2, &W, 1.0);
 
1079
    dpd_buf4_close(&W);
 
1080
    dpd_buf4_close(&Z2);
 
1081
  } /** RHF or ROHF **/
 
1082
  else if(params.ref == 2) { /** UHF **/
 
1083
 
 
1084
    /** t_JN^BF <MN||EF> --> Z_MBJE **/
 
1085
    dpd_buf4_init(&Z, CC_TMP0, 0, 20, 20, 20, 20, 0, "Z(ME,JB)");
 
1086
    dpd_buf4_init(&D, CC_DINTS, 0, 20, 20, 20, 20, 0, "D <IJ||AB> (IA,JB)");
 
1087
    dpd_buf4_init(&T2, CC_TAMPS, 0, 20, 20, 20, 20, 0, "tIAJB");
 
1088
    dpd_contract444(&D, &T2, &Z, 0, 0, 1.0, 0.0);
 
1089
    dpd_buf4_close(&T2);
 
1090
    dpd_buf4_close(&D);
 
1091
    dpd_buf4_init(&D, CC_DINTS, 0, 20, 30, 20, 30, 0, "D <Ij|Ab> (IA,jb)");
 
1092
    dpd_buf4_init(&T2, CC_TAMPS, 0, 20, 30, 20, 30, 0, "tIAjb");
 
1093
    dpd_contract444(&D, &T2, &Z, 0, 0, 1.0, 1.0);
 
1094
    dpd_buf4_close(&T2);
 
1095
    dpd_buf4_close(&D);
 
1096
    dpd_buf4_sort(&Z, CC_TMP0, psrq, 20, 20, "Z(MB,JE)");
 
1097
    dpd_buf4_close(&Z);
 
1098
 
 
1099
    /** t_I^E ( <MB||JE> + Z1_MBJE ) --> Z2_MBIJ **/
 
1100
    dpd_buf4_init(&Z1, CC_TMP0, 0, 20, 20, 20, 20, 0, "Z(MB,JE)");
 
1101
    dpd_buf4_init(&C, CC_CINTS, 0, 20, 20, 20, 20, 0, "C <IA||JB>");
 
1102
    dpd_buf4_axpy(&C, &Z1, -1.0);
 
1103
    dpd_buf4_close(&C);
 
1104
    dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
 
1105
    dpd_buf4_init(&Z2, CC_TMP0, 0, 20, 0, 20, 0, 0, "Z1(MB,JI)");
 
1106
    dpd_contract424(&Z1, &T1, &Z2, 3, 1, 0, 1.0, 0.0);
 
1107
    dpd_file2_close(&T1);
 
1108
    dpd_buf4_close(&Z1);
 
1109
    dpd_buf4_sort(&Z2, CC_TMP0, pqsr, 20, 0, "Z2(MB,IJ)");
 
1110
    dpd_buf4_close(&Z2);
 
1111
 
 
1112
    /** Z1_MBJI - Z2_MBIJ --> W_MBIJ **/
 
1113
    dpd_buf4_init(&Z1, CC_TMP0, 0, 20, 0, 20, 0, 0, "Z1(MB,JI)");
 
1114
    dpd_buf4_init(&Z2, CC_TMP0, 0, 20, 0, 20, 0, 0, "Z2(MB,IJ)");
 
1115
    dpd_buf4_axpy(&Z1, &Z2, -1.0);
 
1116
    dpd_buf4_close(&Z1);
 
1117
    dpd_buf4_init(&W, CC_HBAR, 0, 20, 0, 20, 2, 0, "WMBIJ");
 
1118
    dpd_buf4_axpy(&Z2, &W, 1.0);
 
1119
    dpd_buf4_close(&Z2);
 
1120
    dpd_buf4_close(&W);
 
1121
 
 
1122
    /** t_jn^bf <mn||ef> --> Z_mbje **/
 
1123
    dpd_buf4_init(&Z, CC_TMP0, 0, 30, 30, 30, 30, 0, "Z(me,jb)");
 
1124
    dpd_buf4_init(&D, CC_DINTS, 0, 30, 30, 30, 30, 0, "D <ij||ab> (ia,jb)");
 
1125
    dpd_buf4_init(&T2, CC_TAMPS, 0, 30, 30, 30, 30, 0, "tiajb");
 
1126
    dpd_contract444(&D, &T2, &Z, 0, 0, 1.0, 0.0);
 
1127
    dpd_buf4_close(&T2);
 
1128
    dpd_buf4_close(&D);
 
1129
    dpd_buf4_init(&D, CC_DINTS, 0, 30, 20, 30, 20, 0, "D <Ij|Ab> (ia,JB)");
 
1130
    dpd_buf4_init(&T2, CC_TAMPS, 0, 30, 20, 30, 20, 0, "tiaJB");
 
1131
    dpd_contract444(&D, &T2, &Z, 0, 0, 1.0, 1.0);
 
1132
    dpd_buf4_close(&T2);
 
1133
    dpd_buf4_close(&D);
 
1134
    dpd_buf4_sort(&Z, CC_TMP0, psrq, 30, 30, "Z(mb,je)");
 
1135
    dpd_buf4_close(&Z);
 
1136
 
 
1137
    /** t_i^e ( <mb||je> + Z1_mbje ) --> Z2_mbij **/
 
1138
    dpd_buf4_init(&Z1, CC_TMP0, 0, 30, 30, 30, 30, 0, "Z(mb,je)");
 
1139
    dpd_buf4_init(&C, CC_CINTS, 0, 30, 30, 30, 30, 0, "C <ia||jb>");
 
1140
    dpd_buf4_axpy(&C, &Z1, -1.0);
 
1141
    dpd_buf4_close(&C);
 
1142
    dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
 
1143
    dpd_buf4_init(&Z2, CC_TMP0, 0, 30, 10, 30, 10, 0, "Z1(mb,ji)");
 
1144
    dpd_contract424(&Z1, &T1, &Z2, 3, 1, 0, 1.0, 0.0);
 
1145
    dpd_file2_close(&T1);
 
1146
    dpd_buf4_close(&Z1);
 
1147
    dpd_buf4_sort(&Z2, CC_TMP0, pqsr, 30, 10, "Z2(mb,ij)");
 
1148
    dpd_buf4_close(&Z2);
 
1149
 
 
1150
    /** Z1_mbji - Z2_mbij --> W_mbij **/
 
1151
    dpd_buf4_init(&Z1, CC_TMP0, 0, 30, 10, 30, 10, 0, "Z1(mb,ji)");
 
1152
    dpd_buf4_init(&Z2, CC_TMP0, 0, 30, 10, 30, 10, 0, "Z2(mb,ij)");
 
1153
    dpd_buf4_axpy(&Z1, &Z2, -1.0);
 
1154
    dpd_buf4_close(&Z1);
 
1155
    dpd_buf4_init(&W, CC_HBAR, 0, 30, 10, 30, 12, 0, "Wmbij");
 
1156
    dpd_buf4_axpy(&Z2, &W, 1.0);
 
1157
    dpd_buf4_close(&Z2);
 
1158
    dpd_buf4_close(&W);
 
1159
 
 
1160
 
 
1161
    /** <Mn|Ef> t_jn^bf + <MN||EF> t_jN^bF --> Z1_MEjb **/
 
1162
    dpd_buf4_init(&Z, CC_TMP0, 0, 20, 30, 20, 30, 0, "Z(ME,jb)");
 
1163
    dpd_buf4_init(&D, CC_DINTS, 0, 20, 30, 20, 30, 0, "D <Ij|Ab> (IA,jb)");
 
1164
    dpd_buf4_init(&T2, CC_TAMPS, 0, 30, 30, 30, 30, 0, "tiajb");
 
1165
    dpd_contract444(&D, &T2, &Z, 0, 0, 1.0, 0.0);
 
1166
    dpd_buf4_close(&T2);
 
1167
    dpd_buf4_close(&D);
 
1168
 
 
1169
    dpd_buf4_init(&D, CC_DINTS, 0, 20, 20, 20, 20, 0, "D <IJ||AB> (IA,JB)");
 
1170
    dpd_buf4_init(&T2, CC_TAMPS, 0, 30, 20, 30, 20, 0, "tiaJB");
 
1171
    dpd_contract444(&D, &T2, &Z, 0, 0, 1.0, 1.0);
 
1172
    dpd_buf4_close(&T2);
 
1173
    dpd_buf4_close(&D);
 
1174
    dpd_buf4_sort(&Z, CC_TMP0, psrq, 24, 27, "Z(Mb,jE)");
 
1175
    dpd_buf4_close(&Z);
 
1176
 
 
1177
 
 
1178
    /** <Mn|Fe> t_In^Fb --> Z2_MeIb **/
 
1179
    dpd_buf4_init(&Z, CC_TMP0, 0, 24, 24, 24, 24, 0, "Z(Me,Ib)");
 
1180
    dpd_buf4_init(&D, CC_DINTS, 0, 24, 27, 24, 27, 0, "D <Ij|Ab> (Ib,jA)");
 
1181
    dpd_buf4_init(&T2, CC_TAMPS, 0, 24, 27, 24, 27, 0, "tIbjA");
 
1182
    dpd_contract444(&D, &T2, &Z, 0, 0, 1.0, 0.0);
 
1183
    dpd_buf4_close(&D);
 
1184
    dpd_buf4_close(&T2);
 
1185
    dpd_buf4_sort(&Z, CC_TMP0, psrq, 24, 24, "Z(Mb,Ie)");
 
1186
    dpd_buf4_close(&Z);
 
1187
 
 
1188
 
 
1189
    /** t_I^E ( <Mj|Eb> + Z(Mb,jE) ) --> Z(Mb,jI) **/
 
1190
    dpd_buf4_init(&Z1, CC_TMP0, 0, 24, 27, 24, 27, 0, "Z(Mb,jE)");
 
1191
    dpd_buf4_init(&D, CC_DINTS, 0, 24, 27, 24, 27, 0, "D <Ij|Ab> (Ib,jA)");
 
1192
    dpd_buf4_axpy(&D, &Z1, 1.0);
 
1193
    dpd_buf4_close(&D);
 
1194
    dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
 
1195
    dpd_buf4_init(&Z, CC_TMP0, 0, 24, 23, 24, 23, 0, "Z(Mb,jI)");
 
1196
    dpd_contract424(&Z1, &T1, &Z, 3, 1, 0, 1.0, 0.0);
 
1197
    dpd_file2_close(&T1);
 
1198
    dpd_buf4_close(&Z1);
 
1199
    dpd_buf4_sort(&Z, CC_TMP0, pqsr, 24, 22, "Z1(Mb,Ij)");
 
1200
    dpd_buf4_close(&Z);
 
1201
 
 
1202
    /** t_j^e ( <Mb|Ie> - Z(Mb,Ie) ) --> Z(Mb,Ij) **/
 
1203
    dpd_buf4_init(&Z1, CC_TMP0, 0, 24, 24, 24, 24, 0, "Z(Mb,Ie)");
 
1204
    dpd_buf4_init(&C, CC_CINTS, 0, 24, 24, 24, 24, 0, "C <Ia|Jb>");
 
1205
    dpd_buf4_axpy(&C, &Z1, -1.0);
 
1206
    dpd_buf4_close(&C);
 
1207
    dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
 
1208
    dpd_buf4_init(&Z, CC_TMP0, 0, 24, 22, 24, 22, 0, "Z2(Mb,Ij)");
 
1209
    dpd_contract424(&Z1, &T1, &Z, 3, 1, 0, 1.0, 0.0);
 
1210
    dpd_file2_close(&T1);
 
1211
    dpd_buf4_close(&Z1);
 
1212
    dpd_buf4_close(&Z);
 
1213
 
 
1214
    /** Z(Mb,Ij) (TMP1) + Z(Mb,Ij) (TMP2) --> W_MbIj **/
 
1215
    dpd_buf4_init(&Z1, CC_TMP0, 0, 24, 22, 24, 22, 0, "Z1(Mb,Ij)");
 
1216
    dpd_buf4_init(&Z2, CC_TMP0, 0, 24, 22, 24, 22, 0, "Z2(Mb,Ij)");
 
1217
    dpd_buf4_axpy(&Z2, &Z1, -1.0);
 
1218
    dpd_buf4_close(&Z2);
 
1219
    dpd_buf4_init(&W, CC_HBAR, 0, 24, 22, 24, 22, 0, "WMbIj");
 
1220
    dpd_buf4_axpy(&Z1, &W, 1.0);
 
1221
    dpd_buf4_close(&Z1);
 
1222
    dpd_buf4_close(&W);
 
1223
 
 
1224
 
 
1225
 
 
1226
    /** t_JN^BF <mN|eF> + t_Jn^Bf <mn||ef> --> Z(mB,Je) **/
 
1227
    dpd_buf4_init(&Z, CC_TMP0, 0, 30, 20, 30, 20, 0, "Z(me,JB)");
 
1228
    dpd_buf4_init(&D, CC_DINTS, 0, 30, 20, 30, 20, 0, "D <Ij|Ab> (ia,JB)");
 
1229
    dpd_buf4_init(&T2, CC_TAMPS, 0, 20, 20, 20, 20, 0, "tIAJB");
 
1230
    dpd_contract444(&D, &T2, &Z, 0 , 0, 1.0, 0.0);
 
1231
    dpd_buf4_close(&T2);
 
1232
    dpd_buf4_close(&D);
 
1233
    dpd_buf4_init(&D, CC_DINTS, 0, 30, 30, 30, 30, 0, "D <ij||ab> (ia,jb)");
 
1234
    dpd_buf4_init(&T2, CC_TAMPS, 0, 20, 30, 20, 30, 0, "tIAjb");
 
1235
    dpd_contract444(&D, &T2, &Z, 0, 0, 1.0, 1.0);
 
1236
    dpd_buf4_close(&T2);
 
1237
    dpd_buf4_close(&D);
 
1238
    dpd_buf4_sort(&Z, CC_TMP0, psrq, 27, 24, "Z(mB,Je)");
 
1239
    dpd_buf4_close(&Z);
 
1240
 
 
1241
    /** t_Ni^Bf <mN|fE> --> Z(mB,iE) **/
 
1242
    dpd_buf4_init(&Z, CC_TMP0, 0, 27, 27, 27, 27, 0, "Z(mE,iB)");
 
1243
    dpd_buf4_init(&D, CC_DINTS, 0, 27, 24, 27, 24, 0, "D <iJ|aB> (iB,Ja)");
 
1244
    dpd_buf4_init(&T2, CC_TAMPS, 0, 27, 24, 27, 24, 0, "tjAIb");
 
1245
    dpd_contract444(&D, &T2, &Z, 0, 0, 1.0, 0.0);
 
1246
    dpd_buf4_close(&T2);
 
1247
    dpd_buf4_close(&D);
 
1248
    dpd_buf4_sort(&Z, CC_TMP0, psrq, 27, 27, "Z(mB,iE)");
 
1249
    dpd_buf4_close(&Z);
 
1250
 
 
1251
    /** t_i^e ( <mJ|eB> + Z(mB,Je) ) --> Z1(mB,iJ) **/
 
1252
    dpd_buf4_init(&Z, CC_TMP0, 0, 27, 24, 27, 24, 0, "Z(mB,Je)");
 
1253
    dpd_buf4_init(&D, CC_DINTS, 0, 27, 24, 27, 24, 0, "D <iJ|aB> (iB,Ja)");
 
1254
    dpd_buf4_axpy(&D, &Z, 1.0);
 
1255
    dpd_buf4_close(&D);
 
1256
    dpd_buf4_init(&Z1, CC_TMP0, 0, 27, 22, 27, 22, 0, "Z(mB,Ji)");
 
1257
    dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
 
1258
    dpd_contract424(&Z, &T1, &Z1, 3, 1, 0, 1.0, 0.0);
 
1259
    dpd_file2_close(&T1);
 
1260
    dpd_buf4_close(&Z);
 
1261
    dpd_buf4_sort(&Z1, CC_TMP0, pqsr, 27, 23, "Z1(mB,iJ)");
 
1262
    dpd_buf4_close(&Z1);
 
1263
 
 
1264
    /** -t_J^E ( -<mB|iE> + Z(mB,iE) ) + Z1(mB,Ij) --> Z1(mB,iJ) **/
 
1265
    dpd_buf4_init(&Z, CC_TMP0, 0, 27, 27, 27, 27, 0, "Z(mB,iE)");
 
1266
    dpd_buf4_init(&C, CC_CINTS, 0, 27, 27, 27, 27, 0, "C <iA|jB>");
 
1267
    dpd_buf4_axpy(&C, &Z, -1.0);
 
1268
    dpd_buf4_close(&C);
 
1269
    dpd_buf4_init(&Z2, CC_TMP0, 0, 27, 23, 27, 23, 0, "Z2(mB,iJ)");
 
1270
    dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
 
1271
    dpd_contract424(&Z, &T1, &Z2, 3, 1, 0, 1.0, 0.0);
 
1272
    dpd_file2_close(&T1);
 
1273
    dpd_buf4_close(&Z);
 
1274
    dpd_buf4_init(&Z1, CC_TMP0, 0, 27, 23, 27, 23, 0, "Z1(mB,iJ)");
 
1275
    dpd_buf4_axpy(&Z2, &Z1, -1.0);
 
1276
    dpd_buf4_close(&Z2);
 
1277
 
 
1278
    /** Z2(mB,iJ) --> W_mBiJ **/
 
1279
    dpd_buf4_init(&W, CC_HBAR, 0, 27, 23, 27, 23, 0, "WmBiJ");
 
1280
    dpd_buf4_axpy(&Z1, &W, 1.0);
 
1281
    dpd_buf4_close(&Z1);
 
1282
    dpd_buf4_close(&W);
 
1283
 
 
1284
  }
 
1285
}
 
1286
 
 
1287
}} // namespace psi::cchbar