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

« back to all changes in this revision

Viewing changes to src/bin/cchbar/F.c

  • Committer: Bazaar Package Importer
  • Author(s): Michael Banck
  • Date: 2006-09-10 14:01:33 UTC
  • Revision ID: james.westby@ubuntu.com-20060910140133-ib2j86trekykfsfv
Tags: upstream-3.2.3
ImportĀ upstreamĀ versionĀ 3.2.3

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include <stdio.h>
 
2
#include <libdpd/dpd.h>
 
3
#define EXTERN
 
4
#include "globals.h"
 
5
 
 
6
/* F_build(): Constructs the one-electron HBAR matrix elements
 
7
** Fme, Fae, and Fmi.  These are defined in spin-orbitals as
 
8
**
 
9
** Fme = f_me + t_n^f <mn||ef>
 
10
**
 
11
** Fae = f_ae - 1/2 f_me t_m^a + f_m^f <am||ef> - 1/2 taut_mn^af <mn||ef>
 
12
**
 
13
** Fmi = f_mi + 1/2 f_me t_i^e + t_n^e <mn||ie> + 1/2 taut_in^ef <mn||ef>
 
14
**
 
15
** where taut_ij^ab = t_ij^ab + 1/2 ( t_i^a t_j^b - t_i^b t_j^a )
 
16
**
 
17
** The standard named FAE, Fae, FMI, and Fmi are used for the complete
 
18
** matrix elements, while the names FAEt, Faet, FMIt, and Fmit are used for
 
19
** matrices with the diagonal elements removed.
 
20
**
 
21
** TDC, revised June 2002
 
22
*/
 
