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

« back to all changes in this revision

Viewing changes to src/bin/cclambda/cc2_L1.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 CCLAMBDA
 
3
    \brief Enter brief description of file here 
 
4
*/
 
5
#include <cstdio>
 
6
#include <libdpd/dpd.h>
 
7
#include <libqt/qt.h>
 
8
#include "MOInfo.h"
 
9
#include "Params.h"
 
10
#include "Local.h"
 
11
#define EXTERN
 
12
#include "globals.h"
 
13
 
 
14
namespace psi { namespace cclambda {
 
15
 
 
16
void local_filter_T1(dpdfile2 *T1);
 
17
 
 
18
void cc2_L1_build(struct L_Params L_params) {
 
19
 
 
20
  int GW, GL1, GL2, Gab, Gij, Gei, Gi, Ga, Gm;
 
21
  int a, A, i, I, ab, nlinks, nrows, ncols;
 
22
  dpdfile2 newLIA, newLia, LIA, Lia;
 
23
  dpdfile2 dIA, dia, Fme, FME;
 
24
  dpdfile2 Fae, FAE, Fmi, FMI;
 
25
  dpdfile2 GMI, Gmi, Gae, XIA, Xia;
 
26
  dpdfile2 GAE, G, GAI, Gai;
 
27
  dpdbuf4 WMBEJ, Wmbej, WMbEj, WmBeJ;
 
28
  dpdbuf4 WMBIJ, Wmbij, WMbIj, WmBiJ;
 
29
  dpdbuf4 LIJAB, Lijab, LIjAb, LiJaB, L2;
 
30
  dpdbuf4 WMNIE, Wmnie, WMnIe, WmNiE;
 
31
  dpdbuf4 WAMEF, Wamef, WAmEf, WaMeF, W;
 
32
  dpdbuf4 Z, D, E;
 
33
  dpdfile2 XLD;
 
34
  int L_irr;
 
35
  L_irr = L_params.irrep;
 
36
 
 
37
  /* ground state inhomogeneous term is Fme */
 
38
  if (L_params.ground) {
 
39
    if(params.ref == 0) {
 
40
      dpd_file2_init(&FME,CC_OEI, 0, 0, 1, "FME");
 
41
      dpd_file2_copy(&FME, CC_LAMBDA, "New LIA");
 
42
      dpd_file2_close(&FME);
 
43
    }
 
44
    else if(params.ref == 1) {
 
45
      dpd_file2_init(&Fme,CC_OEI, 0, 0, 1, "Fme");
 
46
      dpd_file2_init(&FME,CC_OEI, 0, 0, 1, "FME");
 
47
      dpd_file2_copy(&Fme, CC_LAMBDA, "New Lia");
 
48
      dpd_file2_copy(&FME, CC_LAMBDA, "New LIA");
 
49
      dpd_file2_close(&Fme);
 
50
      dpd_file2_close(&FME);
 
51
    }
 
52
    else if(params.ref == 2) {
 
53
      dpd_file2_init(&Fme,CC_OEI, 0, 2, 3, "Fme");
 
54
      dpd_file2_init(&FME,CC_OEI, 0, 0, 1, "FME");
 
55
      dpd_file2_copy(&Fme, CC_LAMBDA, "New Lia");
 
56
      dpd_file2_copy(&FME, CC_LAMBDA, "New LIA");
 
57
      dpd_file2_close(&Fme);
 
58
      dpd_file2_close(&FME);
 
59
    }
 
60
  }
 
61
  /* excited state - no inhomogenous term, first term is -energy*L*/
 
62
  else if (!params.zeta) {
 
63
    if (params.ref == 0 || params.ref == 1) {
 
64
      dpd_file2_init(&LIA, CC_LAMBDA, L_irr, 0, 1, "LIA");
 
65
      dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
 
66
      dpd_file2_init(&Lia, CC_LAMBDA, L_irr, 0, 1, "Lia");
 
67
      dpd_file2_init(&newLia, CC_LAMBDA, L_irr, 0, 1, "New Lia");
 
68
      dpd_file2_axpy(&LIA, &newLIA, -1.0 * L_params.cceom_energy, 0);
 
69
      dpd_file2_axpy(&Lia, &newLia, -1.0 * L_params.cceom_energy, 0);
 
70
      dpd_file2_close(&LIA);
 
71
      dpd_file2_close(&newLIA);
 
72
      dpd_file2_close(&Lia);
 
73
      dpd_file2_close(&newLia);
 
74
    }
 
75
    else if (params.ref == 2) {
 
76
      /* do nothing - TDC did not change to increments for the UHF case */
 
77
    }
 
78
  }
 
79
 
 
80
  if(params.ref == 0) {
 
81
    dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
 
82
    dpd_file2_init(&LIA, CC_LAMBDA, L_irr, 0, 1, "LIA");
 
83
 
 
84
    /* L1 RHS += Lie*Fea */
 
85
    dpd_file2_init(&FAE, CC_OEI, 0, 1, 1, "FAE");
 
86
    dpd_contract222(&LIA,&FAE,&newLIA, 0, 1, 1, 1);
 
87
    dpd_file2_close(&FAE);
 
88
 
 
89
    /* L1 RHS += -Lma*Fim */
 
90
    dpd_file2_init(&FMI,CC_OEI, 0, 0, 0, "FMI");
 
91
    dpd_contract222(&FMI,&LIA,&newLIA, 0, 1, -1, 1);
 
92
    dpd_file2_close(&FMI);
 
93
 
 
94
    dpd_file2_close(&LIA);
 
95
    dpd_file2_close(&newLIA);
 
96
  }
 
97
  else if(params.ref == 1) { /** ROHF **/
 
98
  }
 
99
  else if(params.ref == 2) { /** UHF **/
 
100
 
 
101
    dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
 
102
    dpd_file2_init(&newLia, CC_LAMBDA, L_irr, 2, 3, "New Lia");
 
103
 
 
104
    dpd_file2_init(&LIA, CC_LAMBDA, L_irr, 0, 1, "LIA");
 
105
    dpd_file2_init(&Lia, CC_LAMBDA, L_irr, 2, 3, "Lia");
 
106
 
 
107
    /* L1 RHS += Lie*Fea */
 
108
    dpd_file2_init(&FAE, CC_OEI, 0, 1, 1, "FAE");
 
109
    dpd_file2_init(&Fae, CC_OEI, 0, 3, 3, "Fae");
 
110
    dpd_contract222(&Lia,&Fae,&newLia, 0, 1, 1, 1);
 
111
    dpd_contract222(&LIA,&FAE,&newLIA, 0, 1, 1, 1);
 
112
    dpd_file2_close(&Fae);
 
113
    dpd_file2_close(&FAE);
 
114
 
 
115
    /* L1 RHS += -Lma*Fim */
 
116
    dpd_file2_init(&FMI,CC_OEI, 0, 0, 0, "FMI");
 
117
    dpd_file2_init(&Fmi,CC_OEI, 0, 2, 2, "Fmi");
 
118
    dpd_contract222(&Fmi,&Lia,&newLia, 0, 1, -1, 1);
 
119
    dpd_contract222(&FMI,&LIA,&newLIA, 0, 1, -1, 1);
 
120
    dpd_file2_close(&Fmi);
 
121
    dpd_file2_close(&FMI);
 
122
 
 
123
    dpd_file2_close(&LIA);
 
124
    dpd_file2_close(&Lia);
 
125
 
 
126
    dpd_file2_close(&newLIA);
 
127
    dpd_file2_close(&newLia);
 
128
  }
 
129
 
 
130
  if(params.ref == 0) { /** RHF **/
 
131
 
 
132
    dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
 
133
    dpd_file2_init(&LIA, CC_LAMBDA, L_irr, 0, 1, "LIA");
 
134
 
 
135
    /* L1 RHS += Lme*Wieam */
 
136
    dpd_buf4_init(&W, CC2_HET1, 0, 10, 10, 10, 10, 0, "CC2 2 W(ME,jb) + W(Me,Jb)");
 
137
    dpd_contract422(&W, &LIA, &newLIA, 0, 0, 1.0, 1.0);
 
138
    dpd_buf4_close(&W);
 
139
 
 
140
    dpd_file2_close(&LIA);
 
141
    dpd_file2_close(&newLIA);
 
142
  }
 
143
  else if(params.ref == 1) { /** ROHF **/
 
144
  }
 
145
  else if(params.ref == 2) { /** UHF **/
 
146
  
 
147
    dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
 
148
    dpd_file2_init(&newLia, CC_LAMBDA, L_irr, 2, 3, "New Lia");
 
149
 
 
150
    dpd_file2_init(&LIA, CC_LAMBDA, L_irr, 0, 1, "LIA");
 
151
    dpd_file2_init(&Lia, CC_LAMBDA, L_irr, 2, 3, "Lia");
 
152
 
 
153
    dpd_buf4_init(&WMBEJ, CC2_HET1, 0, 20, 21, 20, 21, 0, "CC2 WMBEJ (ME,BJ)");
 
154
    dpd_contract422(&WMBEJ, &LIA, &newLIA, 1, 0, 1, 1);
 
155
    dpd_buf4_close(&WMBEJ);
 
156
 
 
157
    dpd_buf4_init(&Wmbej, CC2_HET1, 0, 30, 31, 30, 31, 0, "CC2 Wmbej (me,bj)");
 
158
    dpd_contract422(&Wmbej, &Lia, &newLia, 1, 0, 1, 1);
 
159
    dpd_buf4_close(&Wmbej);
 
160
 
 
161
    dpd_buf4_init(&WMbEj, CC2_HET1, 0, 20, 31, 20, 31, 0, "CC2 WMbEj (ME,bj)");
 
162
    dpd_contract422(&WMbEj, &Lia, &newLIA, 1, 0, -1, 1);
 
163
    dpd_buf4_close(&WMbEj);
 
164
 
 
165
    dpd_buf4_init(&WmBeJ, CC2_HET1, 0, 30, 21, 30, 21, 0, "CC2 WmBeJ (me,BJ)");
 
166
    dpd_contract422(&WmBeJ, &LIA, &newLia, 1, 0, -1, 1);
 
167
    dpd_buf4_close(&WmBeJ);
 
168
 
 
169
    dpd_file2_close(&LIA);
 
170
    dpd_file2_close(&Lia);
 
171
 
 
172
    dpd_file2_close(&newLIA);
 
173
    dpd_file2_close(&newLia);
 
174
 
 
175
  }
 
176
 
 
177
  if(params.ref == 0) { /** RHF **/
 
178
 
 
179
    dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
 
180
 
 
181
    dpd_buf4_init(&L2, CC_LAMBDA, L_irr, 0, 5, 0, 5, 0, "2 LIjAb - LIjBa");
 
182
    dpd_buf4_sort(&L2, CC_TMP0, rspq, 5, 0, "Z (2 AbIj - AbjI)");
 
183
    dpd_buf4_close(&L2);
 
184
 
 
185
    /* L1 RHS += 1/2 Limef*Wefam */
 
186
    /* Out-of-core contract442 */
 
187
 
 
188
    dpd_buf4_init(&W, CC2_HET1, 0, 5, 11, 5, 11, 0, "CC2 WAbEi");
 
189
    dpd_buf4_init(&L2, CC_TMP0, L_irr, 5, 0, 5, 0, 0, "Z (2 AbIj - AbjI)");
 
190
 
 
191
    /* dpd_contract442(&L2, &W, &newLIA, 0, 0, 1, 1); */
 
192
 
 
193
    GW = W.file.my_irrep;
 
194
    GL2 = L2.file.my_irrep;
 
195
    GL1 = newLIA.my_irrep;
 
196
 
 
197
    dpd_file2_mat_init(&newLIA);
 
198
    dpd_file2_mat_rd(&newLIA);
 
199
 
 
200
    for(Gab=0; Gab < moinfo.nirreps; Gab++) {
 
201
 
 
202
      dpd_buf4_mat_irrep_row_init(&L2, Gab);
 
203
      dpd_buf4_mat_irrep_row_init(&W, Gab);
 
204
 
 
205
      for(ab=0; ab < L2.params->rowtot[Gab]; ab++) {
 
206
 
 
207
        dpd_buf4_mat_irrep_row_zero(&L2, Gab, ab);
 
208
        dpd_buf4_mat_irrep_row_rd(&L2, Gab, ab);
 
209
 
 
210
        dpd_buf4_mat_irrep_row_zero(&W, Gab, ab);
 
211
        dpd_buf4_mat_irrep_row_rd(&W, Gab, ab);
 
212
 
 
213
        for(Gi=0; Gi < moinfo.nirreps; Gi++) {
 
214
          Ga = Gi^GL1;
 
215
          Gm = GL2^Gab^Gi;
 
216
 
 
217
          nrows = L2.params->rpi[Gi];
 
218
          ncols = W.params->rpi[Ga];
 
219
          nlinks = L2.params->spi[Gm];
 
220
 
 
221
          if(nrows && ncols && nlinks) {
 
222
            C_DGEMM('n','t',nrows,ncols,nlinks,1.0,
 
223
                    &(L2.matrix[Gab][0][L2.col_offset[Gab][Gi]]),nlinks,
 
224
                    &(W.matrix[Gab][0][W.col_offset[Gab][Ga]]),nlinks,1.0,
 
225
                    &(newLIA.matrix[Gi][0][0]),ncols);
 
226
          }
 
227
        }
 
228
      }
 
229
      dpd_buf4_mat_irrep_row_close(&L2, Gab);
 
230
      dpd_buf4_mat_irrep_row_close(&W, Gab);
 
231
    }
 
232
    dpd_file2_mat_wrt(&newLIA);
 
233
    dpd_file2_mat_close(&newLIA);
 
234
 
 
235
    dpd_buf4_close(&L2);
 
236
    dpd_buf4_close(&W);
 
237
 
 
238
    dpd_file2_close(&newLIA);
 
239
  }
 
240
  else if(params.ref == 1) { /** ROHF **/
 
241
  }
 
242
  else if(params.ref == 2) { /** UHF **/
 
243
    dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
 
244
    dpd_file2_init(&newLia, CC_LAMBDA, L_irr, 2, 3, "New Lia");
 
245
 
 
246
    dpd_buf4_init(&W, CC2_HET1, 0, 21, 7, 21, 7, 0, "CC2 WABEI (EI,A>B)");
 
247
    dpd_buf4_init(&L2, CC_LAMBDA, L_irr, 0, 7, 2, 7, 0, "LIJAB");
 
248
    dpd_contract442(&L2, &W, &newLIA, 0, 0, 1, 1);
 
249
    dpd_buf4_close(&W);
 
250
    dpd_buf4_close(&L2);
 
251
 
 
252
    dpd_buf4_init(&W, CC2_HET1, 0, 26, 28, 26, 28, 0, "CC2 WAbEi (Ei,Ab)");
 
253
    dpd_buf4_init(&L2, CC_LAMBDA, L_irr, 22, 28, 22, 28, 0, "LIjAb");
 
254
    dpd_contract442(&L2, &W, &newLIA, 0, 0, 1, 1);
 
255
    dpd_buf4_close(&W);
 
256
    dpd_buf4_close(&L2);
 
257
 
 
258
    dpd_buf4_init(&W, CC2_HET1, 0, 31, 17, 31, 17, 0, "CC2 Wabei (ei,a>b)");
 
259
    dpd_buf4_init(&L2, CC_LAMBDA, L_irr, 10, 17, 12, 17, 0, "Lijab");
 
260
    dpd_contract442(&L2, &W, &newLia, 0, 0, 1, 1);
 
261
    dpd_buf4_close(&W);
 
262
    dpd_buf4_close(&L2);
 
263
 
 
264
    dpd_buf4_init(&W, CC2_HET1, 0, 25, 29, 25, 29, 0, "CC2 WaBeI (eI,aB)");
 
265
    dpd_buf4_init(&L2, CC_LAMBDA, L_irr, 23, 29, 23, 29, 0, "LiJaB");
 
266
    dpd_contract442(&L2, &W, &newLia, 0, 0, 1, 1);
 
267
    dpd_buf4_close(&W);
 
268
    dpd_buf4_close(&L2);
 
269
 
 
270
    dpd_file2_close(&newLIA);
 
271
    dpd_file2_close(&newLia);
 
272
  }
 
273
 
 
274
  if(params.ref == 0) { /** RHF **/
 
275
 
 
276
    dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
 
277
 
 
278
    /* L1 RHS += -1/2 Lmnae*Wiemn */
 
279
    dpd_buf4_init(&W, CC2_HET1, 0, 10, 0, 10, 0, 0, "CC2 WMbIj");
 
280
    dpd_buf4_init(&LIjAb, CC_LAMBDA, L_irr, 0, 5, 0, 5, 0, "2 LIjAb - LIjBa");
 
281
    dpd_contract442(&W, &LIjAb, &newLIA, 0, 2, -1, 1);
 
282
    dpd_buf4_close(&LIjAb);
 
283
    dpd_buf4_close(&W);
 
284
 
 
285
    dpd_file2_close(&newLIA);
 
286
  }
 
287
  else if(params.ref == 1) { /** ROHF **/
 
288
  }
 
289
  else if(params.ref == 2) { /** UHF **/
 
290
    dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
 
291
    dpd_file2_init(&newLia, CC_LAMBDA, L_irr, 2, 3, "New Lia");
 
292
 
 
293
    /* L1 RHS += -1/2 Lmnae*Wiemn */
 
294
    dpd_buf4_init(&WMBIJ, CC2_HET1, 0, 20, 2, 20, 2, 0, "CC2 WMBIJ (MB,I>J)");
 
295
    dpd_buf4_init(&LIJAB, CC_LAMBDA, L_irr, 2, 5, 2, 7, 0, "LIJAB");
 
296
    dpd_contract442(&WMBIJ, &LIJAB, &newLIA, 0, 2, -1, 1);
 
297
    dpd_buf4_close(&LIJAB);
 
298
    dpd_buf4_close(&WMBIJ);
 
299
 
 
300
    dpd_buf4_init(&WMbIj, CC2_HET1, 0, 24, 22, 24, 22, 0, "CC2 WMbIj (Mb,Ij)");
 
301
    dpd_buf4_init(&LIjAb, CC_LAMBDA, L_irr, 22, 28, 22, 28, 0, "LIjAb");
 
302
    dpd_contract442(&WMbIj, &LIjAb, &newLIA, 0, 2, -1, 1);
 
303
    dpd_buf4_close(&LIjAb);
 
304
    dpd_buf4_close(&WMbIj);
 
305
 
 
306
    dpd_buf4_init(&Wmbij, CC2_HET1, 0, 30, 12, 30, 12, 0, "CC2 Wmbij (mb,i>j)");
 
307
    dpd_buf4_init(&Lijab, CC_LAMBDA, L_irr, 12, 15, 12, 17, 0, "Lijab");
 
308
    dpd_contract442(&Wmbij, &Lijab, &newLia, 0, 2, -1, 1);
 
309
    dpd_buf4_close(&Lijab);
 
310
    dpd_buf4_close(&Wmbij);
 
311
 
 
312
    dpd_buf4_init(&WmBiJ, CC2_HET1, 0, 27, 23, 27, 23, 0, "CC2 WmBiJ (mB,iJ)");
 
313
    dpd_buf4_init(&LiJaB, CC_LAMBDA, L_irr, 23, 29, 23, 29, 0, "LiJaB");
 
314
    dpd_contract442(&WmBiJ, &LiJaB, &newLia, 0, 2, -1, 1);
 
315
    dpd_buf4_close(&LiJaB);
 
316
    dpd_buf4_close(&WmBiJ);
 
317
 
 
318
    dpd_file2_close(&newLIA);
 
319
    dpd_file2_close(&newLia);
 
320
  }
 
321
 
 
322
  if(params.ref == 0) { /** RHF **/
 
323
 
 
324
    dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
 
325
 
 
326
    /* L1 RHS += Gbj*<ij|ab> */
 
327
    dpd_file2_init(&G, CC_TMP0, L_irr, 1, 0, "CC2 GAI");
 
328
    dpd_buf4_init(&D, CC_DINTS, 0, 10, 10, 10, 10, 0, "D 2<ij|ab> - <ij|ba> (ia,jb)");
 
329
    dpd_contract422(&D, &G, &newLIA, 1, 0, 1, 1);
 
330
    dpd_buf4_close(&D);
 
331
    dpd_file2_close(&G);
 
332
 
 
333
    dpd_file2_close(&newLIA);
 
334
  }
 
335
  else if(params.ref == 1) { /** ROHF **/
 
336
  }
 
337
  else if(params.ref == 2) { /** UHF **/
 
338
    dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
 
339
    dpd_file2_init(&newLia, CC_LAMBDA, L_irr, 2, 3, "New Lia");
 
340
 
 
341
    dpd_file2_init(&GAI, CC_LAMBDA, L_irr, 1, 0, "CC2 GAI");
 
342
    dpd_file2_init(&Gai, CC_LAMBDA, L_irr, 3, 2, "CC2 Gai");
 
343
 
 
344
    /* L1 RHS += Gbj*<ij|ab> */
 
345
    /** AA **/
 
346
    dpd_buf4_init(&D, CC_DINTS, 0, 20, 20, 20, 20, 0, "D <IJ||AB> (IA,JB)");
 
347
    dpd_contract422(&D, &GAI, &newLIA, 1, 0, 1, 1);
 
348
    dpd_buf4_close(&D);
 
349
 
 
350
    dpd_buf4_init(&D, CC_DINTS, 0, 20, 30, 20, 30, 0, "D <Ij|Ab> (IA,jb)");
 
351
    dpd_contract422(&D, &Gai, &newLIA, 1, 0, 1, 1);
 
352
    dpd_buf4_close(&D);
 
353
 
 
354
    /** BB**/
 
355
    dpd_buf4_init(&D, CC_DINTS, 0, 30, 30, 30, 30, 0, "D <ij||ab> (ia,jb)");
 
356
    dpd_contract422(&D, &Gai, &newLia, 1, 0, 1, 1);
 
357
    dpd_buf4_close(&D);
 
358
 
 
359
    dpd_buf4_init(&D, CC_DINTS, 0, 30, 20, 30, 20, 0, "D <Ij|Ab> (ia,JB)");
 
360
    dpd_contract422(&D, &GAI, &newLia, 1, 0, 1, 1);
 
361
    dpd_buf4_close(&D);
 
362
 
 
363
    dpd_file2_close(&Gai);
 
364
    dpd_file2_close(&GAI);
 
365
 
 
366
    dpd_file2_close(&newLIA);
 
367
    dpd_file2_close(&newLia);
 
368
  }
 
369
 
 
370
  if(params.ref == 0) { /** RHF **/
 
371
    /* newLia * Dia */
 
372
    dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
 
373
    dpd_file2_copy(&newLIA, CC_LAMBDA, "New LIA Increment");
 
374
    dpd_file2_close(&newLIA);
 
375
 
 
376
    dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA Increment");
 
377
    if(params.local && local.filter_singles) local_filter_T1(&newLIA);
 
378
    else {
 
379
      dpd_file2_init(&dIA, CC_DENOM, L_irr, 0, 1, "dIA");
 
380
      dpd_file2_dirprd(&dIA, &newLIA);
 
381
      dpd_file2_close(&dIA);
 
382
    }
 
383
    dpd_file2_close(&newLIA);
 
384
 
 
385
    dpd_file2_init(&LIA, CC_LAMBDA, L_irr, 0, 1, "LIA");
 
386
    dpd_file2_copy(&LIA, CC_LAMBDA, "New LIA");
 
387
    dpd_file2_close(&LIA);
 
388
    dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
 
389
    dpd_file2_init(&LIA, CC_LAMBDA, L_irr, 0, 1, "New LIA Increment");
 
390
    dpd_file2_axpy(&LIA, &newLIA, 1, 0);
 
391
    /*dpd_file2_print(&newLIA,outfile);*/
 
392
    dpd_file2_close(&LIA);
 
393
 
 
394
    dpd_file2_copy(&newLIA, CC_LAMBDA, "New Lia");  /* spin-adaptation for RHF */
 
395
    dpd_file2_close(&newLIA);
 
396
  }
 
397
  else if(params.ref == 1) { /** ROHF **/
 
398
 
 
399
    /* newLia * Dia */
 
400
    dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
 
401
    dpd_file2_copy(&newLIA, CC_LAMBDA, "New LIA Increment");
 
402
    dpd_file2_close(&newLIA);
 
403
 
 
404
    dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA Increment");
 
405
    dpd_file2_init(&dIA, CC_DENOM, L_irr, 0, 1, "dIA");
 
406
    dpd_file2_dirprd(&dIA, &newLIA);
 
407
    dpd_file2_close(&dIA);
 
408
    dpd_file2_close(&newLIA);
 
409
 
 
410
    dpd_file2_init(&LIA, CC_LAMBDA, L_irr, 0, 1, "LIA");
 
411
    dpd_file2_copy(&LIA, CC_LAMBDA, "New LIA");
 
412
    dpd_file2_close(&LIA);
 
413
    dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
 
414
    dpd_file2_init(&LIA, CC_LAMBDA, L_irr, 0, 1, "New LIA Increment");
 
415
    dpd_file2_axpy(&LIA, &newLIA, 1, 0);
 
416
    dpd_file2_close(&LIA);
 
417
    dpd_file2_close(&newLIA);
 
418
 
 
419
    dpd_file2_init(&newLia, CC_LAMBDA, L_irr, 0, 1, "New Lia");
 
420
    dpd_file2_copy(&newLia, CC_LAMBDA, "New Lia Increment");
 
421
    dpd_file2_close(&newLia);
 
422
 
 
423
    dpd_file2_init(&newLia, CC_LAMBDA, L_irr, 0, 1, "New Lia Increment");
 
424
    dpd_file2_init(&dia, CC_DENOM, L_irr, 0, 1, "dia");
 
425
    dpd_file2_dirprd(&dia, &newLia);
 
426
    dpd_file2_close(&dia);
 
427
    dpd_file2_close(&newLia);
 
428
 
 
429
    dpd_file2_init(&Lia, CC_LAMBDA, L_irr, 0, 1, "Lia");
 
430
    dpd_file2_copy(&Lia, CC_LAMBDA, "New Lia");
 
431
    dpd_file2_close(&Lia);
 
432
    dpd_file2_init(&newLia, CC_LAMBDA, L_irr, 0, 1, "New Lia");
 
433
    dpd_file2_init(&Lia, CC_LAMBDA, L_irr, 0, 1, "New Lia Increment");
 
434
    dpd_file2_axpy(&Lia, &newLia, 1, 0);
 
435
    dpd_file2_close(&Lia);
 
436
    dpd_file2_close(&newLia);
 
437
  }
 
438
  else if(params.ref == 2) { /** UHF **/
 
439
 
 
440
    /* newLia * Dia */
 
441
    dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
 
442
    dpd_file2_init(&dIA, CC_DENOM, L_irr, 0, 1, "dIA");
 
443
    dpd_file2_dirprd(&dIA, &newLIA);
 
444
    dpd_file2_close(&dIA);
 
445
    dpd_file2_close(&newLIA);
 
446
 
 
447
    dpd_file2_init(&newLia, CC_LAMBDA, L_irr, 2, 3, "New Lia");
 
448
    dpd_file2_init(&dia, CC_DENOM, L_irr, 2, 3, "dia");
 
449
    dpd_file2_dirprd(&dia, &newLia);
 
450
    dpd_file2_close(&dia);
 
451
    dpd_file2_close(&newLia);
 
452
  }
 
453
 
 
454
#ifdef EOM_DEBUG
 
455
  check_sum("after L1 build",L_irr);
 
456
#endif
 
457
 
 
458
  return;
 
459
}
 
460
 
 
461
 
 
462
}} // namespace psi::cclambda