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

« back to all changes in this revision

Viewing changes to src/bin/ccdensity/x_xi2.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 <libdpd/dpd.h>
3
 
#include "math.h"
4
 
#define EXTERN
5
 
#include "globals.h"
6
 
 
7
 
void x_xi2_4_rohf(void);
8
 
void x_xi2_14(void);
9
 
void x_xi2_rohf(void);
10
 
extern void x_xi_check(char *term_lbl);
11
 
extern void x_xi2_uhf(void);
12
 
extern void x_xi2_rhf(void);
13
 
 
14
 
/* compute xi_2 amplitudes for zeta equations */
15
 
 
16
 
void x_xi2(void) {
17
 
  if (params.ref == 0)
18
 
    x_xi2_rhf();
19
 
  else if (params.ref == 1)
20
 
    x_xi2_rohf();
21
 
  else 
22
 
    x_xi2_uhf();
23
 
  return;
24
 
}
25
 
 
26
 
void x_xi2_rohf(void)
27
 
{
28
 
  dpdfile2 L1, XIA, Xia, I1, R1, F1, Z1A, Z1B;
29
 
  int L_irr, R_irr, G_irr;
30
 
  double tval;
31
 
  dpdbuf4 D2, R2, L2, H2, I2, Z, Z2, XIJAB, Xijab, XIjAb;
32
 
 
33
 
  L_irr = params.L_irr;
34
 
  R_irr = params.R_irr;
35
 
  G_irr = params.G_irr;
36
 
 
37
 
#ifdef DEBUG_XI
38
 
  x_xi_check("reset");
39
 
#endif
40
 
 
41
 
  /* terms 1 and 5, Xijab += (Lme Rme + 0.25 Lmnef Rmnef) <ij||eb> */
42
 
  /* overlaps in params are assigned in x_xi1.c */
43
 
  /* see comments in xi1_connected.c */
44
 
  dpd_buf4_init(&D2, CC_DINTS, 0, 2, 7, 2, 7, 0, "D <ij||ab> (i>j,a>b)");
45
 
  dpd_buf4_scmcopy(&D2, EOM_XI, "XIJAB", params.overlap1+params.overlap2);
46
 
  dpd_buf4_scmcopy(&D2, EOM_XI, "Xijab", params.overlap1+params.overlap2);
47
 
  dpd_buf4_close(&D2);
48
 
  dpd_buf4_init(&D2, CC_DINTS, 0, 0, 5, 0, 5, 0, "D <ij|ab>");
49
 
  dpd_buf4_scmcopy(&D2, EOM_XI, "XIjAb", params.overlap1+params.overlap2);
50
 
  dpd_buf4_close(&D2);
51
 
#ifdef DEBUG_XI
52
 
x_xi_check("terms 1 and 5");
53
 
#endif
54
 
 
55
 
  /* terms 2 and 9, Xijab -= P(ab) (Lma Rme + Lmnfa Rmnfe) <ij||eb */
56
 
  dpd_buf4_init(&Z2, EOM_TMP1, 0, 2, 5, 2, 5, 0, "Z (I>J,AB)");
57
 
  dpd_file2_init(&I1, EOM_TMP, G_irr, 1, 1, "LR_VV");
58
 
  dpd_buf4_init(&D2, CC_DINTS, 0, 2, 5, 2, 5, 0, "D <ij||ab> (i>j,ab)");
59
 
  dpd_contract244(&I1, &D2, &Z2, 1, 2, 1, 1.0, 0.0);
60
 
  dpd_buf4_close(&D2);
61
 
  dpd_file2_close(&I1);
62
 
  dpd_buf4_init(&XIJAB, EOM_XI, G_irr, 2, 5, 2, 7, 0, "XIJAB");
63
 
  dpd_buf4_axpy(&Z2, &XIJAB, -1.0);
64
 
  dpd_buf4_close(&XIJAB);
65
 
  dpd_buf4_sort_axpy(&Z2, EOM_XI, pqsr, 2, 7, "XIJAB", 1.0);
66
 
  dpd_buf4_close(&Z2);
67
 
 
68
 
  dpd_buf4_init(&Z2, EOM_TMP1, 0, 2, 5, 2, 5, 0, "Z (i>j,ab)");
69
 
  dpd_file2_init(&I1, EOM_TMP, G_irr, 1, 1, "LR_vv");
70
 
  dpd_buf4_init(&D2, CC_DINTS, 0, 2, 5, 2, 5, 0, "D <ij||ab> (i>j,ab)");
71
 
  dpd_contract244(&I1, &D2, &Z2, 1, 2, 1, 1.0, 0.0);
72
 
  dpd_buf4_close(&D2);
73
 
  dpd_file2_close(&I1);
74
 
  dpd_buf4_init(&Xijab, EOM_XI, G_irr, 2, 5, 2, 7, 0, "Xijab");
75
 
  dpd_buf4_axpy(&Z2, &Xijab, -1.0);
76
 
  dpd_buf4_close(&Xijab);
77
 
  dpd_buf4_sort_axpy(&Z2, EOM_XI, pqsr, 2, 7, "Xijab", 1.0);
78
 
  dpd_buf4_close(&Z2);
79
 
 
80
 
  dpd_buf4_init(&XIjAb, EOM_XI, G_irr, 0, 5, 0, 5, 0, "XIjAb");
81
 
  dpd_file2_init(&I1, EOM_TMP, G_irr, 1, 1, "LR_VV");
82
 
  dpd_buf4_init(&D2, CC_DINTS, 0, 0, 5, 0, 5, 0, "D <ij|ab>");
83
 
  dpd_contract244(&I1, &D2, &XIjAb, 1, 2, 1, -1.0, 1.0);
84
 
  dpd_file2_close(&I1);
85
 
  dpd_file2_init(&I1, EOM_TMP, G_irr, 1, 1, "LR_vv");
86
 
  dpd_contract424(&D2, &I1, &XIjAb, 3, 1, 0, -1.0, 1.0);
87
 
  dpd_file2_close(&I1);
88
 
  dpd_buf4_close(&D2);
89
 
  dpd_buf4_close(&XIjAb);
90
 
#ifdef DEBUG_XI
91
 
x_xi_check("terms 2 and 9");
92
 
#endif
93
 
 
94
 
  /* terms 3 and 10, Xijab -= P(ij) (Lie Rme + 0.5 Linef Rmnef) <mj||ab> */
95
 
  dpd_buf4_init(&Z2, EOM_TMP1, 0, 0, 7, 0, 7, 0, "Z (IJ,A>B)");
96
 
  dpd_file2_init(&I1, EOM_TMP, G_irr, 0, 0, "LR_OO");
97
 
  dpd_buf4_init(&D2, CC_DINTS, 0, 0, 7, 0, 7, 0, "D <ij||ab> (ij,a>b)");
98
 
  dpd_contract244(&I1, &D2, &Z2, 1, 0, 0, 1.0, 0.0);
99
 
  dpd_buf4_close(&D2);
100
 
  dpd_file2_close(&I1);
101
 
  dpd_buf4_init(&XIJAB, EOM_XI, G_irr, 0, 7, 2, 7, 0, "XIJAB");
102
 
  dpd_buf4_axpy(&Z2, &XIJAB, -1.0);
103
 
  dpd_buf4_close(&XIJAB);
104
 
  dpd_buf4_sort_axpy(&Z2, EOM_XI, qprs, 2, 7, "XIJAB", 1.0);
105
 
  dpd_buf4_close(&Z2);
106
 
 
107
 
  dpd_buf4_init(&Z2, EOM_TMP1, 0, 0, 7, 0, 7, 0, "Z (ij,a>b)");
108
 
  dpd_file2_init(&I1, EOM_TMP, G_irr, 0, 0, "LR_oo");
109
 
  dpd_buf4_init(&D2, CC_DINTS, 0, 0, 7, 0, 7, 0, "D <ij||ab> (ij,a>b)");
110
 
  dpd_contract244(&I1, &D2, &Z2, 1, 0, 0, 1.0, 0.0);
111
 
  dpd_buf4_close(&D2);
112
 
  dpd_file2_close(&I1);
113
 
  dpd_buf4_init(&Xijab, EOM_XI, G_irr, 0, 7, 2, 7, 0, "Xijab");
114
 
  dpd_buf4_axpy(&Z2, &Xijab, -1.0);
115
 
  dpd_buf4_close(&Xijab);
116
 
  dpd_buf4_sort_axpy(&Z2, EOM_XI, qprs, 2, 7, "Xijab", 1.0);
117
 
  dpd_buf4_close(&Z2);
118
 
 
119
 
  dpd_buf4_init(&XIjAb, EOM_XI, G_irr, 0, 5, 0, 5, 0, "XIjAb");
120
 
  dpd_file2_init(&I1, EOM_TMP, G_irr, 0, 0, "LR_OO");
121
 
  dpd_buf4_init(&D2, CC_DINTS, 0, 0, 5, 0, 5, 0, "D <ij|ab>");
122
 
  dpd_contract244(&I1, &D2, &XIjAb, 1, 0, 0, -1.0, 1.0);
123
 
  dpd_file2_close(&I1);
124
 
  dpd_file2_init(&I1, EOM_TMP, G_irr, 0, 0, "LR_oo");
125
 
  dpd_contract424(&D2, &I1, &XIjAb, 1, 1, 1, -1.0, 1.0);
126
 
  dpd_file2_close(&I1);
127
 
  dpd_buf4_close(&D2);
128
 
  dpd_buf4_close(&XIjAb);
129
 
 
130
 
  psio_close(EOM_TMP1,0);
131
 
  psio_open(EOM_TMP1, PSIO_OPEN_NEW);
132
 
#ifdef DEBUG_XI
133
 
x_xi_check("terms 3 and 10");
134
 
#endif
135
 
 
136
 
  x_xi2_4_rohf();
137
 
 
138
 
  psio_close(EOM_TMP1,0);
139
 
  psio_open(EOM_TMP1, PSIO_OPEN_NEW);
140
 
#ifdef DEBUG_XI
141
 
x_xi_check("terms 4 and 6");
142
 
#endif
143
 
 
144
 
  /* term 7, Xijab += 0.25 Lmnab Rmnef <ij||ef> */
145
 
  dpd_buf4_init(&D2, CC_DINTS, 0, 2, 7, 2, 7, 0, "D <ij||ab> (i>j,a>b)");
146
 
  dpd_buf4_init(&R2, CC_GR, R_irr, 2, 7, 2, 7, 0, "RIJAB");
147
 
  dpd_buf4_init(&Z2, EOM_TMP1, R_irr, 2, 2, 2, 2, 0, "Z (I>J,M>N)");
148
 
  dpd_contract444(&D2, &R2, &Z2, 0, 0, 1.0, 0.0); 
149
 
  dpd_buf4_close(&R2);
150
 
  dpd_buf4_close(&D2);
151
 
  dpd_buf4_init(&XIJAB, EOM_XI, G_irr, 2, 7, 2, 7, 0, "XIJAB");
152
 
  dpd_buf4_init(&L2, CC_GL, L_irr, 2, 7, 2, 7, 0, "LIJAB");
153
 
  dpd_contract444(&Z2, &L2, &XIJAB, 0, 1, 1.0, 1.0); 
154
 
  dpd_buf4_close(&L2);
155
 
  dpd_buf4_close(&Z2);
156
 
  dpd_buf4_close(&XIJAB);
157
 
 
158
 
  dpd_buf4_init(&D2, CC_DINTS, 0, 2, 7, 2, 7, 0, "D <ij||ab> (i>j,a>b)");
159
 
  dpd_buf4_init(&R2, CC_GR, R_irr, 2, 7, 2, 7, 0, "Rijab");
160
 
  dpd_buf4_init(&Z2, EOM_TMP1, R_irr, 2, 2, 2, 2, 0, "Z (i>j,m>n)");
161
 
  dpd_contract444(&D2, &R2, &Z2, 0, 0, 1.0, 0.0); 
162
 
  dpd_buf4_close(&R2);
163
 
  dpd_buf4_close(&D2);
164
 
  dpd_buf4_init(&Xijab, EOM_XI, G_irr, 2, 7, 2, 7, 0, "Xijab");
165
 
  dpd_buf4_init(&L2, CC_GL, L_irr, 2, 7, 2, 7, 0, "Lijab");
166
 
  dpd_contract444(&Z2, &L2, &Xijab, 0, 1, 1.0, 1.0); 
167
 
  dpd_buf4_close(&L2);
168
 
  dpd_buf4_close(&Z2);
169
 
  dpd_buf4_close(&Xijab);
170
 
 
171
 
  dpd_buf4_init(&D2, CC_DINTS, 0, 0, 5, 0, 5, 0, "D <ij|ab>");
172
 
  dpd_buf4_init(&R2, CC_GR, R_irr, 0, 5, 0, 5, 0, "RIjAb");
173
 
  dpd_buf4_init(&Z2, EOM_TMP1, R_irr, 0, 0, 0, 0, 0, "Z (Ij,Mn)");
174
 
  dpd_contract444(&D2, &R2, &Z2, 0, 0, 1.0, 0.0); 
175
 
  dpd_buf4_close(&R2);
176
 
  dpd_buf4_close(&D2);
177
 
  dpd_buf4_init(&XIjAb, EOM_XI, G_irr, 0, 5, 0, 5, 0, "XIjAb");
178
 
  dpd_buf4_init(&L2, CC_GL, L_irr, 0, 5, 0, 5, 0, "LIjAb");
179
 
  dpd_contract444(&Z2, &L2, &XIjAb, 0, 1, 1.0, 1.0); 
180
 
  dpd_buf4_close(&L2);
181
 
  dpd_buf4_close(&Z2);
182
 
  dpd_buf4_close(&XIjAb);
183
 
 
184
 
  psio_close(EOM_TMP1,0);
185
 
  psio_open(EOM_TMP1, PSIO_OPEN_NEW);
186
 
#ifdef DEBUG_XI
187
 
x_xi_check("term 7");
188
 
#endif
189
 
 
190
 
  /* term 8, Xijab += 0.25 Rmnef Lijef <mn||ab> */
191
 
  dpd_buf4_init(&XIJAB, EOM_XI, G_irr, 2, 7, 2, 7, 0, "XIJAB");
192
 
  dpd_buf4_init(&I2, EOM_TMP, G_irr, 2, 2, 2, 2, 0, "R2L2_OOOO");
193
 
  dpd_buf4_init(&D2, CC_DINTS, 0, 2, 7, 2, 7, 0, "D <ij||ab> (i>j,a>b)");
194
 
  dpd_contract444(&I2, &D2, &XIJAB, 1, 1, 1.0, 1.0); 
195
 
  dpd_buf4_close(&D2);
196
 
  dpd_buf4_close(&I2);
197
 
  dpd_buf4_close(&XIJAB);
198
 
  dpd_buf4_init(&Xijab, EOM_XI, G_irr, 2, 7, 2, 7, 0, "Xijab");
199
 
  dpd_buf4_init(&I2, EOM_TMP, G_irr, 2, 2, 2, 2, 0, "R2L2_oooo");
200
 
  dpd_buf4_init(&D2, CC_DINTS, 0, 2, 7, 2, 7, 0, "D <ij||ab> (i>j,a>b)");
201
 
  dpd_contract444(&I2, &D2, &Xijab, 1, 1, 1.0, 1.0); 
202
 
  dpd_buf4_close(&D2);
203
 
  dpd_buf4_close(&I2);
204
 
  dpd_buf4_close(&Xijab);
205
 
  dpd_buf4_init(&XIjAb, EOM_XI, G_irr, 0, 5, 0, 5, 0, "XIjAb");
206
 
  dpd_buf4_init(&I2, EOM_TMP, G_irr, 0, 0, 0, 0, 0, "R2L2_OoOo");
207
 
  dpd_buf4_init(&D2, CC_DINTS, 0, 0, 5, 0, 5, 0, "D <ij|ab>");
208
 
  dpd_contract444(&I2, &D2, &XIjAb, 1, 1, 1.0, 1.0); 
209
 
  dpd_buf4_close(&D2);
210
 
  dpd_buf4_close(&I2);
211
 
  dpd_buf4_close(&XIjAb);
212
 
 
213
 
#ifdef DEBUG_XI
214
 
x_xi_check("term 8");
215
 
#endif
216
 
 
217
 
  /* term 11, Xijab -= 0.5 P(ab) Lijfb (Rmnef <mn||ea>) */
218
 
  /* term 17        -=     P(ab) Lijfb (Rmf Fma) */
219
 
  /* term 20        +=     P(ab) Lijfb (Rme Wfmae) */
220
 
  /* build 1-e intermediates to include term 17 */
221
 
      /* for term 11: */
222
 
  dpd_file2_init(&I1, EOM_TMP_XI, R_irr, 1, 1, "RD_VV");
223
 
  dpd_file2_copy(&I1, EOM_TMP1, "Z (F,A)");
224
 
  dpd_file2_close(&I1);
225
 
  dpd_file2_init(&I1, EOM_TMP1, R_irr, 1, 1, "Z (F,A)");
226
 
      /* for term 20: */
227
 
  dpd_file2_init(&Z1A, EOM_TMP_XI, R_irr, 1, 1, "R1Wamef_VV");
228
 
  dpd_file2_axpy(&Z1A, &I1, -1.0, 0);
229
 
  dpd_file2_close(&Z1A);
230
 
      /* for term 17: */
231
 
  dpd_file2_init(&R1, CC_GR, R_irr, 0, 1, "RIA");
232
 
  dpd_file2_init(&F1, CC_OEI, 0, 0, 1, "FME");
233
 
  dpd_contract222(&R1, &F1, &I1, 1, 1, 1.0, 1.0);
234
 
  dpd_file2_close(&F1);
235
 
  dpd_file2_close(&R1);
236
 
  dpd_file2_close(&I1);
237
 
 
238
 
      /* for term 11: */
239
 
  dpd_file2_init(&I1, EOM_TMP_XI, R_irr, 1, 1, "RD_vv");
240
 
  dpd_file2_copy(&I1, EOM_TMP1, "Z (f,a)");
241
 
  dpd_file2_close(&I1);
242
 
  dpd_file2_init(&I1, EOM_TMP1, R_irr, 1, 1, "Z (f,a)");
243
 
      /* for term 20: */
244
 
  dpd_file2_init(&Z1B, EOM_TMP_XI, R_irr, 1, 1, "R1Wamef_vv");
245
 
  dpd_file2_axpy(&Z1B, &I1, -1.0, 0);
246
 
  dpd_file2_close(&Z1B);
247
 
      /* for term 17: */
248
 
  dpd_file2_init(&R1, CC_GR, R_irr, 0, 1, "Ria");
249
 
  dpd_file2_init(&F1, CC_OEI, 0, 0, 1, "Fme");
250
 
  dpd_contract222(&R1, &F1, &I1, 1, 1, 1.0, 1.0);
251
 
  dpd_file2_close(&F1);
252
 
  dpd_file2_close(&R1);
253
 
  dpd_file2_close(&I1);
254
 
 
255
 
  dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 2, 5, 2, 5, 0, "Z (I>J,AB)"); 