23
 
 
24
void F_build(void) {
 
25
  int h,i,e,a;
 
26
  dpdfile2 Faet, FAEt, Fmit, FMIt;
 
27
  dpdfile2 Fae, FAE, FMI, Fmi;
 
28
  dpdfile2 fab, fAB, fij, fIJ;
 
29
  dpdfile2 FME, Fme;
 
30
  dpdfile2 fIA, fia;
 
31
  dpdfile2 tIA, tia;
 
32
  dpdbuf4 F_anti, F, E_anti, E, D_anti, D;
 
33
  dpdbuf4 tautIJAB, tautijab, tautIjAb, taut;
 
34
 
 
35
  if(params.ref == 0 ||  params.ref == 1) { /** RHF or ROHF **/
 
36
 
 
37
    /* FME and Fme */
 
38
    dpd_file2_init(&fIA, CC_OEI, 0, 0, 1, "fIA");
 
39
    dpd_file2_copy(&fIA, CC_OEI, "FME");
 
40
    dpd_file2_close(&fIA);
 
41
 
 
42
    dpd_file2_init(&fia, CC_OEI, 0, 0, 1, "fia");
 
43
    dpd_file2_copy(&fia, CC_OEI, "Fme");
 
44
    dpd_file2_close(&fia);
 
45
  
 
46
    dpd_file2_init(&FME, CC_OEI, 0, 0, 1, "FME");
 
47
    dpd_file2_init(&Fme, CC_OEI, 0, 0, 1, "Fme");
 
48
  
 
49
    dpd_buf4_init(&D_anti, CC_DINTS, 0, 0, 5, 0, 5, 0, "D <ij||ab>");
 
50
    dpd_buf4_init(&D, CC_DINTS, 0, 0, 5, 0, 5, 0, "D <ij|ab>");
 
51
    dpd_file2_init(&tIA, CC_OEI, 0, 0, 1, "tIA");
 
52
    dpd_file2_init(&tia, CC_OEI, 0, 0, 1, "tia");
 
53
 
 
54
    dpd_dot13(&tIA, &D_anti, &FME, 0, 0, 1.0, 1.0);
 
55
    dpd_dot13(&tia, &D, &FME, 0, 0, 1.0, 1.0);
 
56
 
 
57
    dpd_dot13(&tia, &D_anti, &Fme, 0, 0, 1.0, 1.0);
 
58
    dpd_dot13(&tIA, &D, &Fme, 0, 0, 1.0, 1.0);
 
59
 
 
60
    dpd_file2_close(&tIA);
 
61
    dpd_file2_close(&tia);
 
62
    dpd_buf4_close(&D_anti);
 
63
    dpd_buf4_close(&D);
 
64
 
 
65
    dpd_file2_close(&FME);
 
66
    dpd_file2_close(&Fme);
 
67
 
 
68
    /* FAE and Fae */
 
69
 
 
70
    dpd_file2_init(&fAB, CC_OEI, 0, 1, 1, "fAB");
 
71
    dpd_file2_copy(&fAB, CC_OEI, "FAE");
 
72
    dpd_file2_close(&fAB);
 
73
 
 
74
    dpd_file2_init(&fab, CC_OEI, 0, 1, 1, "fab");
 
75
    dpd_file2_copy(&fab, CC_OEI, "Fae");
 
76
    dpd_file2_close(&fab);
 
77
 
 
78
    dpd_file2_init(&FAE, CC_OEI, 0, 1, 1, "FAE");
 
79
    dpd_file2_init(&Fae, CC_OEI, 0, 1, 1, "Fae");
 
80
 
 
81
    dpd_file2_init(&fIA, CC_OEI, 0, 0, 1, "fIA");
 
82
    dpd_file2_init(&tIA, CC_OEI, 0, 0, 1, "tIA");
 
83
    dpd_contract222(&tIA, &fIA, &FAE, 1, 1, -0.5, 1);
 
84
    dpd_file2_close(&tIA);
 
85
    dpd_file2_close(&fIA);
 
86
 
 
87
    dpd_file2_init(&fia, CC_OEI, 0, 0, 1, "fia");
 
88
    dpd_file2_init(&tia, CC_OEI, 0, 0, 1, "tia");
 
89
    dpd_contract222(&tia, &fia, &Fae, 1, 1, -0.5, 1);
 
90
    dpd_file2_close(&tia);
 
91
    dpd_file2_close(&fia);
 
92
 
 
93
    dpd_buf4_init(&F_anti, CC_FINTS, 0, 10, 5, 10, 5, 1, "F <ia|bc>");
 
94
    dpd_buf4_init(&F, CC_FINTS, 0, 10, 5, 10, 5, 0,"F <ia|bc>");
 
95
    dpd_file2_init(&tIA, CC_OEI, 0, 0, 1, "tIA");
 
96
    dpd_file2_init(&tia, CC_OEI, 0, 0, 1, "tia");
 
97
 
 
98
    dpd_dot13(&tIA, &F_anti, &FAE, 0, 0, 1.0, 1.0);
 
99
    dpd_dot13(&tia, &F, &FAE, 0, 0, 1.0, 1.0);
 
100
 
 
101
    dpd_dot13(&tia, &F_anti, &Fae, 0, 0, 1.0, 1.0);
 
102
    dpd_dot13(&tIA, &F, &Fae, 0, 0, 1.0, 1.0);
 
103
 
 
104
    dpd_file2_close(&tIA);
 
105
    dpd_file2_close(&tia);
 
106
    dpd_buf4_close(&F_anti);
 
107
    dpd_buf4_close(&F);
 
108
 
 
109
    dpd_buf4_init(&D_anti, CC_DINTS, 0, 2, 5, 2, 5, 0, "D <ij||ab> (i>j,ab)");
 
110
 
 
111
    dpd_buf4_init(&tautIJAB, CC_TAMPS, 0, 2, 5, 2, 7, 0, "tautIJAB");
 
112
    dpd_buf4_init(&tautijab, CC_TAMPS, 0, 2, 5, 2, 7, 0, "tautijab");
 
113
 
 
114
    dpd_contract442(&tautIJAB, &D_anti, &FAE, 2, 2, -1, 1);
 
115
    dpd_contract442(&tautijab, &D_anti, &Fae, 2, 2, -1, 1);
 
116
 
 
117
    dpd_buf4_close(&D_anti);
 
118
    dpd_buf4_close(&tautIJAB);
 
119
    dpd_buf4_close(&tautijab);
 
120
 
 
121
    dpd_buf4_init(&D, CC_DINTS, 0, 0, 5, 0, 5, 0, "D <ij|ab>");
 
122
    dpd_buf4_init(&tautIjAb, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tautIjAb");
 
123
 
 
124
    dpd_contract442(&tautIjAb, &D, &Fae, 3, 3, -1, 1);
 
125
    dpd_contract442(&tautIjAb, &D, &FAE, 2, 2, -1, 1);
 
126
 
 
127
    dpd_buf4_close(&D);
 
128
    dpd_buf4_close(&tautIjAb);
 
129
 
 
130
    dpd_file2_init(&tIA, CC_OEI, 0, 0, 1, "tIA");
 
131
    dpd_file2_init(&FME, CC_OEI, 0, 0, 1, "FME");
 
132
    dpd_contract222(&tIA, &FME, &FAE, 1, 1, -0.5, 1);
 
133
    dpd_file2_close(&tIA);
 
134
    dpd_file2_close(&FME);
 
135
  
 
136
    dpd_file2_init(&tia, CC_OEI, 0, 0, 1, "tia");
 
137
    dpd_file2_init(&Fme, CC_OEI, 0, 0, 1, "Fme");
 
138
    dpd_contract222(&tia, &Fme, &Fae, 1, 1, -0.5, 1);
 
139
    dpd_file2_close(&tia);
 
140
    dpd_file2_close(&Fme);
 
141
 
 
142
    /* Form Fae and FAE tilde intermediates */
 
143
    dpd_file2_copy(&FAE, CC_OEI, "FAEt");
 
144
    dpd_file2_copy(&Fae, CC_OEI, "Faet");
 
145
 
 
146
    dpd_file2_close(&FAE);
 
147
    dpd_file2_close(&Fae);
 
148
 
 
149
 
 
150
    /* FMI and Fmi */
 
151
 
 
152
    dpd_file2_init(&fIJ, CC_OEI, 0, 0, 0, "fIJ");
 
153
    dpd_file2_copy(&fIJ, CC_OEI, "FMI");
 
154
    dpd_file2_close(&fIJ);
 
155
  
 
156
    dpd_file2_init(&fij, CC_OEI, 0, 0, 0, "fij");
 
157
    dpd_file2_copy(&fij, CC_OEI, "Fmi");
 
158
    dpd_file2_close(&fij);
 
159
 
 
160
    dpd_file2_init(&FMI, CC_OEI, 0, 0, 0, "FMI");
 
161
    dpd_file2_init(&Fmi, CC_OEI, 0, 0, 0, "Fmi");
 
162
 
 
163
    dpd_file2_init(&fIA, CC_OEI, 0, 0, 1, "fIA");
 
164
    dpd_file2_init(&tIA, CC_OEI, 0, 0, 1, "tIA");
 
165
    dpd_contract222(&fIA, &tIA, &FMI, 0, 0, 0.5, 1);
 
166
    dpd_file2_close(&tIA);
 
167
    dpd_file2_close(&fIA);
 
168
  
 
169
    dpd_file2_init(&fia, CC_OEI, 0, 0, 1, "fia");
 
170
    dpd_file2_init(&tia, CC_OEI, 0, 0, 1, "tia");
 
171
    dpd_contract222(&fia, &tia, &Fmi, 0, 0, 0.5, 1);
 
172
    dpd_file2_close(&tia);
 
173
    dpd_file2_close(&fia);
 
174
  
 
175
    dpd_buf4_init(&E_anti, CC_EINTS, 0, 11, 0, 11, 0, 1, "E <ai|jk>");
 
176
    dpd_buf4_init(&E, CC_EINTS, 0, 11, 0, 11, 0, 0, "E <ai|jk>");
 
177
    dpd_file2_init(&tIA, CC_OEI, 0, 0, 1, "tIA");
 
178
    dpd_file2_init(&tia, CC_OEI, 0, 0, 1, "tia");
 
179
 
 
180
    dpd_dot13(&tIA, &E_anti, &FMI, 1, 1, 1.0, 1.0);
 
181
    dpd_dot13(&tia, &E, &FMI, 1, 1, 1.0, 1.0);
 
182
 
 
183
    dpd_dot13(&tia, &E_anti, &Fmi, 1, 1, 1.0, 1.0);
 
184
    dpd_dot13(&tIA, &E, &Fmi, 1, 1, 1.0, 1.0);
 
185
 
 
186
    dpd_file2_close(&tIA);
 
187
    dpd_file2_close(&tia);
 
188
    dpd_buf4_close(&E_anti);
 
189
    dpd_buf4_close(&E);
 
190
 
 
191
    dpd_buf4_init(&D_anti, CC_DINTS, 0, 0, 7, 0, 7, 0, "D <ij||ab> (ij,a>b)");
 
192
    dpd_buf4_init(&tautIJAB, CC_TAMPS, 0, 0, 7, 2, 7, 0, "tautIJAB");
 
193
    dpd_buf4_init(&tautijab, CC_TAMPS, 0, 0, 7, 2, 7, 0, "tautijab");
 
194
 
 
195
    dpd_contract442(&D_anti, &tautIJAB, &FMI, 0, 0, 1, 1);
 
196
    dpd_contract442(&D_anti, &tautijab, &Fmi, 0, 0, 1, 1);
 
197
 
 
198
    dpd_buf4_close(&tautIJAB);
 
199
    dpd_buf4_close(&tautijab);
 
200
    dpd_buf4_close(&D_anti);
 
201
 
 
202
    dpd_buf4_init(&D, CC_DINTS, 0, 0, 5, 0, 5, 0, "D <ij|ab>");
 
203
    dpd_buf4_init(&tautIjAb, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tautIjAb");
 
204
 
 
205
    dpd_contract442(&D, &tautIjAb, &FMI, 0, 0, 1, 1);
 
206
    dpd_contract442(&D, &tautIjAb, &Fmi, 1, 1, 1, 1);
 
207
 
 
208
    dpd_buf4_close(&tautIjAb);
 
209
    dpd_buf4_close(&D);
 
210
 
 
211
    dpd_file2_init(&tIA, CC_OEI, 0, 0, 1, "tIA");
 
212
    dpd_file2_init(&FME, CC_OEI, 0, 0, 1, "FME");
 
213
    dpd_contract222(&FME, &tIA, &FMI, 0, 0, 0.5, 1);
 
214
    dpd_file2_close(&FME);
 
215
    dpd_file2_close(&tIA);
 
216
 
 
217
    dpd_file2_init(&tia, CC_OEI, 0, 0, 1, "tia");
 
218
    dpd_file2_init(&Fme, CC_OEI, 0, 0, 1, "Fme");
 
219
    dpd_contract222(&Fme, &tia, &Fmi, 0, 0, 0.5, 1);
 
220
    dpd_file2_close(&Fme);
 
221
    dpd_file2_close(&tia);
 
222
 
 
223
    /* FMI and Fmi tilde intermediates */
 
224
    dpd_file2_copy(&FMI, CC_OEI, "FMIt");
 
225
    dpd_file2_copy(&Fmi, CC_OEI, "Fmit");
 
226
 
 
227
    dpd_file2_close(&FMI);
 
228
    dpd_file2_close(&Fmi);
 
229
 
 
230
 
 
231
    /* remove diagonal elements from Ft's */
 
232
    dpd_file2_init(&Faet, CC_OEI, 0, 1, 1, "Faet");
 
233
    dpd_file2_mat_init(&Faet);
 
234
    dpd_file2_mat_rd(&Faet);
 
235
 
 
236
    for(h=0; h < moinfo.nirreps; h++)
 
237
      for(a=0; a < Faet.params->rowtot[h]; a++)
 
238
        Faet.matrix[h][a][a] = 0.0;
 
239
 
 
240
    dpd_file2_mat_wrt(&Faet);
 
241
    dpd_file2_mat_close(&Faet);
 
242
    dpd_file2_close(&Faet);
 
243
 
 
244
    dpd_file2_init(&FAEt, CC_OEI, 0, 1, 1, "FAEt");
 
245
    dpd_file2_mat_init(&FAEt);
 
246
    dpd_file2_mat_rd(&FAEt);
 
247
 
 
248
    for(h=0; h < moinfo.nirreps; h++)
 
249
      for(a=0; a < FAEt.params->rowtot[h]; a++)
 
250
        FAEt.matrix[h][a][a] = 0.0;
 
251
 
 
252
    dpd_file2_mat_wrt(&FAEt);
 
253
    dpd_file2_mat_close(&FAEt);
 
254
    dpd_file2_close(&FAEt);
 
255
 
 
256
    dpd_file2_init(&Fmit, CC_OEI, 0, 0, 0, "Fmit");
 
257
    dpd_file2_mat_init(&Fmit);
 
258
    dpd_file2_mat_rd(&Fmit);
 
259
 
 
260
    for(h=0; h < moinfo.nirreps; h++)
 
261
      for(a=0; a < Fmit.params->rowtot[h]; a++)
 
262
        Fmit.matrix[h][a][a] = 0.0;
 
263
 
 
264
    dpd_file2_mat_wrt(&Fmit);
 
265
    dpd_file2_mat_close(&Fmit);
 
266
    dpd_file2_close(&Fmit);
 
267
 
 
268
    dpd_file2_init(&FMIt, CC_OEI, 0, 0, 0, "FMIt");
 
269
    dpd_file2_mat_init(&FMIt);
 
270
    dpd_file2_mat_rd(&FMIt);
 
271
 
 
272
    for(h=0; h < moinfo.nirreps; h++)
 
273
      for(a=0; a < FMIt.params->rowtot[h]; a++)
 
274
        FMIt.matrix[h][a][a] = 0.0;
 
275
 
 
276
    dpd_file2_mat_wrt(&FMIt);
 
277
    dpd_file2_mat_close(&FMIt);
 
278
    dpd_file2_close(&FMIt);
 
279
 
 
280
  } /** RHF or ROHF **/
 
281
  else if(params.ref == 2) { /** UHF **/
 
282
 
 
283
    /* FME and Fme */
 
284
    dpd_file2_init(&fIA, CC_OEI, 0, 0, 1, "fIA");
 
285
    dpd_file2_copy(&fIA, CC_OEI, "FME");
 
286
    dpd_file2_close(&fIA);
 
287
 
 
288
    dpd_file2_init(&fia, CC_OEI, 0, 2, 3, "fia");
 
289
    dpd_file2_copy(&fia, CC_OEI, "Fme");
 
290
    dpd_file2_close(&fia);
 
291
  
 
292
    dpd_file2_init(&FME, CC_OEI, 0, 0, 1, "FME");
 
293
    dpd_file2_init(&Fme, CC_OEI, 0, 2, 3, "Fme");
 
294
  
 
295
    dpd_file2_init(&tIA, CC_OEI, 0, 0, 1, "tIA");
 
296
    dpd_file2_init(&tia, CC_OEI, 0, 2, 3, "tia");
 
297
 
 
298
    dpd_buf4_init(&D, CC_DINTS, 0, 20, 20, 20, 20, 0, "D <IJ||AB> (IA,JB)");
 
299
    dpd_contract422(&D, &tIA, &FME, 0, 0, 1, 1);
 
300
    dpd_buf4_close(&D);
 
301
 
 
302
    dpd_buf4_init(&D, CC_DINTS, 0, 20, 30, 20, 30, 0, "D <Ij|Ab> (IA,jb)");
 
303
    dpd_contract422(&D, &tia, &FME, 0, 0, 1, 1);
 
304
    dpd_buf4_close(&D);
 
305
 
 
306
    dpd_buf4_init(&D, CC_DINTS, 0, 30, 30, 30, 30, 0, "D <ij||ab> (ia,jb)");
 
307
    dpd_contract422(&D, &tia, &Fme, 0, 0, 1, 1);
 
308
    dpd_buf4_close(&D);
 
309
 
 
310
    dpd_buf4_init(&D, CC_DINTS, 0, 30, 20, 30, 20, 0, "D <Ij|Ab> (ia,JB)");
 
311
    dpd_contract422(&D, &tIA, &Fme, 0, 0, 1, 1);
 
312
    dpd_buf4_close(&D);
 
313
 
 
314
    dpd_file2_close(&tIA);
 
315
    dpd_file2_close(&tia);
 
316
 
 
317
    dpd_file2_close(&FME);
 
318
    dpd_file2_close(&Fme);
 
319
 
 
320
    /* FAE and Fae */
 
321
    dpd_file2_init(&fAB, CC_OEI, 0, 1, 1, "fAB");
 
322
    dpd_file2_copy(&fAB, CC_OEI, "FAE");
 
323
    dpd_file2_close(&fAB);
 
324
 
 
325
    dpd_file2_init(&fab, CC_OEI, 0, 3, 3, "fab");
 
326
    dpd_file2_copy(&fab, CC_OEI, "Fae");
 
327
    dpd_file2_close(&fab);
 
328
 
 
329
    dpd_file2_init(&FAE, CC_OEI, 0, 1, 1, "FAE");
 
330
    dpd_file2_init(&Fae, CC_OEI, 0, 3, 3, "Fae");
 
331
 
 
332
    dpd_file2_init(&fIA, CC_OEI, 0, 0, 1, "fIA");
 
333
    dpd_file2_init(&tIA, CC_OEI, 0, 0, 1, "tIA");
 
334
    dpd_contract222(&tIA, &fIA, &FAE, 1, 1, -0.5, 1);
 
335
    dpd_file2_close(&tIA);
 
336
    dpd_file2_close(&fIA);
 
337
 
 
338
    dpd_file2_init(&fia, CC_OEI, 0, 2, 3, "fia");
 
339
    dpd_file2_init(&tia, CC_OEI, 0, 2, 3, "tia");
 
340
    dpd_contract222(&tia, &fia, &Fae, 1, 1, -0.5, 1);
 
341
    dpd_file2_close(&tia);
 
342
    dpd_file2_close(&fia);
 
343
 
 
344
    dpd_file2_init(&tIA, CC_OEI, 0, 0, 1, "tIA");
 
345
    dpd_file2_init(&tia, CC_OEI, 0, 2, 3, "tia");
 
346
 
 
347
    dpd_buf4_init(&F, CC_FINTS, 0, 20, 5, 20, 5, 1, "F <IA|BC>");
 
348
    dpd_dot13(&tIA, &F, &FAE, 0, 0, 1, 1);
 
349
    dpd_buf4_close(&F);
 
350
 
 
351
    dpd_buf4_init(&F, CC_FINTS, 0, 27, 29, 27, 29, 0, "F <iA|bC>");
 
352
    dpd_dot13(&tia, &F, &FAE, 0, 0, 1, 1);
 
353
    dpd_buf4_close(&F);
 
354
 
 
355
    dpd_buf4_init(&F, CC_FINTS, 0, 30, 15, 30, 15, 1, "F <ia|bc>");
 
356
    dpd_dot13(&tia, &F, &Fae, 0, 0, 1, 1);
 
357
    dpd_buf4_close(&F);
 
358
 
 
359
    dpd_buf4_init(&F, CC_FINTS, 0, 24, 28, 24, 28, 0, "F <Ia|Bc>");
 
360
    dpd_dot13(&tIA, &F, &Fae, 0, 0, 1, 1);
 
361
    dpd_buf4_close(&F);
 
362
 
 
363
    dpd_file2_close(&tIA);
 
364
    dpd_file2_close(&tia);
 
365
 
 
366
    dpd_buf4_init(&D, CC_DINTS, 0, 2, 5, 2, 5, 0, "D <IJ||AB> (I>J,AB)");
 
367
    dpd_buf4_init(&taut, CC_TAMPS, 0, 2, 5, 2, 7, 0, "tautIJAB");
 
368
    dpd_contract442(&taut, &D, &FAE, 3, 3, -1, 1);
 
369
    dpd_buf4_close(&taut);
 
370
    dpd_buf4_close(&D);
 
371
 
 
372
    dpd_buf4_init(&D, CC_DINTS, 0, 22, 28, 22, 28, 0, "D <Ij|Ab>");
 
373
    dpd_buf4_init(&taut, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tautIjAb");
 
374
    dpd_contract442(&taut, &D, &FAE, 2, 2, -1, 1);
 
375
    dpd_buf4_close(&taut);
 
376
    dpd_buf4_close(&D);
 
377
 
 
378
    dpd_buf4_init(&D, CC_DINTS, 0, 12, 15, 12, 15, 0, "D <ij||ab> (i>j,ab)");
 
379
    dpd_buf4_init(&taut, CC_TAMPS, 0, 12, 15, 12, 17, 0, "tautijab");
 
380
    dpd_contract442(&taut, &D, &Fae, 3, 3, -1, 1);
 
381
    dpd_buf4_close(&taut);
 
382
    dpd_buf4_close(&D);
 
383
 
 
384
    dpd_buf4_init(&D, CC_DINTS, 0, 22, 28, 22, 28, 0, "D <Ij|Ab>");
 
385
    dpd_buf4_init(&taut, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tautIjAb");
 
386
    dpd_contract442(&taut, &D, &Fae, 3, 3, -1, 1);
 
387
    dpd_buf4_close(&taut);
 
388
    dpd_buf4_close(&D);
 
389
 
 
390
    dpd_file2_init(&tIA, CC_OEI, 0, 0, 1, "tIA");
 
391
    dpd_file2_init(&FME, CC_OEI, 0, 0, 1, "FME");
 
392
    dpd_contract222(&tIA, &FME, &FAE, 1, 1, -0.5, 1);
 
393
    dpd_file2_close(&tIA);
 
394
    dpd_file2_close(&FME);
 
395
  
 
396
    dpd_file2_init(&tia, CC_OEI, 0, 2, 3, "tia");
 
397
    dpd_file2_init(&Fme, CC_OEI, 0, 2, 3, "Fme");
 
398
    dpd_contract222(&tia, &Fme, &Fae, 1, 1, -0.5, 1);
 
399
    dpd_file2_close(&tia);
 
400
    dpd_file2_close(&Fme);
 
401
 
 
402
    /* Fae and FAE tilde intermediates */
 
403
    dpd_file2_copy(&FAE, CC_OEI, "FAEt");
 
404
    dpd_file2_copy(&Fae, CC_OEI, "Faet");
 
405
 
 
406
    dpd_file2_close(&FAE);
 
407
    dpd_file2_close(&Fae); 
 
408
 
 
409
    /* FMI and Fmi */
 
410
    dpd_file2_init(&fIJ, CC_OEI, 0, 0, 0, "fIJ");
 
411
    dpd_file2_copy(&fIJ, CC_OEI, "FMI");
 
412
    dpd_file2_close(&fIJ);
 
413
  
 
414
    dpd_file2_init(&fij, CC_OEI, 0, 2, 2, "fij");
 
415
    dpd_file2_copy(&fij, CC_OEI, "Fmi");
 
416
    dpd_file2_close(&fij);
 
417
 
 
418
    dpd_file2_init(&FMI, CC_OEI, 0, 0, 0, "FMI");
 
419
    dpd_file2_init(&Fmi, CC_OEI, 0, 2, 2, "Fmi");
 
420
 
 
421
    dpd_file2_init(&fIA, CC_OEI, 0, 0, 1, "fIA");
 
422
    dpd_file2_init(&tIA, CC_OEI, 0, 0, 1, "tIA");
 
423
    dpd_contract222(&fIA, &tIA, &FMI, 0, 0, 0.5, 1);
 
424
    dpd_file2_close(&tIA);
 
425
    dpd_file2_close(&fIA);
 
426
  
 
427
    dpd_file2_init(&fia, CC_OEI, 0, 2, 3, "fia");
 
428
    dpd_file2_init(&tia, CC_OEI, 0, 2, 3, "tia");
 
429
    dpd_contract222(&fia, &tia, &Fmi, 0, 0, 0.5, 1);
 
430
    dpd_file2_close(&tia);
 
431
    dpd_file2_close(&fia);
 
432
 
 
433
    dpd_file2_init(&tIA, CC_OEI, 0, 0, 1, "tIA");
 
434
    dpd_file2_init(&tia, CC_OEI, 0, 2, 3, "tia");
 
435
 
 
436
    dpd_buf4_init(&E_anti, CC_EINTS, 0, 21, 0, 21, 0, 1, "E <AI|JK>");
 
437
    dpd_buf4_init(&E, CC_EINTS, 0, 22, 24, 22, 24, 0, "E <Ij|Ka>");
 
438
 
 
439
    dpd_dot13(&tIA, &E_anti, &FMI, 1, 1, 1, 1);
 
440
    dpd_dot24(&tia, &E, &FMI, 0, 0, 1, 1);
 
441
 
 
442
    dpd_buf4_close(&E);
 
443
    dpd_buf4_close(&E_anti);
 
444
 
 
445
    dpd_buf4_init(&E_anti, CC_EINTS, 0, 31, 10, 31, 10, 1, "E <ai|jk>");
 
446
    dpd_buf4_init(&E, CC_EINTS, 0, 26, 22, 26, 22, 0, "E <Ai|Jk>");
 
447
 
 
448
    dpd_dot13(&tia, &E_anti, &Fmi, 1, 1, 1, 1);
 
449
    dpd_dot13(&tIA, &E, &Fmi, 1, 1, 1, 1);
 
450
 
 
451
    dpd_buf4_close(&E);
 
452
    dpd_buf4_close(&E_anti);
 
453
 
 
454
    dpd_file2_close(&tIA);
 
455
    dpd_file2_close(&tia);
 
456
 
 
457
    dpd_buf4_init(&D, CC_DINTS, 0, 0, 7, 0, 7, 0, "D <IJ||AB> (IJ,A>B)");
 
458
    dpd_buf4_init(&tautIJAB, CC_TAMPS, 0, 0, 7, 2, 7, 0, "tautIJAB");
 
459
    dpd_contract442(&D, &tautIJAB, &FMI, 0, 0, 1, 1);
 
460
    dpd_buf4_close(&tautIJAB);
 
461
    dpd_buf4_close(&D);
 
462
 
 
463
    dpd_buf4_init(&D, CC_DINTS, 0, 10, 17, 10, 17, 0, "D <ij||ab> (ij,a>b)");
 
464
    dpd_buf4_init(&tautijab, CC_TAMPS, 0, 10, 17, 12, 17, 0, "tautijab");
 
465
    dpd_contract442(&D, &tautijab, &Fmi, 0, 0, 1, 1);
 
466
    dpd_buf4_close(&tautijab);
 
467
    dpd_buf4_close(&D);
 
468
 
 
469
    dpd_buf4_init(&D, CC_DINTS, 0, 22, 28, 22, 28, 0, "D <Ij|Ab>");
 
470
    dpd_buf4_init(&tautIjAb, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tautIjAb");
 
471
    dpd_contract442(&D, &tautIjAb, &FMI, 0, 0, 1, 1);
 
472
    dpd_buf4_close(&tautIjAb);
 
473
    dpd_buf4_close(&D);
 
474
 
 
475
    dpd_buf4_init(&D, CC_DINTS, 0, 23, 29, 23, 29, 0, "D <iJ|aB>");
 
476
    dpd_buf4_init(&tautIjAb, CC_TAMPS, 0, 23, 29, 23, 29, 0, "tautiJaB");
 
477
    dpd_contract442(&D, &tautIjAb, &Fmi, 0, 0, 1, 1);
 
478
    dpd_buf4_close(&tautIjAb);
 
479
    dpd_buf4_close(&D);
 
480
 
 
481
    dpd_file2_init(&tIA, CC_OEI, 0, 0, 1, "tIA");
 
482
    dpd_file2_init(&FME, CC_OEI, 0, 0, 1, "FME");
 
483
    dpd_contract222(&FME, &tIA, &FMI, 0, 0, 0.5, 1);
 
484
    dpd_file2_close(&FME);
 
485
    dpd_file2_close(&tIA);
 
486
 
 
487
    dpd_file2_init(&tia, CC_OEI, 0, 2, 3, "tia");
 
488
    dpd_file2_init(&Fme, CC_OEI, 0, 2, 3, "Fme");
 
489
    dpd_contract222(&Fme, &tia, &Fmi, 0, 0, 0.5, 1);
 
490
    dpd_file2_close(&Fme);
 
491
    dpd_file2_close(&tia);
 
492
 
 
493
    /* FMI and Fmi tilde intermediate */
 
494
    dpd_file2_copy(&FMI, CC_OEI, "FMIt");
 
495
    dpd_file2_copy(&Fmi, CC_OEI, "Fmit");
 
496
 
 
497
    dpd_file2_close(&FMI);
 
498
    dpd_file2_close(&Fmi);
 
499
 
 
500
 
 
501
    /* remove diagonal elements from Ft's */
 
502
    dpd_file2_init(&Faet, CC_OEI, 0, 3, 3, "Faet");
 
503
    dpd_file2_mat_init(&Faet);
 
504
    dpd_file2_mat_rd(&Faet);
 
505
 
 
506
    for(h=0; h < moinfo.nirreps; h++)
 
507
      for(a=0; a < Faet.params->rowtot[h]; a++)
 
508
        Faet.matrix[h][a][a] = 0.0;
 
509
 
 
510
    dpd_file2_mat_wrt(&Faet);
 
511
    dpd_file2_mat_close(&Faet);
 
512
    dpd_file2_close(&Faet);
 
513
 
 
514
    dpd_file2_init(&FAEt, CC_OEI, 0, 1, 1, "FAEt");
 
515
    dpd_file2_mat_init(&FAEt);
 
516
    dpd_file2_mat_rd(&FAEt);
 
517
 
 
518
    for(h=0; h < moinfo.nirreps; h++)
 
519
      for(a=0; a < FAEt.params->rowtot[h]; a++)
 
520
        FAEt.matrix[h][a][a] = 0.0;
 
521
 
 
522
    dpd_file2_mat_wrt(&FAEt);
 
523
    dpd_file2_mat_close(&FAEt);
 
524
    dpd_file2_close(&FAEt);
 
525
 
 
526
    dpd_file2_init(&Fmit, CC_OEI, 0, 2, 2, "Fmit");
 
527
    dpd_file2_mat_init(&Fmit);
 
528
    dpd_file2_mat_rd(&Fmit);
 
529
 
 
530
    for(h=0; h < moinfo.nirreps; h++)
 
531
      for(a=0; a < Fmit.params->rowtot[h]; a++)
 
532
        Fmit.matrix[h][a][a] = 0.0;
 
533
 
 
534
    dpd_file2_mat_wrt(&Fmit);
 
535
    dpd_file2_mat_close(&Fmit);
 
536
    dpd_file2_close(&Fmit);
 
537
 
 
538
    dpd_file2_init(&FMIt, CC_OEI, 0, 0, 0, "FMIt");
 
539
    dpd_file2_mat_init(&FMIt);
 
540
    dpd_file2_mat_rd(&FMIt);
 
541
 
 
542
    for(h=0; h < moinfo.nirreps; h++)
 
543
      for(a=0; a < FMIt.params->rowtot[h]; a++)
 
544
        FMIt.matrix[h][a][a] = 0.0;
 
545
 
 
546
    dpd_file2_mat_wrt(&FMIt);
 
547
    dpd_file2_mat_close(&FMIt);
 
548
    dpd_file2_close(&FMIt);
 
549
  } /** UHF **/
 
550
 
 
551
  return;
 
552
 
 
553
}