256
 
  dpd_file2_init(&I1, EOM_TMP1, R_irr, 1, 1, "Z (F,A)");
257
 
  dpd_buf4_init(&L2, CC_GL, L_irr, 2, 5, 2, 7, 0, "LIJAB");
258
 
  dpd_contract244(&I1, &L2, &Z2, 0, 2, 1, 1.0, 0.0);
259
 
  dpd_buf4_close(&L2);
260
 
  dpd_file2_close(&I1);
261
 
  dpd_buf4_init(&XIJAB, EOM_XI, G_irr, 2, 5, 2, 7, 0, "XIJAB");
262
 
  dpd_buf4_axpy(&Z2, &XIJAB, -1.0);
263
 
  dpd_buf4_close(&XIJAB);
264
 
  dpd_buf4_sort_axpy(&Z2, EOM_XI, pqsr, 2, 7, "XIJAB", 1.0);
265
 
  dpd_buf4_close(&Z2);
266
 
 
267
 
  dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 2, 5, 2, 5, 0, "Z (i>j,ab)"); 
268
 
  dpd_file2_init(&I1, EOM_TMP1, R_irr, 1, 1, "Z (f,a)");
269
 
  dpd_buf4_init(&L2, CC_GL, L_irr, 2, 5, 2, 7, 0, "Lijab");
270
 
  dpd_contract244(&I1, &L2, &Z2, 0, 2, 1, 1.0, 0.0);
271
 
  dpd_buf4_close(&L2);
272
 
  dpd_file2_close(&I1);
273
 
  dpd_buf4_init(&Xijab, EOM_XI, G_irr, 2, 5, 2, 7, 0, "Xijab");
274
 
  dpd_buf4_axpy(&Z2, &Xijab, -1.0);
275
 
  dpd_buf4_close(&Xijab);
276
 
  dpd_buf4_sort_axpy(&Z2, EOM_XI, pqsr, 2, 7, "Xijab", 1.0);
277
 
  dpd_buf4_close(&Z2);
278
 
 
279
 
  dpd_buf4_init(&XIjAb, EOM_XI, G_irr, 0, 5, 0, 5, 0, "XIjAb");
280
 
  dpd_file2_init(&I1, EOM_TMP1, R_irr, 1, 1, "Z (F,A)");
281
 
  dpd_buf4_init(&L2, CC_GL, L_irr, 0, 5, 0, 5, 0, "LIjAb");
282
 
  dpd_contract244(&I1, &L2, &XIjAb, 0, 2, 1, -1.0, 1.0);
283
 
  dpd_file2_close(&I1);
284
 
  dpd_file2_init(&I1, EOM_TMP1, R_irr, 1, 1, "Z (f,a)");
285
 
  dpd_contract424(&L2, &I1, &XIjAb, 3, 0, 0, -1.0, 1.0);
286
 
  dpd_buf4_close(&L2);
287
 
  dpd_file2_close(&I1);
288
 
  dpd_buf4_close(&XIjAb);
289
 
#ifdef DEBUG_XI
290
 
x_xi_check("terms 11, 17 and 20");
291
 
#endif
292
 
 
293
 
  /* term 12, Xijab -= 0.5 P(ij) Lmjab (Rmnef <in||ef>) */
294
 
  /* term 16,       -=     P(ij) Lmjab (Rme Fie) */
295
 
  /* term 21,       -=     P(ij) Lmjab (Rne Winme) */
296
 
  /* make 1-electron intermediates to include terms 16 and 21 as well */
297
 
      /* for term 12: */
298
 
  dpd_file2_init(&I1, EOM_TMP_XI, R_irr, 0, 0, "RD_OO");
299
 
  dpd_file2_copy(&I1, EOM_TMP1, "Z (M,I)");
300
 
  dpd_file2_close(&I1);
301
 
  dpd_file2_init(&I1, EOM_TMP1, R_irr, 0, 0, "Z (M,I)");
302
 
       /* for term 21 */
303
 
  dpd_file2_init(&Z1A, EOM_TMP_XI, R_irr, 0, 0, "R1Wmnie_OO");
304
 
  dpd_file2_axpy(&Z1A, &I1, 1.0, 1);
305
 
  dpd_file2_close(&Z1A);
306
 
      /* for term 16: */
307
 
  dpd_file2_init(&R1, CC_GR, R_irr, 0, 1, "RIA");
308
 
  dpd_file2_init(&F1, CC_OEI, 0, 0, 1, "FME");
309
 
  dpd_contract222(&R1, &F1, &I1, 0, 0, 1.0, 1.0);
310
 
  dpd_file2_close(&F1);
311
 
  dpd_file2_close(&R1);
312
 
  dpd_file2_close(&I1);
313
 
 
314
 
      /* for term 12 */
315
 
  dpd_file2_init(&I1, EOM_TMP_XI, R_irr, 0, 0, "RD_oo");
316
 
  dpd_file2_copy(&I1, EOM_TMP1, "Z (m,i)");
317
 
  dpd_file2_close(&I1);
318
 
  dpd_file2_init(&I1, EOM_TMP1, R_irr, 0, 0, "Z (m,i)");
319
 
      /* for term 21 */
320
 
  dpd_file2_init(&Z1B, EOM_TMP_XI, R_irr, 0, 0, "R1Wmnie_oo");
321
 
  dpd_file2_axpy(&Z1B, &I1, 1.0, 1);
322
 
  dpd_file2_close(&Z1B);
323
 
      /* for term 16 */
324
 
  dpd_file2_init(&R1, CC_GR, R_irr, 0, 1, "Ria");
325
 
  dpd_file2_init(&F1, CC_OEI, 0, 0, 1, "Fme");
326
 
  dpd_contract222(&R1, &F1, &I1, 0, 0, 1.0, 1.0);
327
 
  dpd_file2_close(&F1);
328
 
  dpd_file2_close(&R1);
329
 
  dpd_file2_close(&I1);
330
 
 
331
 
  dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 0, 7, 0, 7, 0, "Z (IJ,A>B)"); 
332
 
  dpd_file2_init(&I1, EOM_TMP1, R_irr, 0, 0, "Z (M,I)");
333
 
  dpd_buf4_init(&L2, CC_GL, L_irr, 0, 7, 2, 7, 0, "LIJAB");
334
 
  dpd_contract244(&I1, &L2, &Z2, 0, 0, 0, 1.0, 0.0);
335
 
  dpd_buf4_close(&L2);
336
 
  dpd_file2_close(&I1);
337
 
  dpd_buf4_init(&XIJAB, EOM_XI, G_irr, 0, 7, 2, 7, 0, "XIJAB");
338
 
  dpd_buf4_axpy(&Z2, &XIJAB, -1.0);
339
 
  dpd_buf4_close(&XIJAB);
340
 
  dpd_buf4_sort_axpy(&Z2, EOM_XI, qprs, 2, 7, "XIJAB", 1.0);
341
 
  dpd_buf4_close(&Z2);
342
 
 
343
 
  dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 0, 7, 0, 7, 0, "Z (ij,a>b)"); 
344
 
  dpd_file2_init(&I1, EOM_TMP1, R_irr, 0, 0, "Z (m,i)");
345
 
  dpd_buf4_init(&L2, CC_GL, L_irr, 0, 7, 2, 7, 0, "Lijab");
346
 
  dpd_contract244(&I1, &L2, &Z2, 0, 0, 0, 1.0, 0.0);
347
 
  dpd_buf4_close(&L2);
348
 
  dpd_file2_close(&I1);
349
 
  dpd_buf4_init(&XIJAB, EOM_XI, G_irr, 0, 7, 2, 7, 0, "Xijab");
350
 
  dpd_buf4_axpy(&Z2, &XIJAB, -1.0);
351
 
  dpd_buf4_close(&XIJAB);
352
 
  dpd_buf4_sort_axpy(&Z2, EOM_XI, qprs, 2, 7, "Xijab", 1.0);
353
 
  dpd_buf4_close(&Z2);
354
 
 
355
 
  dpd_buf4_init(&XIjAb, EOM_XI, G_irr, 0, 5, 0, 5, 0, "XIjAb");
356
 
  dpd_file2_init(&I1, EOM_TMP1, R_irr, 0, 0, "Z (M,I)");
357
 
  dpd_buf4_init(&L2, CC_GL, L_irr, 0, 5, 0, 5, 0, "LIjAb");
358
 
  dpd_contract244(&I1, &L2, &XIjAb, 0, 0, 0, -1.0, 1.0);
359
 
  dpd_file2_close(&I1);
360
 
  dpd_file2_init(&I1, EOM_TMP1, R_irr, 0, 0, "Z (m,i)");
361
 
  dpd_contract424(&L2, &I1, &XIjAb, 1, 0, 1, -1.0, 1.0);
362
 
  dpd_buf4_close(&L2);
363
 
  dpd_file2_close(&I1);
364
 
  dpd_buf4_close(&XIjAb);
365
 
#ifdef DEBUG_XI
366
 
x_xi_check("term 12, 16 and 21");
367
 
#endif
368
 
 
369
 
  psio_close(EOM_TMP1,0);
370
 
  psio_open(EOM_TMP1, PSIO_OPEN_NEW);
371
 
 
372
 
    /* term 13 + 15, (0.25 Rmnef <mn||ef> + Rme Fme) Lijab */
373
 
  if ( (L_irr == 0) && (!params.connect_xi)) {
374
 
    dpd_file2_init(&R1, CC_GR, R_irr, 0, 1, "RIA");
375
 
    dpd_file2_init(&F1, CC_OEI, 0, 0, 1, "FME");
376
 
    tval = dpd_file2_dot(&R1, &F1);
377
 
    dpd_file2_close(&F1);
378
 
    dpd_file2_close(&R1);
379
 
    dpd_file2_init(&R1, CC_GR, R_irr, 0, 1, "Ria");
380
 
    dpd_file2_init(&F1, CC_OEI, 0, 0, 1, "Fme");
381
 
    tval += dpd_file2_dot(&R1, &F1);
382
 
    dpd_file2_close(&F1);
383
 
    dpd_file2_close(&R1);
384
 
    tval += params.RD_overlap;
385
 
 
386
 
    dpd_buf4_init(&XIJAB, EOM_XI, G_irr, 2, 7, 2, 7, 0, "XIJAB");
387
 
    dpd_buf4_init(&L2, CC_GL, L_irr, 2, 7, 2, 7, 0, "LIJAB");
388
 
    dpd_buf4_axpy(&L2, &XIJAB, tval);
389
 
    dpd_buf4_close(&L2);
390
 
    dpd_buf4_close(&XIJAB);
391
 
    dpd_buf4_init(&Xijab, EOM_XI, G_irr, 2, 7, 2, 7, 0, "Xijab");
392
 
    dpd_buf4_init(&L2, CC_GL, L_irr, 2, 7, 2, 7, 0, "Lijab");
393
 
    dpd_buf4_axpy(&L2, &Xijab, tval);
394
 
    dpd_buf4_close(&L2);
395
 
    dpd_buf4_close(&Xijab);
396
 
    dpd_buf4_init(&XIjAb, EOM_XI, G_irr, 0, 5, 0, 5, 0, "XIjAb");
397
 
    dpd_buf4_init(&L2, CC_GL, L_irr, 0, 5, 0, 5, 0, "LIjAb");
398
 
    dpd_buf4_axpy(&L2, &XIjAb, tval);
399
 
    dpd_buf4_close(&L2);
400
 
    dpd_buf4_close(&XIjAb);
401
 
#ifdef DEBUG_XI
402
 
x_xi_check("term 13 (ijab) and 15 (Fme)");
403
 
#endif
404
 
  }
405
 
 
406
 
    /* term 14, +P(ij) P(ab) Lmjeb Rme Fia */
407
 
  if (!params.connect_xi) {
408
 
    x_xi2_14();
409
 
#ifdef DEBUG_XI
410
 
x_xi_check("term 14 (Fme)");
411
 
#endif
412
 
  }
413
 
  psio_close(EOM_TMP1,0);
414
 
  psio_open(EOM_TMP1, PSIO_OPEN_NEW);
415
 
 
416
 
    /* term 22, +P(ij) (Limfe Rme) Wfjab */
417
 
  if (!params.connect_xi) {
418
 
    dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 0, 7, 0, 7, 0, "Z (IJ,A>B)");
419
 
    dpd_file2_init(&I1, EOM_TMP, G_irr, 0, 1, "L2R1_OV");
420
 
    dpd_buf4_init(&H2, CC_HBAR, 0, 11, 7, 11, 7, 0, "WAMEF");
421
 
    dpd_contract244(&I1, &H2, &Z2, 1, 0, 0, 1.0, 0.0);
422
 
    dpd_buf4_close(&H2);
423
 
    dpd_file2_close(&I1);
424
 
    dpd_buf4_init(&XIJAB, EOM_XI, G_irr, 0, 7, 2, 7, 0, "XIJAB");
425
 
    dpd_buf4_axpy(&Z2, &XIJAB, 1.0);
426
 
    dpd_buf4_close(&XIJAB);
427
 
    dpd_buf4_sort_axpy(&Z2, EOM_XI, qprs, 2, 7, "XIJAB", -1.0);
428
 
    dpd_buf4_close(&Z2);
429
 
 
430
 
    dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 0, 7, 0, 7, 0, "Z (ij,a>b)");
431
 
    dpd_file2_init(&I1, EOM_TMP, G_irr, 0, 1, "L2R1_ov");
432
 
    dpd_buf4_init(&H2, CC_HBAR, 0, 11, 7, 11, 7, 0, "Wamef");
433
 
    dpd_contract244(&I1, &H2, &Z2, 1, 0, 0, 1.0, 0.0);
434
 
    dpd_buf4_close(&H2);
435
 
    dpd_file2_close(&I1);
436
 
    dpd_buf4_init(&Xijab, EOM_XI, G_irr, 0, 7, 2, 7, 0, "Xijab");
437
 
    dpd_buf4_axpy(&Z2, &Xijab, 1.0);
438
 
    dpd_buf4_close(&Xijab);
439
 
    dpd_buf4_sort_axpy(&Z2, EOM_XI, qprs, 2, 7, "Xijab", -1.0);
440
 
    dpd_buf4_close(&Z2);
441
 
 
442
 
    dpd_buf4_init(&XIjAb, EOM_XI, G_irr, 0, 5, 0, 5, 0, "XIjAb");
443
 
    dpd_file2_init(&I1, EOM_TMP, G_irr, 0, 1, "L2R1_OV");
444
 
    dpd_buf4_init(&H2, CC_HBAR, 0, 11, 5, 11, 5, 0, "WAmEf");
445
 
    dpd_contract244(&I1, &H2, &XIjAb, 1, 0, 0, 1.0, 1.0);
446
 
    dpd_buf4_close(&H2);
447
 
    dpd_file2_close(&I1);
448
 
    dpd_buf4_close(&XIjAb);
449
 
 
450
 
    dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 0, 5, 0, 5, 0, "Z (jI,bA)");
451
 
    dpd_file2_init(&I1, EOM_TMP, G_irr, 0, 1, "L2R1_ov");
452
 
    dpd_buf4_init(&H2, CC_HBAR, 0, 11, 5, 11, 5, 0, "WaMeF");
453
 
    dpd_contract244(&I1, &H2, &Z2, 1, 0, 0, 1.0, 0.0);
454
 
    dpd_buf4_close(&H2);
455
 
    dpd_file2_close(&I1);
456
 
    dpd_buf4_sort_axpy(&Z2, EOM_XI, qpsr, 0, 5, "XIjAb", 1.0);
457
 
    dpd_buf4_close(&Z2);
458
 
#ifdef DEBUG_XI
459
 
x_xi_check("term 22 (Wamef)");
460
 
#endif
461
 
    psio_close(EOM_TMP1,0);
462
 
    psio_open(EOM_TMP1, PSIO_OPEN_NEW);
463
 
  }
464
 
 
465
 
    /* term 23, -P(ab) (Lmnea Rme) Wijnb */
466
 
  if (!params.connect_xi) {
467
 
    dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 2, 5, 2, 5, 0, "Z (I>J,AB)");
468
 
    dpd_file2_init(&I1, EOM_TMP, G_irr, 0, 1, "L2R1_OV");
469
 
    dpd_buf4_init(&H2, CC_HBAR, 0, 2, 10, 2, 10, 0, "WMNIE");
470
 
    dpd_contract244(&I1, &H2, &Z2, 0, 2, 1, 1.0, 0.0);
471
 
    dpd_buf4_close(&H2);
472
 
    dpd_file2_close(&I1);
473
 
    dpd_buf4_init(&XIJAB, EOM_XI, G_irr, 2, 5, 2, 7, 0, "XIJAB");
474
 
    dpd_buf4_axpy(&Z2, &XIJAB, -1.0);
475
 
    dpd_buf4_close(&XIJAB);
476
 
    dpd_buf4_sort_axpy(&Z2, EOM_XI, pqsr, 2, 7, "XIJAB", 1.0);
477
 
    dpd_buf4_close(&Z2);
478
 
 
479
 
    dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 2, 5, 2, 5, 0, "Z (i>j,ab)");
480
 
    dpd_file2_init(&I1, EOM_TMP, G_irr, 0, 1, "L2R1_ov");
481
 
    dpd_buf4_init(&H2, CC_HBAR, 0, 2, 10, 2, 10, 0, "Wmnie");
482
 
    dpd_contract244(&I1, &H2, &Z2, 0, 2, 1, 1.0, 0.0);
483
 
    dpd_buf4_close(&H2);
484
 
    dpd_file2_close(&I1);
485
 
    dpd_buf4_init(&XIJAB, EOM_XI, G_irr, 2, 5, 2, 7, 0, "Xijab");
486
 
    dpd_buf4_axpy(&Z2, &XIJAB, -1.0);
487
 
    dpd_buf4_close(&XIJAB);
488
 
    dpd_buf4_sort_axpy(&Z2, EOM_XI, pqsr, 2, 7, "Xijab", 1.0);
489
 
    dpd_buf4_close(&Z2);
490
 
 
491
 
    dpd_buf4_init(&XIjAb, EOM_XI, G_irr, 0, 5, 0, 5, 0, "XIjAb");
492
 
    dpd_file2_init(&I1, EOM_TMP, G_irr, 0, 1, "L2R1_OV");
493
 
    dpd_buf4_init(&H2, CC_HBAR, 0, 0, 10, 0, 10, 0, "WMnIe");
494
 
    dpd_contract244(&I1, &H2, &XIjAb, 0, 2, 1, -1.0, 1.0);
495
 
    dpd_buf4_close(&H2);
496
 
    dpd_file2_close(&I1);
497
 
    dpd_buf4_close(&XIjAb);
498
 
 
499
 
    dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 0, 5, 0, 5, 0, "Z (jI,Ab)");
500
 
    dpd_file2_init(&I1, EOM_TMP, G_irr, 0, 1, "L2R1_ov");
501
 
    dpd_buf4_init(&H2, CC_HBAR, 0, 0, 11, 0, 11, 0, "WmNiE (mN,Ei)");
502
 
    dpd_contract424(&H2, &I1, &Z2, 3, 0, 0, 1.0, 0.0);
503
 
    dpd_buf4_close(&H2);
504
 
    dpd_file2_close(&I1);
505
 
    dpd_buf4_sort_axpy(&Z2, EOM_XI, qprs, 0, 5, "XIjAb", -1.0);
506
 
    dpd_buf4_close(&Z2);
507
 
#ifdef DEBUG_XI
508
 
x_xi_check("term 23 (Wmnie)");
509
 
#endif
510
 
  }
511
 
 
512
 
  /* term 25, Xijab += (Lnmab Rme) Wijne */
513
 
  dpd_buf4_init(&XIJAB, EOM_XI, G_irr, 2, 7, 2, 7, 0, "XIJAB");
514
 
  dpd_buf4_init(&I2, EOM_TMP, G_irr, 7, 10, 7, 10, 0, "L2R1_VVOV");
515
 
  dpd_buf4_init(&H2, CC_HBAR, 0, 2, 10, 2, 10, 0, "WMNIE");
516
 
  dpd_contract444(&H2, &I2, &XIJAB, 0, 0, 1.0, 1.0); 
517
 
  dpd_buf4_close(&H2);
518
 
  dpd_buf4_close(&I2);
519
 
  dpd_buf4_close(&XIJAB);
520
 
 
521
 
  dpd_buf4_init(&Xijab, EOM_XI, G_irr, 2, 7, 2, 7, 0, "Xijab");
522
 
  dpd_buf4_init(&I2, EOM_TMP, G_irr, 7, 10, 7, 10, 0, "L2R1_vvov");
523
 
  dpd_buf4_init(&H2, CC_HBAR, 0, 2, 10, 2, 10, 0, "Wmnie");
524
 
  dpd_contract444(&H2, &I2, &Xijab, 0, 0, 1.0, 1.0); 
525
 
  dpd_buf4_close(&H2);
526
 
  dpd_buf4_close(&I2);
527
 
  dpd_buf4_close(&Xijab);
528
 
 
529
 
  dpd_buf4_init(&XIjAb, EOM_XI, G_irr, 0, 5, 0, 5, 0, "XIjAb");
530
 
  dpd_buf4_init(&I2, EOM_TMP, G_irr, 5, 10, 5, 10, 0, "L2R1_VvOv");
531
 
  dpd_buf4_init(&H2, CC_HBAR, 0, 0, 10, 0, 10, 0, "WMnIe");
532
 
  dpd_contract444(&H2, &I2, &XIjAb, 0, 0, 1.0, 1.0); 
533
 
  dpd_buf4_close(&H2);
534
 
  dpd_buf4_close(&I2);
535
 
  dpd_buf4_close(&XIjAb);
536
 
 
537
 
  dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 0, 5, 0, 5, 0, "Z (jI,Ab)");
538
 
  dpd_buf4_init(&I2, EOM_TMP, G_irr, 5, 10, 5, 10, 0, "L2R1_VvoV");
539
 
  dpd_buf4_init(&H2, CC_HBAR, 0, 0, 10, 0, 10, 0, "WmNiE");
540
 
  dpd_contract444(&H2, &I2, &Z2, 0, 0, 1.0, 0.0); 
541
 
  dpd_buf4_close(&H2);
542
 
  dpd_buf4_close(&I2);
543
 
  dpd_buf4_sort_axpy(&Z2, EOM_XI, qprs, 0, 5, "XIjAb", 1.0);
544
 
  dpd_buf4_close(&Z2);
545
 
 
546
 
#ifdef DEBUG_XI
547
 
x_xi_check("term 25 (Wmnie)");
548
 
#endif
549
 
  psio_close(EOM_TMP1,0);
550
 
  psio_open(EOM_TMP1, PSIO_OPEN_NEW);
551
 
 
552
 
    /* term 24, Xijab -= (Lijfe Rme) Wfmab */
553
 
  dpd_buf4_init(&XIJAB, EOM_XI, G_irr, 2, 7, 2, 7, 0, "XIJAB");
554
 
  dpd_buf4_init(&I2, EOM_TMP, G_irr, 2, 11, 2, 11, 0, "L2R1_OOVO");
555
 
  dpd_buf4_init(&H2, CC_HBAR, 0, 11, 7, 11, 7, 0, "WAMEF");
556
 
  dpd_contract444(&I2, &H2, &XIJAB, 0, 1, -1.0, 1.0); 
557
 
  dpd_buf4_close(&H2);
558
 
  dpd_buf4_close(&I2);
559
 
  dpd_buf4_close(&XIJAB);
560
 
 
561
 
  dpd_buf4_init(&Xijab, EOM_XI, G_irr, 2, 7, 2, 7, 0, "Xijab");
562
 
  dpd_buf4_init(&I2, EOM_TMP, G_irr, 2, 11, 2, 11, 0, "L2R1_oovo");
563
 
  dpd_buf4_init(&H2, CC_HBAR, 0, 11, 7, 11, 7, 0, "Wamef");
564
 
  dpd_contract444(&I2, &H2, &Xijab, 0, 1, -1.0, 1.0); 
565
 
  dpd_buf4_close(&H2);
566
 
  dpd_buf4_close(&I2);
567
 
  dpd_buf4_close(&Xijab);
568
 
 
569
 
  dpd_buf4_init(&XIjAb, EOM_XI, G_irr, 0, 5, 0, 5, 0, "XIjAb");
570
 
  dpd_buf4_init(&I2, EOM_TMP, G_irr, 0, 11, 0, 11, 0, "L2R1_OoVo");
571
 
  dpd_buf4_init(&H2, CC_HBAR, 0, 11, 5, 11, 5, 0, "WAmEf");
572
 
  dpd_contract444(&I2, &H2, &XIjAb, 0, 1, -1.0, 1.0); 
573
 
  dpd_buf4_close(&H2);
574
 
  dpd_buf4_close(&I2);
575
 
  dpd_buf4_close(&XIjAb);
576
 
 
577
 
  dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 0, 5, 0, 5, 0, "Z (Ij,bA)");
578
 
  dpd_buf4_init(&I2, EOM_TMP, G_irr, 0, 11, 0, 11, 0, "L2R1_OovO");
579
 
  dpd_buf4_init(&H2, CC_HBAR, 0, 11, 5, 11, 5, 0, "WaMeF");
580
 
  dpd_contract444(&I2, &H2, &Z2, 0, 1, 1.0, 0.0); 
581
 
  dpd_buf4_close(&H2);
582
 
  dpd_buf4_close(&I2);
583
 
  dpd_buf4_sort_axpy(&Z2, EOM_XI, pqsr, 0, 5, "XIjAb", -1.0);
584
 
  dpd_buf4_close(&Z2);
585
 
#ifdef DEBUG_XI
586
 
x_xi_check("term 24 (Wamef)");
587
 
#endif
588
 
  psio_close(EOM_TMP1,0);
589
 
  psio_open(EOM_TMP1, PSIO_OPEN_NEW);
590
 
 
591
 
  /* terms 18, 19: Xijab -= P(ij) P(ab) Linae (Rme Wmjnb + Rnf Wejbf) */
592
 
  /* construct Z(JB,NE) = RME WMJNB + RNF WEJBF */
593
 
  dpd_buf4_init(&Z, EOM_TMP1, R_irr, 11, 11, 11, 11, 0, "Z (EJ,BN)");
594
 
  dpd_buf4_init(&H2, CC_HBAR, 0, 0, 11, 2, 11, 0, "WMNIE (M>N,EI)");
595
 
  dpd_file2_init(&R1, CC_GR, R_irr, 0, 1, "RIA");
596
 
  dpd_contract244(&R1, &H2, &Z, 0, 0, 0, 1.0, 0.0);
597
 
  dpd_buf4_close(&H2);
598
 
  dpd_buf4_init(&H2, CC_HBAR, 0, 11, 5, 11, 7, 0, "WAMEF");
599
 
  dpd_contract424(&H2, &R1, &Z, 3, 1, 0, 1.0, 1.0);
600
 
  dpd_buf4_close(&H2);
601
 
  dpd_file2_close(&R1);
602
 
  dpd_buf4_sort(&Z, EOM_TMP1, qpsr, 10, 10, "Z (JE,NB)");
603
 
  dpd_buf4_close(&Z);
604
 
  dpd_buf4_init(&Z, EOM_TMP1, R_irr, 10, 10, 10, 10, 0, "Z (JE,NB)");
605
 
  dpd_buf4_sort(&Z, EOM_TMP1, psrq, 10, 10, "Z (JB,NE)");
606
 
  dpd_buf4_close(&Z);
607
 
 
608
 
  dpd_buf4_init(&Z, EOM_TMP1, R_irr, 11, 10, 11, 10, 0, "Z (eJ,nB)");
609
 
  dpd_buf4_init(&H2, CC_HBAR, 0, 0, 10, 0, 10, 0, "WmNiE");
610
 
  dpd_file2_init(&R1, CC_GR, R_irr, 0, 1, "Ria");
611
 
  dpd_contract244(&R1, &H2, &Z, 0, 0, 0, 1.0, 0.0);
612
 
  dpd_buf4_close(&H2);
613
 
  dpd_buf4_init(&H2, CC_HBAR, 0, 11, 5, 11, 5, 0, "WaMeF");
614
 
  dpd_contract244(&R1, &H2, &Z, 1, 2, 1, -1.0, 1.0);
615
 
  dpd_buf4_close(&H2);
616
 
  dpd_file2_close(&R1);
617
 
  dpd_buf4_sort(&Z, EOM_TMP1, qprs, 10, 10, "Z (Je,nB)");
618
 
  dpd_buf4_close(&Z);
619
 
  dpd_buf4_init(&Z, EOM_TMP1, R_irr, 10, 10, 10, 10, 0, "Z (Je,nB)");
620
 
  dpd_buf4_sort(&Z, EOM_TMP1, psrq, 10, 10, "Z (JB,ne)");
621
 
  dpd_buf4_close(&Z);
622
 
 
623
 
  dpd_buf4_init(&Z, EOM_TMP1, R_irr, 11, 11, 11, 11, 0, "Z (ej,bn)");
624
 
  dpd_buf4_init(&H2, CC_HBAR, 0, 0, 11, 2, 11, 0, "Wmnie (m>n,ei)");
625
 
  dpd_file2_init(&R1, CC_GR, R_irr, 0, 1, "Ria");
626
 
  dpd_contract244(&R1, &H2, &Z, 0, 0, 0, 1.0, 0.0);
627
 
  dpd_buf4_close(&H2);
628
 
  dpd_buf4_init(&H2, CC_HBAR, 0, 11, 5, 11, 7, 0, "Wamef");
629
 
  dpd_contract424(&H2, &R1, &Z, 3, 1, 0, 1.0, 1.0);
630
 
  dpd_buf4_close(&H2);
631
 
  dpd_file2_close(&R1);
632
 
  dpd_buf4_sort(&Z, EOM_TMP1, qpsr, 10, 10, "Z (je,nb)");
633
 
  dpd_buf4_close(&Z);
634
 
  dpd_buf4_init(&Z, EOM_TMP1, R_irr, 10, 10, 10, 10, 0, "Z (je,nb)");
635
 
  dpd_buf4_sort(&Z, EOM_TMP1, psrq, 10, 10, "Z (jb,ne)");
636
 
  dpd_buf4_close(&Z);
637
 
 
638
 
  dpd_buf4_init(&Z, EOM_TMP1, R_irr, 11, 10, 11, 10, 0, "Z (Ej,Nb)");
639
 
  dpd_buf4_init(&H2, CC_HBAR, 0, 0, 10, 0, 10, 0, "WMnIe");
640
 
  dpd_file2_init(&R1, CC_GR, R_irr, 0, 1, "RIA");
641
 
  dpd_contract244(&R1, &H2, &Z, 0, 0, 0, 1.0, 0.0);
642
 
  dpd_buf4_close(&H2);
643
 
  dpd_buf4_init(&H2, CC_HBAR, 0, 11, 5, 11, 5, 0, "WAmEf");
644
 
  dpd_contract244(&R1, &H2, &Z, 1, 2, 1, -1.0, 1.0);
645
 
  dpd_buf4_close(&H2);
646
 
  dpd_file2_close(&R1);
647
 
  dpd_buf4_sort(&Z, EOM_TMP1, qprs, 10, 10, "Z (jE,Nb)");
648
 
  dpd_buf4_close(&Z);
649
 
  dpd_buf4_init(&Z, EOM_TMP1, R_irr, 10, 10, 10, 10, 0, "Z (jE,Nb)");
650
 
  dpd_buf4_sort(&Z, EOM_TMP1, psrq, 10, 10, "Z (jb,NE)");
651
 
  dpd_buf4_close(&Z);
652
 
 
653
 
  dpd_buf4_init(&Z, EOM_TMP1, R_irr, 10, 11, 10, 11, 0, "Z (Je,bN)");
654
 
  dpd_buf4_init(&H2, CC_HBAR, 0, 0, 11, 0, 11, 0, "WMnIe (Mn,eI)");
655
 
  dpd_file2_init(&R1, CC_GR, R_irr, 0, 1, "Ria");
656
 
  dpd_contract424(&H2, &R1, &Z, 1, 0, 1, -1.0, 0.0);
657
 
  dpd_file2_close(&R1);
658
 
  dpd_buf4_close(&H2);
659
 
  dpd_buf4_sort(&Z, EOM_TMP1, prsq, 10, 10, "Z (Jb,Ne)");
660
 
  dpd_buf4_close(&Z);
661
 
 
662
 
  dpd_buf4_init(&Z, EOM_TMP1, R_irr, 11, 11, 11, 11, 0, "Z2 (eJ,bN)");
663
 
  dpd_buf4_init(&H2, CC_HBAR, 0, 11, 5, 11, 5, 0, "WaMeF");
664
 
  dpd_file2_init(&R1, CC_GR, R_irr, 0, 1, "RIA");
665
 
  dpd_contract424(&H2, &R1, &Z, 3, 1, 0, 1.0, 0.0);
666
 
  dpd_file2_close(&R1);
667
 
  dpd_buf4_close(&H2);
668
 
  dpd_buf4_sort_axpy(&Z, EOM_TMP1, qrsp, 10, 10, "Z (Jb,Ne)", 1.0);
669
 
  dpd_buf4_close(&Z);
670
 
 
671
 
  dpd_buf4_init(&Z, EOM_TMP1, R_irr, 10, 11, 10, 11, 0, "Z (jE,Bn)");
672
 
  dpd_buf4_init(&H2, CC_HBAR, 0, 0, 11, 0, 11, 0, "WmNiE (mN,Ei)");
673
 
  dpd_file2_init(&R1, CC_GR, R_irr, 0, 1, "RIA");
674
 
  dpd_contract424(&H2, &R1, &Z, 1, 0, 1, -1.0, 0.0);
675
 
  dpd_file2_close(&R1);
676
 
  dpd_buf4_close(&H2);
677
 
  dpd_buf4_sort(&Z, EOM_TMP1, prsq, 10, 10, "Z (jB,nE)");
678
 
  dpd_buf4_close(&Z);
679
 
 
680
 
  dpd_buf4_init(&Z, EOM_TMP1, R_irr, 11, 11, 11, 11, 0, "Z2 (Ej,Bn)");
681
 
  dpd_buf4_init(&H2, CC_HBAR, 0, 11, 5, 11, 5, 0, "WAmEf");
682
 
  dpd_file2_init(&R1, CC_GR, R_irr, 0, 1, "Ria");
683
 
  dpd_contract424(&H2, &R1, &Z, 3, 1, 0, 1.0, 0.0);
684
 
  dpd_file2_close(&R1);
685
 
  dpd_buf4_close(&H2);
686
 
  dpd_buf4_sort_axpy(&Z, EOM_TMP1, qrsp, 10, 10, "Z (jB,nE)", 1.0);
687
 
  dpd_buf4_close(&Z);
688
 
 
689
 
  /* XIJAB -= P(IJ) P(AB) L(IA,NE) Z(NE,JB) */
690
 
  dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "Z2 (IA,JB)");
691
 
  dpd_buf4_init(&L2, CC_GL, L_irr, 10, 10, 10, 10, 0, "LIAJB");
692
 
  dpd_buf4_init(&Z, EOM_TMP1, R_irr, 10, 10, 10, 10, 0, "Z (JB,NE)");
693
 
  dpd_contract444(&L2, &Z, &Z2, 0, 0, 1.0, 0.0);
694
 
  dpd_buf4_close(&Z);
695
 
  dpd_buf4_close(&L2);
696
 
  dpd_buf4_init(&L2, CC_GL, L_irr, 10, 10, 10, 10, 0, "LIAjb");
697
 
  dpd_buf4_init(&Z, EOM_TMP1, R_irr, 10, 10, 10, 10, 0, "Z (JB,ne)");
698
 
  dpd_contract444(&L2, &Z, &Z2, 0, 0, 1.0, 1.0);
699
 
  dpd_buf4_close(&Z);
700
 
  dpd_buf4_close(&L2);
701
 
  dpd_buf4_sort(&Z2, EOM_TMP1, prqs, 0, 5, "Z2 (IJ,AB)");
702
 
  dpd_buf4_close(&Z2);
703
 
 
704
 
  dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 0, 5, 0, 5, 0, "Z2 (IJ,AB)");
705
 
  dpd_buf4_init(&XIJAB, EOM_XI, G_irr, 0, 5, 2, 7, 0, "XIJAB");
706
 
  dpd_buf4_axpy(&Z2, &XIJAB, -1.0);
707
 
  dpd_buf4_close(&XIJAB);
708
 
  dpd_buf4_sort_axpy(&Z2, EOM_XI, qprs, 2, 7, "XIJAB", 1.0);
709
 
  dpd_buf4_sort_axpy(&Z2, EOM_XI, pqsr, 2, 7, "XIJAB", 1.0);
710
 
  dpd_buf4_sort_axpy(&Z2, EOM_XI, qpsr, 2, 7, "XIJAB", -1.0);
711
 
  dpd_buf4_close(&Z2);
712
 
#ifdef DEBUG_XI
713
 
x_xi_check("terms 18, 19 (Wmnie, Wamef)");
714
 
#endif
715
 
 
716
 
  /* Xijab -= P(ij) P(ab) L(ia,ne) Z(ne,jb) */
717
 
  dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "Z2 (ia,jb)");
718
 
  dpd_buf4_init(&L2, CC_GL, L_irr, 10, 10, 10, 10, 0, "Liajb");
719
 
  dpd_buf4_init(&Z, EOM_TMP1, R_irr, 10, 10, 10, 10, 0, "Z (jb,ne)");
720
 
  dpd_contract444(&L2, &Z, &Z2, 0, 0, 1.0, 0.0);
721
 
  dpd_buf4_close(&Z);
722
 
  dpd_buf4_close(&L2);
723
 
  dpd_buf4_init(&L2, CC_GL, L_irr, 10, 10, 10, 10, 0, "LiaJB");
724
 
  dpd_buf4_init(&Z, EOM_TMP1, R_irr, 10, 10, 10, 10, 0, "Z (jb,NE)");
725
 
  dpd_contract444(&L2, &Z, &Z2, 0, 0, 1.0, 1.0);
726
 
  dpd_buf4_close(&Z);
727
 
  dpd_buf4_close(&L2);
728
 
  dpd_buf4_sort(&Z2, EOM_TMP1, prqs, 0, 5, "Z2 (ij,ab)");
729
 
  dpd_buf4_close(&Z2);
730
 
 
731
 
  dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 0, 5, 0, 5, 0, "Z2 (ij,ab)");
732
 
  dpd_buf4_init(&Xijab, EOM_XI, G_irr, 0, 5, 2, 7, 0, "Xijab");
733
 
  dpd_buf4_axpy(&Z2, &Xijab, -1.0);
734
 
  dpd_buf4_close(&Xijab);
735
 
  dpd_buf4_sort_axpy(&Z2, EOM_XI, qprs, 2, 7, "Xijab", 1.0);
736
 
  dpd_buf4_sort_axpy(&Z2, EOM_XI, pqsr, 2, 7, "Xijab", 1.0);
737
 
  dpd_buf4_sort_axpy(&Z2, EOM_XI, qpsr, 2, 7, "Xijab", -1.0);
738
 
  dpd_buf4_close(&Z2);
739
 
 
740
 
  /* XIjAb += - L(IA,NE) Z(jb,NE) - L(IA,ne) Z(jb,ne)  */
741
 
  /*          - L(jb,ne) Z(IA,ne) - L(jb,NE) Z(IA,NE)  */
742
 
  dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "Z2 (IA,jb)");
743
 
  dpd_buf4_init(&L2, CC_GL, L_irr, 10, 10, 10, 10, 0, "LIAJB");
744
 
  dpd_buf4_init(&Z, EOM_TMP1, R_irr, 10, 10, 10, 10, 0, "Z (jb,NE)");
745
 
  dpd_contract444(&L2, &Z, &Z2, 0, 0, 1.0, 0.0);
746
 
  dpd_buf4_close(&Z);
747
 
  dpd_buf4_close(&L2);
748
 
  dpd_buf4_init(&L2, CC_GL, L_irr, 10, 10, 10, 10, 0, "LIAjb");
749
 
  dpd_buf4_init(&Z, EOM_TMP1, R_irr, 10, 10, 10, 10, 0, "Z (jb,ne)");
750
 
  dpd_contract444(&L2, &Z, &Z2, 0, 0, 1.0, 1.0);
751
 
  dpd_buf4_close(&Z);
752
 
  dpd_buf4_close(&L2);
753
 
  dpd_buf4_init(&Z, EOM_TMP1, R_irr, 10, 10, 10, 10, 0, "Z (JB,ne)");
754
 
  dpd_buf4_init(&L2, CC_GL, L_irr, 10, 10, 10, 10, 0, "Liajb");
755
 
  dpd_contract444(&Z, &L2, &Z2, 0, 0, 1.0, 1.0);
756
 
  dpd_buf4_close(&L2);
757
 
  dpd_buf4_close(&Z);
758
 
  dpd_buf4_init(&Z, EOM_TMP1, R_irr, 10, 10, 10, 10, 0, "Z (JB,NE)");
759
 
  dpd_buf4_init(&L2, CC_GL, L_irr, 10, 10, 10, 10, 0, "LiaJB");
760
 
  dpd_contract444(&Z, &L2, &Z2, 0, 0, 1.0, 1.0);
761
 
  dpd_buf4_close(&L2);
762
 
  dpd_buf4_close(&Z);
763
 
  dpd_buf4_sort_axpy(&Z2, EOM_XI, prqs, 0, 5, "XIjAb", -1.0);
764
 
  dpd_buf4_close(&Z2);
765
 
 
766
 
  /* XIjAb += + L(jA,Ne) Z(Ib,Ne) + L(Ib,nE) Z(jA,nE)  */
767
 
  dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "Z2 (Ib,jA)");
768
 
  dpd_buf4_init(&L2, CC_GL, L_irr, 10, 10, 10, 10, 0, "LjAIb");
769
 
  dpd_buf4_init(&Z, EOM_TMP1, R_irr, 10, 10, 10, 10, 0, "Z (Jb,Ne)");
770
 
  dpd_contract444(&Z, &L2, &Z2, 0, 0, -1.0, 0.0);
771
 
  dpd_buf4_close(&Z);
772
 
  dpd_buf4_close(&L2);
773
 
 
774
 
  dpd_buf4_init(&L2, CC_GL, L_irr, 10, 10, 10, 10, 0, "LIbjA");
775
 
  dpd_buf4_init(&Z, EOM_TMP1, R_irr, 10, 10, 10, 10, 0, "Z (jB,nE)");
776
 
  dpd_contract444(&L2, &Z, &Z2, 0, 0, -1.0, 1.0);
777
 
  dpd_buf4_close(&Z);
778
 
  dpd_buf4_close(&L2);
779
 
  dpd_buf4_sort_axpy(&Z2, EOM_XI, prsq, 0, 5, "XIjAb", 1.0);
780
 
  dpd_buf4_close(&Z2);
781
 
#ifdef DEBUG_XI
782
 
x_xi_check("terms 18, 19 (Wmnie, Wamef)");
783
 
#endif
784
 
  psio_close(EOM_TMP1,0);
785
 
  psio_open(EOM_TMP1, PSIO_OPEN_NEW);
786
 
 
787
 
  /* Write irrep of XI amplitudes to CC_INFO */
788
 
  psio_write_entry(CC_INFO, "XI Irrep", (char *) &G_irr,sizeof(int));
789
 
 
790
 
  dpd_file2_init(&XIA, EOM_XI, G_irr, 0, 1, "XIA");
791
 
  tval = dpd_file2_dot_self(&XIA);
792
 
  dpd_file2_close(&XIA);
793
 
  fprintf(outfile,"XIA amplitudes: norm=%20.15lf dot=%20.15lf\n", sqrt(tval), tval );
794
 
  dpd_file2_init(&Xia, EOM_XI, G_irr, 0, 1, "Xia");
795
 
  tval += dpd_file2_dot_self(&Xia);
796
 
  fprintf(outfile,"X1 amplitudes:  norm=%20.15lf dot=%20.15lf\n", sqrt(tval), tval );
797
 
  dpd_file2_close(&Xia);
798
 
  dpd_buf4_init(&XIJAB, EOM_XI, G_irr, 2, 7, 2, 7, 0, "XIJAB");
799
 
  tval += dpd_buf4_dot_self(&XIJAB);
800
 
  dpd_buf4_close(&XIJAB);
801
 
  dpd_buf4_init(&Xijab, EOM_XI, G_irr, 2, 7, 2, 7, 0, "Xijab");
802
 
  tval += dpd_buf4_dot_self(&Xijab);
803
 
  dpd_buf4_close(&Xijab);
804
 
  dpd_buf4_init(&XIjAb, EOM_XI, G_irr, 0, 5, 0, 5, 0, "XIjAb");
805
 
  tval += dpd_buf4_dot_self(&XIjAb);
806
 
  dpd_buf4_close(&XIjAb);
807
 
  fprintf(outfile,"Norm of Xi: %20.15lf\n", sqrt(tval) );
808
 
  return;
809
 
}
810
 
 
811
 
 
812
 
 
813
 
/* compute terms 4 and 6 of xi2 amplitudes */
814
 
/* Xijab += P(ij) P(ab) (Rme Lia + Rmnef Linaf) <mj||eb> */
815
 
void x_xi2_4_rohf(void)
816
 
{
817
 
  dpdfile2 RIA, Ria, LIA, Lia;
818
 
  int L_irr, R_irr, G_irr, nirreps;
819
 
  int I, A, M, E, i, a, m, e, h, row, col, Isym, Esym, Asym, Msym;
820
 
  dpdbuf4 D, R2, L2, H2, I2, Z, Z2, XIJAB, Xijab, XIjAb;
821
 
 
822
 
  L_irr = params.L_irr;
823
 
  R_irr = params.R_irr;
824
 
  G_irr = params.G_irr;
825
 
  nirreps = moinfo.nirreps;
826
 
 
827
 
  /* construct RL = Rme Lia + Rmnef Linaf */
828
 
  dpd_buf4_init(&I2, EOM_TMP, G_irr, 10, 10, 10, 10, 0, "R2L2_OVOV");
829
 
  dpd_buf4_copy(&I2, EOM_TMP1, "RL_OVOV");
830
 
  dpd_buf4_close(&I2);
831
 
  dpd_buf4_init(&I2, EOM_TMP, G_irr, 10, 10, 10, 10, 0, "R2L2_ovov");
832
 
  dpd_buf4_copy(&I2, EOM_TMP1, "RL_ovov");
833
 
  dpd_buf4_close(&I2);
834
 
  dpd_buf4_init(&I2, EOM_TMP, G_irr, 10, 10, 10, 10, 0, "R2L2_OVov");
835
 
  dpd_buf4_copy(&I2, EOM_TMP1, "RL_OVov");
836
 
  dpd_buf4_close(&I2);
837
 
  dpd_buf4_init(&I2, EOM_TMP, G_irr, 10, 10, 10, 10, 0, "R2L2_ovOV");
838
 
  dpd_buf4_copy(&I2, EOM_TMP1, "RL_ovOV");
839
 
  dpd_buf4_close(&I2);
840
 
  dpd_buf4_init(&I2, EOM_TMP, G_irr, 10, 10, 10, 10, 0, "R2L2_oVoV");
841
 
  dpd_buf4_copy(&I2, EOM_TMP1, "RL_oVoV");
842
 
  dpd_buf4_close(&I2);
843
 
  dpd_buf4_init(&I2, EOM_TMP, G_irr, 10, 10, 10, 10, 0, "R2L2_OvOv");
844
 
  dpd_buf4_copy(&I2, EOM_TMP1, "RL_OvOv");
845
 
  dpd_buf4_close(&I2);
846
 
 
847
 
  /* RL_OVOV(me,ia) += Rme Lia */
848
 
  dpd_file2_init(&RIA, CC_GR, R_irr, 0, 1, "RIA");
849
 
  dpd_file2_init(&LIA, CC_GL, L_irr, 0, 1, "LIA");
850
 
  dpd_file2_init(&Ria, CC_GR, R_irr, 0, 1, "Ria");
851
 
  dpd_file2_init(&Lia, CC_GL, L_irr, 0, 1, "Lia");
852
 
 
853
 
  dpd_file2_mat_init(&RIA);
854
 
  dpd_file2_mat_init(&Ria);
855
 
  dpd_file2_mat_init(&LIA);
856
 
  dpd_file2_mat_init(&Lia);
857
 
  dpd_file2_mat_rd(&RIA);
858
 
  dpd_file2_mat_rd(&Ria);
859
 
  dpd_file2_mat_rd(&LIA);
860
 
  dpd_file2_mat_rd(&Lia);
861
 
 
862
 
  dpd_buf4_init(&I2, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "RL_OVOV");
863
 
  for(h=0; h < nirreps; h++) {
864
 
    dpd_buf4_mat_irrep_init(&I2, h);
865
 
    dpd_buf4_mat_irrep_rd(&I2, h);
866
 
    for(row=0; row < I2.params->rowtot[h]; row++) {
867
 
      m = I2.params->roworb[h][row][0];
868
 
      e = I2.params->roworb[h][row][1];
869
 
      M = RIA.params->rowidx[m]; Msym = RIA.params->psym[m];
870
 
      E = RIA.params->colidx[e]; Esym = RIA.params->qsym[e];
871
 
      for(col=0; col < I2.params->coltot[h^G_irr]; col++) {
872
 
        i = I2.params->colorb[h^G_irr][col][0];
873
 
        a = I2.params->colorb[h^G_irr][col][1];
874
 
        I = LIA.params->rowidx[i]; Isym = LIA.params->psym[i];
875
 
        A = LIA.params->colidx[a]; Asym = LIA.params->qsym[a];
876
 
        if( ((Msym^Esym)==R_irr) && ((Isym^Asym)==L_irr) )
877
 
          I2.matrix[h][row][col] += RIA.matrix[Msym][M][E] * LIA.matrix[Isym][I][A];
878
 
      }
879
 
    }
880
 
    dpd_buf4_mat_irrep_wrt(&I2, h);
881
 
    dpd_buf4_mat_irrep_close(&I2, h);
882
 
  }
883
 
  dpd_buf4_close(&I2);
884
 
 
885
 
  dpd_buf4_init(&I2, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "RL_ovov");
886
 
  for(h=0; h < nirreps; h++) {
887
 
    dpd_buf4_mat_irrep_init(&I2, h);
888
 
    dpd_buf4_mat_irrep_rd(&I2, h);
889
 
    for(row=0; row < I2.params->rowtot[h]; row++) {
890
 
      m = I2.params->roworb[h][row][0];
891
 
      e = I2.params->roworb[h][row][1];
892
 
      M = Ria.params->rowidx[m]; Msym = Ria.params->psym[m];
893
 
      E = Ria.params->colidx[e]; Esym = Ria.params->qsym[e];
894
 
      for(col=0; col < I2.params->coltot[h^G_irr]; col++) {
895
 
        i = I2.params->colorb[h^G_irr][col][0];
896
 
        a = I2.params->colorb[h^G_irr][col][1];
897
 
        I = Lia.params->rowidx[i]; Isym = Lia.params->psym[i];
898
 
        A = Lia.params->colidx[a]; Asym = Lia.params->qsym[a];
899
 
        if( ((Msym^Esym)==R_irr) && ((Isym^Asym)==L_irr) )
900
 
          I2.matrix[h][row][col] += Ria.matrix[Msym][M][E] * Lia.matrix[Isym][I][A];
901
 
      }
902
 
    }
903
 
    dpd_buf4_mat_irrep_wrt(&I2, h);
904
 
    dpd_buf4_mat_irrep_close(&I2, h);
905
 
  }
906
 
  dpd_buf4_close(&I2);
907
 
 
908
 
  dpd_buf4_init(&I2, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "RL_OVov");
909
 
  for(h=0; h < nirreps; h++) {
910
 
    dpd_buf4_mat_irrep_init(&I2, h);
911
 
    dpd_buf4_mat_irrep_rd(&I2, h);
912
 
    for(row=0; row < I2.params->rowtot[h]; row++) {
913
 
      m = I2.params->roworb[h][row][0];
914
 
      e = I2.params->roworb[h][row][1];
915
 
      M = RIA.params->rowidx[m]; Msym = RIA.params->psym[m];
916
 
      E = RIA.params->colidx[e]; Esym = RIA.params->qsym[e];
917
 
      for(col=0; col < I2.params->coltot[h^G_irr]; col++) {
918
 
        i = I2.params->colorb[h^G_irr][col][0];
919
 
        a = I2.params->colorb[h^G_irr][col][1];
920
 
        I = Lia.params->rowidx[i]; Isym = Lia.params->psym[i];
921
 
        A = Lia.params->colidx[a]; Asym = Lia.params->qsym[a];
922
 
        if( ((Msym^Esym)==R_irr) && ((Isym^Asym)==L_irr) )
923
 
          I2.matrix[h][row][col] += RIA.matrix[Msym][M][E] * Lia.matrix[Isym][I][A];
924
 
      }
925
 
    }
926
 
    dpd_buf4_mat_irrep_wrt(&I2, h);
927
 
    dpd_buf4_mat_irrep_close(&I2, h);
928
 
  }
929
 
  dpd_buf4_close(&I2);
930
 
 
931
 
  dpd_buf4_init(&I2, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "RL_ovOV");
932
 
  for(h=0; h < nirreps; h++) {
933
 
    dpd_buf4_mat_irrep_init(&I2, h);
934
 
    dpd_buf4_mat_irrep_rd(&I2, h);
935
 
    for(row=0; row < I2.params->rowtot[h]; row++) {
936
 
      m = I2.params->roworb[h][row][0];
937
 
      e = I2.params->roworb[h][row][1];
938
 
      M = Ria.params->rowidx[m]; Msym = Ria.params->psym[m];
939
 
      E = Ria.params->colidx[e]; Esym = Ria.params->qsym[e];
940
 
      for(col=0; col < I2.params->coltot[h^G_irr]; col++) {
941
 
        i = I2.params->colorb[h^G_irr][col][0];
942
 
        a = I2.params->colorb[h^G_irr][col][1];
943
 
        I = LIA.params->rowidx[i]; Isym = LIA.params->psym[i];
944
 
        A = LIA.params->colidx[a]; Asym = LIA.params->qsym[a];
945
 
        if( ((Msym^Esym)==R_irr) && ((Isym^Asym)==L_irr) )
946
 
          I2.matrix[h][row][col] += Ria.matrix[Msym][M][E] * LIA.matrix[Isym][I][A];
947
 
      }
948
 
    }
949
 
    dpd_buf4_mat_irrep_wrt(&I2, h);
950
 
    dpd_buf4_mat_irrep_close(&I2, h);
951
 
  }
952
 
  dpd_buf4_close(&I2);
953
 
 
954
 
  dpd_file2_mat_close(&RIA);
955
 
  dpd_file2_mat_close(&Ria);
956
 
  dpd_file2_mat_close(&LIA);
957
 
  dpd_file2_mat_close(&Lia);
958
 
  dpd_file2_close(&RIA);
959
 
  dpd_file2_close(&Ria);
960
 
  dpd_file2_close(&LIA);
961
 
  dpd_file2_close(&Lia);
962
 
 
963
 
  /* Z2(ME,IA) <MJ|EB>(ME,JB) + Z2(me,IA) <mJ|eB>(me,JB) */
964
 
  dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "Z2 (IA,JB)");
965
 
  dpd_buf4_init(&D, CC_DINTS, 0, 10, 10, 10, 10, 0, "D <ij||ab> (ia,jb)");
966
 
  dpd_buf4_init(&Z, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "RL_OVOV");
967
 
  dpd_contract444(&Z, &D, &Z2, 1, 1, 1.0, 0.0);
968
 
  dpd_buf4_close(&Z);
969
 
  dpd_buf4_close(&D);
970
 
  dpd_buf4_init(&D, CC_DINTS, 0, 10, 10, 10, 10, 0, "D <ij|ab> (ia,jb)");
971
 
  dpd_buf4_init(&Z, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "RL_ovOV");
972
 
  dpd_contract444(&Z, &D, &Z2, 1, 1, 1.0, 1.0);
973
 
  dpd_buf4_close(&Z);
974
 
  dpd_buf4_close(&D);
975
 
  dpd_buf4_sort(&Z2, EOM_TMP1, prqs, 0, 5, "Z2 (IJ,AB)");
976
 
  dpd_buf4_close(&Z2);
977
 
 
978
 
  /* add in Z2(IJ,AB) permutations */
979
 
  dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 0, 5, 0, 5, 0, "Z2 (IJ,AB)");
980
 
  dpd_buf4_init(&XIJAB, EOM_XI, G_irr, 0, 5, 2, 7, 0, "XIJAB");
981
 
  dpd_buf4_axpy(&Z2, &XIJAB, 1.0);
982
 
  dpd_buf4_close(&XIJAB);
983
 
  dpd_buf4_sort_axpy(&Z2, EOM_XI, qprs, 2, 7, "XIJAB", -1.0);
984
 
  dpd_buf4_sort_axpy(&Z2, EOM_XI, pqsr, 2, 7, "XIJAB", -1.0);
985
 
  dpd_buf4_sort_axpy(&Z2, EOM_XI, qpsr, 2, 7, "XIJAB", 1.0);
986
 
  dpd_buf4_close(&Z2);
987
 
 
988
 
  /* Z2(me,ia) <mj|eb>(me,jb) + Z2(ME,ia) <Mj|Eb>(ME,jb) */
989
 
  dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "Z2 (ia,jb)");
990
 
  dpd_buf4_init(&D, CC_DINTS, 0, 10, 10, 10, 10, 0, "D <ij||ab> (ia,jb)");
991
 
  dpd_buf4_init(&Z, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "RL_ovov");
992
 
  dpd_contract444(&Z, &D, &Z2, 1, 1, 1.0, 0.0);
993
 
  dpd_buf4_close(&Z);
994
 
  dpd_buf4_close(&D);
995
 
  dpd_buf4_init(&D, CC_DINTS, 0, 10, 10, 10, 10, 0, "D <ij|ab> (ia,jb)");
996
 
  dpd_buf4_init(&Z, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "RL_OVov");
997
 
  dpd_contract444(&Z, &D, &Z2, 1, 1, 1.0, 1.0);
998
 
  dpd_buf4_close(&Z);
999
 
  dpd_buf4_close(&D);
1000
 
  dpd_buf4_sort(&Z2, EOM_TMP1, prqs, 0, 5, "Z2 (ij,ab)");
1001
 
  dpd_buf4_close(&Z2);
1002
 
 
1003
 
  dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 0, 5, 0, 5, 0, "Z2 (ij,ab)");
1004
 
  dpd_buf4_init(&XIJAB, EOM_XI, G_irr, 0, 5, 2, 7, 0, "Xijab");
1005
 
  dpd_buf4_axpy(&Z2, &XIJAB, 1.0);
1006
 
  dpd_buf4_close(&XIJAB);
1007
 
  dpd_buf4_sort_axpy(&Z2, EOM_XI, qprs, 2, 7, "Xijab", -1.0);
1008
 
  dpd_buf4_sort_axpy(&Z2, EOM_XI, pqsr, 2, 7, "Xijab", -1.0);
1009
 
  dpd_buf4_sort_axpy(&Z2, EOM_XI, qpsr, 2, 7, "Xijab", 1.0);
1010
 
  dpd_buf4_close(&Z2);
1011
 
    
1012
 
  /* Z2(ME,IA) <Mj|Eb>(ME,jb) + Z2(me,IA) <mj|eb>(me,jb) */
1013
 
  dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "Z2 (IA,jb)");
1014
 
  dpd_buf4_init(&Z, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "RL_OVOV");
1015
 
  dpd_buf4_init(&D, CC_DINTS, 0, 10, 10, 10, 10, 0, "D <ij|ab> (ia,jb)");
1016
 
  dpd_contract444(&Z, &D, &Z2, 1, 1, 1.0, 0.0);
1017
 
  dpd_buf4_close(&Z);
1018
 
  dpd_buf4_close(&D);
1019
 
  dpd_buf4_init(&Z, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "RL_ovOV");
1020
 
  dpd_buf4_init(&D, CC_DINTS, 0, 10, 10, 10, 10, 0, "D <ij||ab> (ia,jb)");
1021
 
  dpd_contract444(&Z, &D, &Z2, 1, 1, 1.0, 1.0);
1022
 
  dpd_buf4_close(&Z);
1023
 
  dpd_buf4_close(&D);
1024
 
 
1025
 
  /* XIjAb += ZMjEb <MI|EA> + Zmjeb <mI|eA> */
1026
 
  dpd_buf4_init(&D, CC_DINTS, 0, 10, 10, 10, 10, 0, "D <ij||ab> (ia,jb)");
1027
 
  dpd_buf4_init(&Z, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "RL_OVov");
1028
 
  dpd_contract444(&D, &Z, &Z2, 1, 1, 1.0, 1.0);
1029
 
  dpd_buf4_close(&Z);
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(&Z, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "RL_ovov");
1033
 
  dpd_contract444(&D, &Z, &Z2, 1, 1, 1.0, 1.0);
1034
 
  dpd_buf4_close(&Z);
1035
 
  dpd_buf4_close(&D);
1036
 
  dpd_buf4_sort_axpy(&Z2, EOM_XI, prqs, 0, 5, "XIjAb", 1.0);
1037
 
  dpd_buf4_close(&Z2);
1038
 
 
1039
 
  /* XIjAb += ZmjEA <mI|bE> + ZMIeb <Mj|Ae> */
1040
 
  dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "Z2 (Ib,jA)");
1041
 
  dpd_buf4_init(&D, CC_DINTS, 0, 10, 10, 10, 10, 0, "D <ij|ab> (ib,ja)");
1042
 
  dpd_buf4_init(&Z, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "RL_oVoV");
1043
 
  dpd_contract444(&D, &Z, &Z2, 1, 1, 1.0, 0.0);
1044
 
  dpd_buf4_close(&Z);
1045
 
  dpd_buf4_close(&D);
1046
 
 
1047
 
  dpd_buf4_init(&Z, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "RL_OvOv");
1048
 
  dpd_buf4_init(&D, CC_DINTS, 0, 10, 10, 10, 10, 0, "D <ij|ab> (ib,ja)");
1049
 
  dpd_contract444(&Z, &D, &Z2, 1, 1, 1.0, 1.0);
1050
 
  dpd_buf4_close(&Z);
1051
 
  dpd_buf4_close(&D);
1052
 
  dpd_buf4_sort_axpy(&Z2, EOM_XI, prsq, 0, 5, "XIjAb", 1.0);
1053
 
  dpd_buf4_close(&Z2);
1054
 
  return;
1055
 
}
1056
 
 
1057
 
 
1058
 
 
1059
 
/* compute term 14 of Xi2 amplitudes for all spin cases */
1060
 
/* Xijab += P(ij) P(ab) (Lmjeb Rme) Fia */
1061
 
 
1062
 
void x_xi2_14(void)
1063
 
{
1064
 
  dpdfile2 IIA, Iia, FME, Fme;
1065
 
  int L_irr, R_irr, G_irr, nirreps;
1066
 
  int I, A, J, B, i, a, j, b, h, row, col, Isym, Asym, Jsym, Bsym;
1067
 
  int II, AA, JJ, BB, ii, aa, jj, bb, IIsym, AAsym, JJsym, BBsym;
1068
 
  dpdbuf4 Z, XIJAB, Xijab, XIjAb;
1069
 
 
1070
 
  L_irr = params.L_irr;
1071
 
  R_irr = params.R_irr;
1072
 
  G_irr = params.G_irr;
1073
 
  nirreps = moinfo.nirreps;
1074
 
 
1075
 
  dpd_file2_init(&IIA, EOM_TMP, G_irr, 0, 1, "L2R1_OV");
1076
 
  dpd_file2_init(&FME, CC_OEI, 0, 0, 1, "FME");
1077
 
  dpd_file2_mat_init(&IIA);
1078
 
  dpd_file2_mat_init(&FME);
1079
 
  dpd_file2_mat_rd(&IIA);
1080
 
  dpd_file2_mat_rd(&FME);
1081
 
 
1082
 
  if (params.ref == 1) {
1083
 
    dpd_file2_init(&Iia, EOM_TMP, G_irr, 0, 1, "L2R1_ov");
1084
 
    dpd_file2_init(&Fme, CC_OEI, 0, 0, 1, "Fme");
1085
 
  }
1086
 
  else if (params.ref == 2) {
1087
 
    dpd_file2_init(&Iia, EOM_TMP, G_irr, 2, 3, "L2R1_ov");
1088
 
    dpd_file2_init(&Fme, CC_OEI, 0, 2, 3, "Fme");
1089
 
  }
1090
 
 
1091
 
  if (params.ref != 0) {
1092
 
    dpd_file2_mat_init(&Iia);
1093
 
    dpd_file2_mat_rd(&Iia);
1094
 
    dpd_file2_mat_init(&Fme);
1095
 
    dpd_file2_mat_rd(&Fme);
1096
 
  }
1097
 
 
1098
 
  /* build Z(IJ,AB) = FME(I,A) L2R1_OV(J,B) */
1099
 
  if (params.ref != 0) { /* ROHF or UHF for XIJAB */
1100
 
    dpd_buf4_init(&Z, EOM_TMP1, G_irr, 0, 5, 0, 5, 0, "Z (IJ,AB)");
1101
 
    for(h=0; h < nirreps; h++) {
1102
 
      dpd_buf4_mat_irrep_init(&Z, h);
1103
 
      for(row=0; row < Z.params->rowtot[h]; row++) {
1104
 
        i = Z.params->roworb[h][row][0];
1105
 
        j = Z.params->roworb[h][row][1];
1106
 
        I = FME.params->rowidx[i]; Isym = FME.params->psym[i];
1107
 
        J = IIA.params->rowidx[j]; Jsym = IIA.params->psym[j];
1108
 
        for(col=0; col < Z.params->coltot[h^G_irr]; col++) {
1109
 
          a = Z.params->colorb[h^G_irr][col][0];
1110
 
          b = Z.params->colorb[h^G_irr][col][1];
1111
 
          A = FME.params->colidx[a]; Asym = FME.params->qsym[a];
1112
 
          B = IIA.params->colidx[b]; Bsym = IIA.params->qsym[b];
1113
 
          if( (Isym==Asym) && ((Jsym^Bsym)==G_irr) )
1114
 
            Z.matrix[h][row][col] += FME.matrix[Isym][I][A] * IIA.matrix[Jsym][J][B];
1115
 
        }
1116
 
      }
1117
 
      dpd_buf4_mat_irrep_wrt(&Z, h);
1118
 
      dpd_buf4_mat_irrep_close(&Z, h);
1119
 
    }
1120
 
    /* XIJAB += P(IJ) P(AB) Z(IJ,AB) */
1121
 
    dpd_buf4_init(&XIJAB, EOM_XI, G_irr, 0, 5, 2, 7, 0, "XIJAB");
1122
 
    dpd_buf4_axpy(&Z, &XIJAB, 1.0);
1123
 
    dpd_buf4_close(&XIJAB);
1124
 
    dpd_buf4_sort_axpy(&Z, EOM_XI, qprs, 2, 7, "XIJAB", -1.0);
1125
 
    dpd_buf4_sort_axpy(&Z, EOM_XI, pqsr, 2, 7, "XIJAB", -1.0);
1126
 
    dpd_buf4_sort_axpy(&Z, EOM_XI, qpsr, 2, 7, "XIJAB", 1.0);
1127
 
    dpd_buf4_close(&Z);
1128
 
  }
1129
 
 
1130
 
  /* build Z(ij,ab) = Fme(i,a) L2R1_ov(j,b) */
1131
 
  if (params.ref != 0) { /* ROHF or UHF for Xijab */
1132
 
    if (params.ref == 1)
1133
 
      dpd_buf4_init(&Z, EOM_TMP1, G_irr, 0, 5, 0, 5, 0, "Z (ij,ab)");
1134
 
    else if (params.ref == 2)
1135
 
      dpd_buf4_init(&Z, EOM_TMP1, G_irr, 10, 15, 10, 15, 0, "Z (ij,ab)");
1136
 
    for(h=0; h < nirreps; h++) {
1137
 
      dpd_buf4_mat_irrep_init(&Z, h);
1138
 
      for(row=0; row < Z.params->rowtot[h]; row++) {
1139
 
        i = Z.params->roworb[h][row][0];
1140
 
        j = Z.params->roworb[h][row][1];
1141
 
        I = Fme.params->rowidx[i]; Isym = Fme.params->psym[i];
1142
 
        J = Iia.params->rowidx[j]; Jsym = Iia.params->psym[j];
1143
 
        for(col=0; col < Z.params->coltot[h^G_irr]; col++) {
1144
 
          a = Z.params->colorb[h^G_irr][col][0];
1145
 
          b = Z.params->colorb[h^G_irr][col][1];
1146
 
          A = Fme.params->colidx[a]; Asym = Fme.params->qsym[a];
1147
 
          B = Iia.params->colidx[b]; Bsym = Iia.params->qsym[b];
1148
 
          if( (Isym==Asym) && ((Jsym^Bsym)==G_irr) )
1149
 
            Z.matrix[h][row][col] += Fme.matrix[Isym][I][A] * Iia.matrix[Jsym][J][B];
1150
 
        }
1151
 
      }
1152
 
      dpd_buf4_mat_irrep_wrt(&Z, h);
1153
 
      dpd_buf4_mat_irrep_close(&Z, h);
1154
 
    }
1155
 
    /* Xijab += P(ij) P(ab) Z(ij,ab) */
1156
 
    if (params.ref == 1) {
1157
 
      dpd_buf4_init(&Xijab, EOM_XI, G_irr, 0, 5, 2, 7, 0, "Xijab");
1158
 
      dpd_buf4_axpy(&Z, &Xijab, 1.0);
1159
 
      dpd_buf4_close(&Xijab);
1160
 
      dpd_buf4_sort_axpy(&Z, EOM_XI, qprs, 2, 7, "Xijab", -1.0);
1161
 
      dpd_buf4_sort_axpy(&Z, EOM_XI, pqsr, 2, 7, "Xijab", -1.0);
1162
 
      dpd_buf4_sort_axpy(&Z, EOM_XI, qpsr, 2, 7, "Xijab", 1.0);
1163
 
      dpd_buf4_close(&Z);
1164
 
    }
1165
 
    else if (params.ref == 2) {
1166
 
      dpd_buf4_init(&Xijab, EOM_XI, G_irr, 10, 15, 12, 17, 0, "Xijab");
1167
 
      dpd_buf4_axpy(&Z, &Xijab, 1.0);
1168
 
      dpd_buf4_close(&Xijab);
1169
 
      dpd_buf4_sort_axpy(&Z, EOM_XI, qprs, 12, 17, "Xijab", -1.0);
1170
 
      dpd_buf4_sort_axpy(&Z, EOM_XI, pqsr, 12, 17, "Xijab", -1.0);
1171
 
      dpd_buf4_sort_axpy(&Z, EOM_XI, qpsr, 12, 17, "Xijab", 1.0);
1172
 
      dpd_buf4_close(&Z);
1173
 
    }
1174
 
  }
1175
 
 
1176
 
  /* XIjAb += FME(I,A) L2R1_ov(j,b) + IIA(I,A) F(j,b) */
1177
 
  if (params.ref == 0) { /* RHF XIjAb */
1178
 
    dpd_buf4_init(&XIjAb, EOM_XI, G_irr, 0, 5, 0, 5, 0, "XIjAb");
1179
 
    for(h=0; h < nirreps; h++) {
1180
 
      dpd_buf4_mat_irrep_init(&XIjAb, h);
1181
 
      dpd_buf4_mat_irrep_rd(&XIjAb, h);
1182
 
      for(row=0; row < XIjAb.params->rowtot[h]; row++) {
1183
 
        i = XIjAb.params->roworb[h][row][0];
1184
 
        j = XIjAb.params->roworb[h][row][1];
1185
 
        I = FME.params->rowidx[i]; Isym = FME.params->psym[i];
1186
 
        J = IIA.params->rowidx[j]; Jsym = IIA.params->psym[j];
1187
 
        II = IIA.params->rowidx[i]; IIsym = IIA.params->psym[i];
1188
 
        JJ = FME.params->rowidx[j]; JJsym = FME.params->psym[j];
1189
 
        for(col=0; col < XIjAb.params->coltot[h^G_irr]; col++) {
1190
 
          a = XIjAb.params->colorb[h^G_irr][col][0];
1191
 
          b = XIjAb.params->colorb[h^G_irr][col][1];
1192
 
          A = FME.params->colidx[a]; Asym = FME.params->qsym[a];
1193
 
            B = IIA.params->colidx[b]; Bsym = IIA.params->qsym[b];
1194
 
            AA = IIA.params->colidx[a]; AAsym = IIA.params->qsym[a];
1195
 
            BB = FME.params->colidx[b]; BBsym = FME.params->qsym[b];
1196
 
            if( (Isym==Asym) && ((Jsym^Bsym)==G_irr) )
1197
 
              XIjAb.matrix[h][row][col] += FME.matrix[Isym][I][A] * IIA.matrix[Jsym][J][B];
1198
 
            if( ((IIsym^AAsym)==G_irr) && (JJsym==BBsym) )
1199
 
              XIjAb.matrix[h][row][col] += IIA.matrix[IIsym][II][AA] * FME.matrix[JJsym][JJ][BB];
1200
 
        }
1201
 
      }
1202
 
      dpd_buf4_mat_irrep_wrt(&XIjAb, h);
1203
 
      dpd_buf4_mat_irrep_close(&XIjAb, h);
1204
 
    }
1205
 
    dpd_buf4_close(&XIjAb);
1206
 
    dpd_file2_mat_close(&IIA);
1207
 
    dpd_file2_close(&IIA);
1208
 
    dpd_file2_mat_close(&FME);
1209
 
    dpd_file2_close(&FME);
1210
 
  }
1211
 
  else { /* ROHF and UHF XIjAb */
1212
 
    if (params.ref == 1)
1213
 
      dpd_buf4_init(&XIjAb, EOM_XI, G_irr, 0, 5, 0, 5, 0, "XIjAb");
1214
 
    else if (params.ref == 2)
1215
 
      dpd_buf4_init(&XIjAb, EOM_XI, G_irr, 22, 28, 22, 28, 0, "XIjAb");
1216
 
    for(h=0; h < nirreps; h++) {
1217
 
      dpd_buf4_mat_irrep_init(&XIjAb, h);
1218
 
      dpd_buf4_mat_irrep_rd(&XIjAb, h);
1219
 
      for(row=0; row < XIjAb.params->rowtot[h]; row++) {
1220
 
        i = XIjAb.params->roworb[h][row][0];
1221
 
        j = XIjAb.params->roworb[h][row][1];
1222
 
        I = FME.params->rowidx[i]; Isym = FME.params->psym[i];
1223
 
        J = Iia.params->rowidx[j]; Jsym = Iia.params->psym[j];
1224
 
        II = IIA.params->rowidx[i]; IIsym = IIA.params->psym[i];
1225
 
        JJ = Fme.params->rowidx[j]; JJsym = Fme.params->psym[j];
1226
 
        for(col=0; col < XIjAb.params->coltot[h^G_irr]; col++) {
1227
 
          a = XIjAb.params->colorb[h^G_irr][col][0];
1228
 
          b = XIjAb.params->colorb[h^G_irr][col][1];
1229
 
          A = FME.params->colidx[a]; Asym = FME.params->qsym[a];
1230
 
            B = Iia.params->colidx[b]; Bsym = Iia.params->qsym[b];
1231
 
            AA = IIA.params->colidx[a]; AAsym = IIA.params->qsym[a];
1232
 
            BB = Fme.params->colidx[b]; BBsym = Fme.params->qsym[b];
1233
 
            if( (Isym==Asym) && ((Jsym^Bsym)==G_irr) )
1234
 
              XIjAb.matrix[h][row][col] += FME.matrix[Isym][I][A] * Iia.matrix[Jsym][J][B];
1235
 
            if( ((IIsym^AAsym)==G_irr) && (JJsym==BBsym) )
1236
 
              XIjAb.matrix[h][row][col] += IIA.matrix[IIsym][II][AA] * Fme.matrix[JJsym][JJ][BB];
1237
 
        }
1238
 
      }
1239
 
      dpd_buf4_mat_irrep_wrt(&XIjAb, h);
1240
 
      dpd_buf4_mat_irrep_close(&XIjAb, h);
1241
 
    }
1242
 
    dpd_buf4_close(&XIjAb);
1243
 
    dpd_file2_mat_close(&IIA); dpd_file2_mat_close(&Iia);
1244
 
    dpd_file2_close(&IIA); dpd_file2_close(&Iia);
1245
 
    dpd_file2_mat_close(&FME); dpd_file2_mat_close(&Fme);
1246
 
    dpd_file2_close(&FME); dpd_file2_close(&Fme);
1247
 
  }
1248
 
 
1249
 
  return;
1250
 
}