~ubuntu-branches/ubuntu/vivid/psicode/vivid

« back to all changes in this revision

Viewing changes to src/bin/cclambda/L1.c

  • Committer: Bazaar Package Importer
  • Author(s): Michael Banck
  • Date: 2008-06-07 16:49:57 UTC
  • mfrom: (2.1.2 hardy)
  • Revision ID: james.westby@ubuntu.com-20080607164957-8pifvb133yjlkagn
Tags: 3.3.0-3
* debian/rules (DEB_MAKE_CHECK_TARGET): Do not abort test suite on
  failures.
* debian/rules (DEB_CONFIGURE_EXTRA_FLAGS): Set ${bindir} to /usr/lib/psi.
* debian/rules (install/psi3): Move psi3 file to /usr/bin.
* debian/patches/07_464867_move_executables.dpatch: New patch, add
  /usr/lib/psi to the $PATH, so that the moved executables are found.
  (closes: #464867)
* debian/patches/00list: Adjusted.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
#include <stdio.h>
 
2
#include <stdlib.h>
 
3
#include <string.h>
2
4
#include <libdpd/dpd.h>
 
5
#include <libqt/qt.h>
3
6
#define EXTERN
4
7
#include "globals.h"
5
8
 
6
 
void L1_build(int L_irr, int root_L_irr) {
 
9
void local_filter_T1(dpdfile2 *);
 
10
 
 
11
void L1_build(struct L_Params L_params) {
7
12
  dpdfile2 newLIA, newLia, LIA, Lia;
8
13
  dpdfile2 dIA, dia, Fme, FME;
9
14
  dpdfile2 LFaet2, LFAEt2, LFmit2, LFMIt2;
10
 
  dpdfile2 GMI, Gmi, Gae;
 
15
  dpdfile2 GMI, Gmi, Gae, XIA, Xia;
11
16
  dpdfile2 GAE;
12
17
  dpdbuf4 WMBEJ, Wmbej, WMbEj, WmBeJ;
13
18
  dpdbuf4 WMBIJ, Wmbij, WMbIj, WmBiJ;
14
19
  dpdbuf4 LIJAB, Lijab, LIjAb, LiJaB, L2;
15
20
  dpdbuf4 WMNIE, Wmnie, WMnIe, WmNiE;
16
21
  dpdbuf4 WAMEF, Wamef, WAmEf, WaMeF, W;
 
22
  dpdbuf4 Z, D;
 
23
  dpdfile2 XLD;
 
24
  int Gim, Gi, Gm, Ga, Gam, nrows, ncols, A, a, am;
 
25
  int Gei, ei, e, i, Gef, Ge, Gf, E, I, af, fa, f;
 
26
  double *X;
 
27
  int L_irr;
 
28
  L_irr = L_params.irrep;
17
29
 
18
 
  /* ground state homogeneous term is Fme */
19
 
  if (params.ground) {
20
 
    if(params.ref == 0 || params.ref == 1) {
 
30
  /* ground state inhomogeneous term is Fme */
 
31
  if (L_params.ground) {
 
32
    if(params.ref == 0) {
 
33
      dpd_file2_init(&FME,CC_OEI, 0, 0, 1, "FME");
 
34
      dpd_file2_copy(&FME, CC_LAMBDA, "New LIA");
 
35
      dpd_file2_close(&FME);
 
36
    }
 
37
    else if(params.ref == 1) {
21
38
      dpd_file2_init(&Fme,CC_OEI, 0, 0, 1, "Fme");
22
39
      dpd_file2_init(&FME,CC_OEI, 0, 0, 1, "FME");
23
 
      dpd_file2_copy(&Fme, CC_OEI, "New Lia");
24
 
      dpd_file2_copy(&FME, CC_OEI, "New LIA");
 
40
      dpd_file2_copy(&Fme, CC_LAMBDA, "New Lia");
 
41
      dpd_file2_copy(&FME, CC_LAMBDA, "New LIA");
25
42
      dpd_file2_close(&Fme);
26
43
      dpd_file2_close(&FME);
27
44
    }
28
45
    else if(params.ref == 2) {
29
46
      dpd_file2_init(&Fme,CC_OEI, 0, 2, 3, "Fme");
30
47
      dpd_file2_init(&FME,CC_OEI, 0, 0, 1, "FME");
31
 
      dpd_file2_copy(&Fme, CC_OEI, "New Lia");
32
 
      dpd_file2_copy(&FME, CC_OEI, "New LIA");
 
48
      dpd_file2_copy(&Fme, CC_LAMBDA, "New Lia");
 
49
      dpd_file2_copy(&FME, CC_LAMBDA, "New LIA");
33
50
      dpd_file2_close(&Fme);
34
51
      dpd_file2_close(&FME);
35
52
    }
36
53
  }
37
 
  /* excited state - no homogenous term, first term is E*L */
38
 
  else {
39
 
    dpd_file2_init(&LIA, CC_OEI, L_irr, 0, 1, "LIA");
40
 
    dpd_file2_init(&newLIA, CC_OEI, L_irr, 0, 1, "New LIA");
 
54
  /* excited state - no inhomogenous term, first term is -energy*L*/
 
55
  else if (!params.zeta) {
41
56
    if (params.ref == 0 || params.ref == 1) {
42
 
      dpd_file2_init(&Lia, CC_OEI, L_irr, 0, 1, "Lia");
43
 
      dpd_file2_init(&newLia, CC_OEI, L_irr, 0, 1, "New Lia");
 
57
      dpd_file2_init(&LIA, CC_LAMBDA, L_irr, 0, 1, "LIA");
 
58
      dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
 
59
      dpd_file2_init(&Lia, CC_LAMBDA, L_irr, 0, 1, "Lia");
 
60
      dpd_file2_init(&newLia, CC_LAMBDA, L_irr, 0, 1, "New Lia");
 
61
      dpd_file2_axpy(&LIA, &newLIA, -1.0 * L_params.cceom_energy,0.0);
 
62
      dpd_file2_axpy(&Lia, &newLia, -1.0 * L_params.cceom_energy,0.0);
 
63
      dpd_file2_close(&LIA);
 
64
      dpd_file2_close(&newLIA);
 
65
      dpd_file2_close(&Lia);
 
66
      dpd_file2_close(&newLia);
44
67
    }
45
68
    else if (params.ref == 2) {
46
 
      dpd_file2_init(&Lia, CC_OEI, L_irr, 2, 3, "Lia");
47
 
      dpd_file2_init(&newLia, CC_OEI, L_irr, 2, 3, "New Lia");
48
 
    }
49
 
    dpd_file2_axpy(&LIA, &newLIA, -1.0 * params.cceom_energy[L_irr][root_L_irr],0.0);
50
 
    dpd_file2_axpy(&Lia, &newLia, -1.0 * params.cceom_energy[L_irr][root_L_irr],0.0);
51
 
    dpd_file2_close(&LIA);
52
 
    dpd_file2_close(&newLIA);
53
 
    dpd_file2_close(&Lia);
54
 
    dpd_file2_close(&newLia);
 
69
      /* do nothing - TDC did not change to increments for the UHF case */
 
70
    }
 
71
  }
 
72
  /* solving zeta equations; inhomogeneous term is Xi */
 
73
  else {
 
74
    if (params.ref == 0) {
 
75
      dpd_file2_init(&XIA, EOM_XI, 0, 0, 1, "XIA");
 
76
      dpd_file2_copy(&XIA, CC_LAMBDA, "New LIA");
 
77
      dpd_file2_close(&XIA);
 
78
    }
 
79
    else if (params.ref == 1) {
 
80
      dpd_file2_init(&XIA, EOM_XI, 0, 0, 1, "XIA");
 
81
      dpd_file2_init(&Xia, EOM_XI, 0, 0, 1, "Xia");
 
82
      dpd_file2_copy(&XIA, CC_LAMBDA, "New LIA");
 
83
      dpd_file2_copy(&Xia, CC_LAMBDA, "New Lia");
 
84
      dpd_file2_close(&XIA);
 
85
      dpd_file2_close(&Xia);
 
86
    }
 
87
    else if(params.ref == 2) {
 
88
      dpd_file2_init(&XIA, EOM_XI, 0, 0, 1, "XIA");
 
89
      dpd_file2_init(&Xia, EOM_XI, 0, 2, 3, "Xia");
 
90
      dpd_file2_copy(&XIA, CC_LAMBDA, "New LIA");
 
91
      dpd_file2_copy(&Xia, CC_LAMBDA, "New Lia");
 
92
      dpd_file2_close(&XIA);
 
93
      dpd_file2_close(&Xia);
 
94
    }
55
95
  }
56
96
 
57
97
  if(params.ref == 0 || params.ref == 1) {
58
 
    dpd_file2_init(&newLIA, CC_OEI, L_irr, 0, 1, "New LIA");
59
 
    dpd_file2_init(&newLia, CC_OEI, L_irr, 0, 1, "New Lia");
 
98
    dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
 
99
    dpd_file2_init(&newLia, CC_LAMBDA, L_irr, 0, 1, "New Lia");
60
100
  }
61
101
  else if(params.ref == 2) {
62
 
    dpd_file2_init(&newLIA, CC_OEI, L_irr, 0, 1, "New LIA");
63
 
    dpd_file2_init(&newLia, CC_OEI, L_irr, 2, 3, "New Lia");
64
 
  }
65
 
 
66
 
  /* L0=0 for excited states, so no inhomogeneous Fia and Wijab terms */
67
 
  /* make sure these are not nonzero from last iteration */
68
 
  /*
69
 
  if (!params.ground) {
70
 
    dpd_file2_scm(&newLIA, 0.0);
71
 
    dpd_file2_scm(&newLia, 0.0);
72
 
  }
73
 
  */
74
 
 
75
 
  if(params.ref == 0 || params.ref == 1) { /** RHF/ROHF **/
76
 
 
77
 
    /* L1 RHS += Lie*Fea */
78
 
    dpd_file2_init(&LIA, CC_OEI, L_irr, 0, 1, "LIA");
79
 
    dpd_file2_init(&Lia, CC_OEI, L_irr, 0, 1, "Lia");
 
102
    dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
 
103
    dpd_file2_init(&newLia, CC_LAMBDA, L_irr, 2, 3, "New Lia");
 
104
  }
 
105
 
 
106
  if(params.ref == 0) { /** RHF **/
 
107
    dpd_file2_init(&LIA, CC_LAMBDA, L_irr, 0, 1, "LIA");
 
108
 
 
109
    /* L1 RHS += Lie*Fea */
 
110
    dpd_file2_init(&LFAEt2, CC_OEI, 0, 1, 1, "FAE");
 
111
    dpd_contract222(&LIA,&LFAEt2,&newLIA, 0, 1, 1.0, 1.0);
 
112
    dpd_file2_close(&LFAEt2);
 
113
 
 
114
    /* L1 RHS += -Lma*Fim */
 
115
    dpd_file2_init(&LFMIt2,CC_OEI, 0, 0, 0, "FMI");
 
116
    dpd_contract222(&LFMIt2,&LIA,&newLIA, 0, 1, -1.0, 1.0);
 
117
    dpd_file2_close(&LFMIt2);
 
118
 
 
119
    /* L1 RHS += Lme*Wieam */
 
120
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 10, 10, 10, 0, "2 W(ME,jb) + W(Me,Jb)");
 
121
    dpd_contract422(&W, &LIA, &newLIA, 0, 0, 1.0, 1.0);
 
122
    dpd_buf4_close(&W);
 
123
 
 
124
    dpd_file2_close(&LIA);
 
125
  }
 
126
  else if(params.ref == 1) { /** ROHF **/
 
127
 
 
128
    /* L1 RHS += Lie*Fea */
 
129
    dpd_file2_init(&LIA, CC_LAMBDA, L_irr, 0, 1, "LIA");
 
130
    dpd_file2_init(&Lia, CC_LAMBDA, L_irr, 0, 1, "Lia");
80
131
 
81
132
    dpd_file2_init(&LFAEt2, CC_OEI, 0, 1, 1, "FAE");
82
133
    dpd_file2_init(&LFaet2, CC_OEI, 0, 1, 1, "Fae");
116
167
  else if(params.ref == 2) { /** UHF **/
117
168
 
118
169
    /* L1 RHS += Lie*Fea */
119
 
    dpd_file2_init(&LIA, CC_OEI, L_irr, 0, 1, "LIA");
120
 
    dpd_file2_init(&Lia, CC_OEI, L_irr, 2, 3, "Lia");
 
170
    dpd_file2_init(&LIA, CC_LAMBDA, L_irr, 0, 1, "LIA");
 
171
    dpd_file2_init(&Lia, CC_LAMBDA, L_irr, 2, 3, "Lia");
121
172
 
122
173
    dpd_file2_init(&LFAEt2, CC_OEI, 0, 1, 1, "FAEt");
123
174
    dpd_file2_init(&LFaet2, CC_OEI, 0, 3, 3, "Faet");
156
207
  }
157
208
 
158
209
  /* L1 RHS += 1/2 Limef*Wefam */
159
 
  if(params.ref == 0 || params.ref == 1) {
 
210
  /* L(i,a) += [ 2 L(im,ef) - L(im,fe) ] * W(am,ef) */
 
211
  /* Note: W(am,ef) is really Wabei (ei,ab) */
 
212
  if(params.ref == 0) { /** RHF **/
 
213
 
 
214
    dpd_buf4_init(&W, CC_HBAR, 0, 11, 5, 11, 5, 0, "WAbEi (Ei,Ab)");
 
215
    dpd_buf4_init(&L2, CC_LAMBDA, L_irr, 0, 5, 0, 5, 0, "2 LIjAb - LIjBa");
 
216
    /*    dpd_contract442(&L2, &W, &newLIA, 0, 0, 1.0, 1.0); */
 
217
    dpd_file2_mat_init(&newLIA);
 
218
    dpd_file2_mat_rd(&newLIA);
 
219
    for(Gam=0; Gam < moinfo.nirreps; Gam++) {
 
220
      Gef = Gam; /* W is totally symmetric */
 
221
      Gim = Gef ^ L_irr; 
 
222
      dpd_buf4_mat_irrep_init(&L2, Gim);
 
223
      dpd_buf4_mat_irrep_rd(&L2, Gim);
 
224
      dpd_buf4_mat_irrep_shift13(&L2, Gim);
 
225
 
 
226
      for(Gi=0; Gi < moinfo.nirreps; Gi++) {
 
227
        Ga = Gi ^ L_irr;
 
228
        Gm = Ga ^ Gam;
 
229
        W.matrix[Gam] = dpd_block_matrix(moinfo.occpi[Gm],W.params->coltot[Gam]);
 
230
 
 
231
        nrows = moinfo.occpi[Gi];
 
232
        ncols = moinfo.occpi[Gm] * W.params->coltot[Gam];
 
233
 
 
234
        for(A=0; A < moinfo.virtpi[Ga]; A++) {
 
235
          a = moinfo.vir_off[Ga] + A;
 
236
          am = W.row_offset[Gam][a];
 
237
 
 
238
          dpd_buf4_mat_irrep_rd_block(&W, Gam, am, moinfo.occpi[Gm]);
 
239
 
 
240
          if(nrows && ncols && moinfo.virtpi[Ga]) 
 
241
            C_DGEMV('n',nrows,ncols,1,L2.shift.matrix[Gim][Gi][0],ncols,W.matrix[Gam][0],1,
 
242
                    1, &(newLIA.matrix[Gi][0][A]), moinfo.virtpi[Ga]);
 
243
 
 
244
        }
 
245
 
 
246
        dpd_free_block(W.matrix[Gam], moinfo.occpi[Gm], W.params->coltot[Gam]);
 
247
      }
 
248
      dpd_buf4_mat_irrep_close(&L2, Gim);
 
249
    }
 
250
    dpd_file2_mat_wrt(&newLIA);
 
251
    dpd_file2_mat_close(&newLIA);
 
252
    dpd_buf4_close(&L2);
 
253
    dpd_buf4_close(&W);
 
254
 
 
255
  }
 
256
  else if(params.ref == 1) { /** ROHF **/
160
257
 
161
258
    dpd_buf4_init(&W, CC_HBAR, 0, 11, 7, 11, 7, 0, "WEIAB");
162
259
    dpd_buf4_init(&L2, CC_LAMBDA, L_irr, 0, 7, 2, 7, 0, "LIJAB");
207
304
  }
208
305
 
209
306
  /* L1 RHS += -1/2 Lmnae*Wiemn */
210
 
  if(params.ref == 0 || params.ref == 1) {
 
307
  if(params.ref == 0) {
 
308
    dpd_buf4_init(&WMbIj, CC_HBAR, 0, 10, 0, 10, 0, 0, "WMbIj");
 
309
    dpd_buf4_init(&LIjAb, CC_LAMBDA, L_irr, 0, 5, 0, 5, 0, "2 LIjAb - LIjBa");
 
310
    dpd_contract442(&WMbIj, &LIjAb, &newLIA, 0, 2, -1.0, 1.0);
 
311
    dpd_buf4_close(&LIjAb);
 
312
    dpd_buf4_close(&WMbIj);
 
313
  }
 
314
  else if(params.ref == 1) {
211
315
 
212
316
    dpd_buf4_init(&WMBIJ, CC_HBAR, 0, 10, 2, 10, 2, 0, "WMBIJ");
213
317
    dpd_buf4_init(&LIJAB, CC_LAMBDA, L_irr, 2, 5, 2, 7, 0, "LIJAB");
262
366
 
263
367
 
264
368
  /* L1 RHS += -Gef*Weifa */
265
 
  if(params.ref == 0 || params.ref == 1) {
266
 
 
267
 
    dpd_file2_init(&GAE, CC_OEI, L_irr, 1, 1, "GAE");
268
 
    dpd_file2_init(&Gae, CC_OEI, L_irr, 1, 1, "Gae");
269
 
 
270
 
    dpd_buf4_init(&WAMEF, CC_HBAR, 0, 10, 5, 10, 7, 0, "WAMEF");
271
 
    dpd_dot23(&GAE,&WAMEF,&newLIA, 0, 0, -1.0, 1.0);
 
369
  if(params.ref == 0) {
 
370
 
 
371
/*     dpd_file2_init(&GAE, CC_LAMBDA, L_irr, 1, 1, "GAE"); */
 
372
/*     dpd_buf4_init(&WaMeF, CC_HBAR, 0, 11, 5, 11, 5, 0, "WAmEf 2(Am,Ef) - (Am,fE)"); */
 
373
/*     dpd_dot13(&GAE,&WaMeF,&newLIA, 0, 0, -1.0, 1.0); */
 
374
/*     dpd_buf4_close(&WaMeF); */
 
375
/*     dpd_file2_close(&GAE); */
 
376
 
 
377
    /* Above code replaced to remove disk-space and memory bottlenecks 7/26/05, -TDC */
 
378
    dpd_file2_init(&GAE, CC_LAMBDA, L_irr, 1, 1, "GAE");
 
379
    dpd_file2_mat_init(&GAE);
 
380
    dpd_file2_mat_rd(&GAE);
 
381
    dpd_file2_mat_init(&newLIA);
 
382
    dpd_file2_mat_rd(&newLIA);
 
383
    dpd_buf4_init(&W, CC_HBAR, 0, 11, 5, 11, 5, 0, "WAmEf");
 
384
    for(Gei=0; Gei < moinfo.nirreps; Gei++) {
 
385
      dpd_buf4_mat_irrep_row_init(&W, Gei);
 
386
      X = init_array(W.params->coltot[Gei]);
 
387
      for(ei=0; ei < W.params->rowtot[Gei]; ei++) {
 
388
        dpd_buf4_mat_irrep_row_rd(&W, Gei, ei);
 
389
        e = W.params->roworb[Gei][ei][0];
 
390
        i = W.params->roworb[Gei][ei][1];
 
391
        Ge = W.params->psym[e];
 
392
        Gf = Ge ^ L_irr;
 
393
        Gi = Ge ^ Gei;
 
394
        Ga = Gi ^ L_irr;
 
395
        E = e - moinfo.vir_off[Ge];
 
396
        I = i - moinfo.occ_off[Gi];
 
397
 
 
398
        zero_arr(X,W.params->coltot[Gei]);
 
399
 
 
400
        for(fa=0; fa < W.params->coltot[Gei]; fa++) {
 
401
          f = W.params->colorb[Gei][fa][0];
 
402
          a = W.params->colorb[Gei][fa][1];
 
403
          af = W.params->colidx[a][f];
 
404
          X[fa] = 2.0 * W.matrix[Gei][0][fa] - W.matrix[Gei][0][af];
 
405
        }
 
406
 
 
407
        nrows = moinfo.virtpi[Gf];
 
408
        ncols = moinfo.virtpi[Ga];
 
409
        if(nrows && ncols)
 
410
          C_DGEMV('t',nrows,ncols,-1,&X[W.col_offset[Gei][Gf]],ncols,
 
411
                  GAE.matrix[Ge][E],1,1,newLIA.matrix[Gi][I],1);
 
412
 
 
413
      }
 
414
      dpd_buf4_mat_irrep_row_close(&W, Gei);
 
415
      free(X);
 
416
    }
 
417
    dpd_buf4_close(&W);
 
418
    dpd_file2_mat_wrt(&newLIA);
 
419
    dpd_file2_mat_close(&newLIA);
 
420
    dpd_file2_mat_close(&GAE);
 
421
    dpd_file2_close(&GAE);
 
422
  }
 
423
  else if(params.ref == 1) {
 
424
 
 
425
    dpd_file2_init(&GAE, CC_LAMBDA, L_irr, 1, 1, "GAE");
 
426
    dpd_file2_init(&Gae, CC_LAMBDA, L_irr, 1, 1, "Gae");
 
427
 
 
428
    dpd_buf4_init(&WAMEF, CC_HBAR, 0, 11, 5, 11, 7, 0, "WAMEF");
 
429
    dpd_dot13(&GAE,&WAMEF,&newLIA, 0, 0, -1.0, 1.0);
272
430
    dpd_buf4_close(&WAMEF);
273
431
 
274
 
    dpd_buf4_init(&WaMeF, CC_HBAR, 0, 10, 5, 10, 5, 0, "WaMeF");
275
 
    dpd_dot23(&Gae,&WaMeF,&newLIA, 0, 0, -1.0, 1.0);
 
432
    dpd_buf4_init(&WaMeF, CC_HBAR, 0, 11, 5, 11, 5, 0, "WaMeF");
 
433
    dpd_dot13(&Gae,&WaMeF,&newLIA, 0, 0, -1.0, 1.0);
276
434
    dpd_buf4_close(&WaMeF);
277
435
 
278
 
    dpd_buf4_init(&Wamef, CC_HBAR, 0, 10, 5, 10, 7, 0, "Wamef");
279
 
    dpd_dot23(&Gae,&Wamef,&newLia, 0, 0, -1.0, 1.0);
 
436
    dpd_buf4_init(&Wamef, CC_HBAR, 0, 11, 5, 11, 7, 0, "Wamef");
 
437
    dpd_dot13(&Gae,&Wamef,&newLia, 0, 0, -1.0, 1.0);
280
438
    dpd_buf4_close(&Wamef);
281
439
 
282
 
    dpd_buf4_init(&WAmEf, CC_HBAR, 0, 10, 5, 10, 5, 0, "WAmEf");
283
 
    dpd_dot23(&GAE,&WAmEf,&newLia, 0, 0, -1.0, 1.0);
 
440
    dpd_buf4_init(&WAmEf, CC_HBAR, 0, 11, 5, 11, 5, 0, "WAmEf");
 
441
    dpd_dot13(&GAE,&WAmEf,&newLia, 0, 0, -1.0, 1.0);
284
442
    dpd_buf4_close(&WAmEf);
285
443
 
 
444
    /*
 
445
      dpd_buf4_init(&WAMEF, CC_HBAR, 0, 10, 5, 10, 7, 0, "WAMEF");
 
446
      dpd_dot23(&GAE,&WAMEF,&newLIA, 0, 0, -1.0, 1.0);
 
447
      dpd_buf4_close(&WAMEF);
 
448
      dpd_buf4_init(&WaMeF, CC_HBAR, 0, 10, 5, 10, 5, 0, "WaMeF");
 
449
      dpd_dot23(&Gae,&WaMeF,&newLIA, 0, 0, -1.0, 1.0);
 
450
      dpd_buf4_close(&WaMeF);
 
451
      dpd_buf4_init(&Wamef, CC_HBAR, 0, 10, 5, 10, 7, 0, "Wamef");
 
452
      dpd_dot23(&Gae,&Wamef,&newLia, 0, 0, -1.0, 1.0);
 
453
      dpd_buf4_close(&Wamef);
 
454
      dpd_buf4_init(&WAmEf, CC_HBAR, 0, 10, 5, 10, 5, 0, "WAmEf");
 
455
      dpd_dot23(&GAE,&WAmEf,&newLia, 0, 0, -1.0, 1.0);
 
456
      dpd_buf4_close(&WAmEf);
 
457
    */
 
458
 
286
459
    dpd_file2_close(&Gae);
287
460
    dpd_file2_close(&GAE);
288
461
  }
289
462
  else if(params.ref == 2) {
290
463
 
291
 
    dpd_file2_init(&GAE, CC_OEI, L_irr, 1, 1, "GAE");
292
 
    dpd_file2_init(&Gae, CC_OEI, L_irr, 3, 3, "Gae");
 
464
    dpd_file2_init(&GAE, CC_LAMBDA, L_irr, 1, 1, "GAE");
 
465
    dpd_file2_init(&Gae, CC_LAMBDA, L_irr, 3, 3, "Gae");
293
466
 
294
467
    dpd_buf4_init(&W, CC_HBAR, 0, 21, 5, 21, 7, 0, "WAMEF");
295
468
    dpd_dot13(&GAE,&W,&newLIA, 0, 0, -1, 1);
313
486
  }
314
487
 
315
488
  /* L1 RHS += -Gmn*Wmina */
316
 
  if(params.ref == 0 || params.ref == 1) {
317
 
 
318
 
    dpd_file2_init(&GMI, CC_OEI, L_irr, 0, 0, "GMI");
319
 
    dpd_file2_init(&Gmi, CC_OEI, L_irr, 0, 0, "Gmi");
320
 
 
321
 
    dpd_buf4_init(&WMNIE, CC_HBAR, 0, 0, 11, 2, 11, 0, "WMNIE");
 
489
  if(params.ref == 0) {
 
490
    dpd_file2_init(&GMI, CC_LAMBDA, L_irr, 0, 0, "GMI");
 
491
 
 
492
    dpd_buf4_init(&WmNiE, CC_HBAR, 0, 0, 11, 0, 11, 0, "2WMnIe - WnMIe (Mn,eI)");
 
493
    dpd_dot14(&GMI, &WmNiE, &newLIA, 0, 0, -1.0, 1.0);
 
494
    dpd_buf4_close(&WmNiE);
 
495
 
 
496
    dpd_file2_close(&GMI);
 
497
  }
 
498
  else if(params.ref == 1) {
 
499
 
 
500
    dpd_file2_init(&GMI, CC_LAMBDA, L_irr, 0, 0, "GMI");
 
501
    dpd_file2_init(&Gmi, CC_LAMBDA, L_irr, 0, 0, "Gmi");
 
502
 
 
503
    dpd_buf4_init(&WMNIE, CC_HBAR, 0, 0, 11, 2, 11, 0, "WMNIE (M>N,EI)");
322
504
    dpd_dot14(&GMI, &WMNIE, &newLIA, 0, 0, -1.0, 1.0); 
323
505
    dpd_buf4_close(&WMNIE);
324
506
 
325
 
    dpd_buf4_init(&WmNiE, CC_HBAR, 0, 0, 11, 0, 11, 0, "WmNiE");
 
507
    dpd_buf4_init(&WmNiE, CC_HBAR, 0, 0, 11, 0, 11, 0, "WmNiE (mN,Ei)");
326
508
    dpd_dot14(&Gmi, &WmNiE, &newLIA, 0, 0, -1.0, 1.0);
327
509
    dpd_buf4_close(&WmNiE);
328
510
 
329
 
    dpd_buf4_init(&Wmnie, CC_HBAR, 0, 0, 11, 2, 11, 0, "Wmnie");
 
511
    dpd_buf4_init(&Wmnie, CC_HBAR, 0, 0, 11, 2, 11, 0, "Wmnie (m>n,ei)");
330
512
    dpd_dot14(&Gmi, &Wmnie, &newLia, 0, 0, -1.0, 1.0);
331
513
    dpd_buf4_close(&Wmnie);
332
514
 
333
 
    dpd_buf4_init(&WMnIe, CC_HBAR, 0, 0, 11, 0, 11, 0, "WMnIe");
 
515
    dpd_buf4_init(&WMnIe, CC_HBAR, 0, 0, 11, 0, 11, 0, "WMnIe (Mn,eI)");
334
516
    dpd_dot14(&GMI, &WMnIe, &newLia, 0, 0, -1.0, 1.0);
335
517
    dpd_buf4_close(&WMnIe);
336
518
 
340
522
  }
341
523
  else if(params.ref == 2) {
342
524
 
343
 
    dpd_file2_init(&GMI, CC_OEI, L_irr, 0, 0, "GMI");
344
 
    dpd_file2_init(&Gmi, CC_OEI, L_irr, 2, 2, "Gmi");
 
525
    dpd_file2_init(&GMI, CC_LAMBDA, L_irr, 0, 0, "GMI");
 
526
    dpd_file2_init(&Gmi, CC_LAMBDA, L_irr, 2, 2, "Gmi");
345
527
 
346
 
    dpd_buf4_init(&W, CC_HBAR, 0, 0, 21, 2, 21, 0, "WMNIE");
 
528
    dpd_buf4_init(&W, CC_HBAR, 0, 0, 21, 2, 21, 0, "WMNIE (M>N,EI)");
347
529
    dpd_dot14(&GMI, &W, &newLIA, 0, 0, -1, 1); 
348
530
    dpd_buf4_close(&W);
349
531
 
350
 
    dpd_buf4_init(&W, CC_HBAR, 0, 23, 26, 23, 26, 0, "WmNiE");
 
532
    dpd_buf4_init(&W, CC_HBAR, 0, 23, 26, 23, 26, 0, "WmNiE (mN,Ei)");
351
533
    dpd_dot14(&Gmi, &W, &newLIA, 0, 0, -1, 1);
352
534
    dpd_buf4_close(&W);
353
535
 
354
 
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 31, 12, 31, 0, "Wmnie");
 
536
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 31, 12, 31, 0, "Wmnie (m>n,ei)");
355
537
    dpd_dot14(&Gmi, &W, &newLia, 0, 0, -1, 1);
356
538
    dpd_buf4_close(&W);
357
539
 
358
 
    dpd_buf4_init(&W, CC_HBAR, 0, 22, 25, 22, 25, 0, "WMnIe");
 
540
    dpd_buf4_init(&W, CC_HBAR, 0, 22, 25, 22, 25, 0, "WMnIe (Mn,eI)");
359
541
    dpd_dot14(&GMI, &W, &newLia, 0, 0, -1, 1);
360
542
    dpd_buf4_close(&W);
361
543
 
363
545
    dpd_file2_close(&GMI);
364
546
  }
365
547
 
 
548
  /* CC3 T3->L1 */
 
549
  if(!strcmp(params.wfn, "CC3")) {
 
550
    if(params.ref == 0) { 
 
551
 
 
552
      dpd_file2_init(&XLD, CC3_MISC, 0, 0, 1, "CC3 XLD");
 
553
      dpd_buf4_init(&D, CC_DINTS, 0, 0, 5, 0, 5, 0, "D 2<ij|ab> - <ij|ba>");
 
554
      dpd_dot24(&XLD, &D, &newLIA, 0, 0, 1, 1);
 
555
      dpd_buf4_close(&D);
 
556
      dpd_file2_close(&XLD);
 
557
 
 
558
      dpd_buf4_init(&L2, CC_LAMBDA, L_irr, 0, 5, 2, 7, 0, "LIJAB");
 
559
      dpd_buf4_init(&Z, CC3_MISC, 0, 10, 0, 10, 0, 0, "CC3 ZIFLN");
 
560
      dpd_contract442(&Z, &L2, &newLIA, 0, 2, -0.5, 1);
 
561
      dpd_buf4_close(&Z);
 
562
      dpd_buf4_close(&L2);
 
563
 
 
564
      dpd_buf4_init(&L2, CC_LAMBDA, L_irr, 0, 5, 0, 5, 0, "LIjAb");
 
565
      dpd_buf4_init(&Z, CC3_MISC, 0, 10, 0, 10, 0, 0, "CC3 ZIfLn");
 
566
      dpd_contract442(&Z, &L2, &newLIA, 0, 2, -1, 1);
 
567
      dpd_buf4_close(&Z);
 
568
      dpd_buf4_close(&L2);
 
569
 
 
570
      dpd_buf4_init(&L2, CC_LAMBDA, L_irr, 0, 5, 2, 7, 0, "LIJAB");
 
571
      dpd_buf4_init(&Z, CC3_MISC, 0, 11, 5, 11, 5, 0, "CC3 ZDFAN (AN,DF)");
 
572
      dpd_contract442(&L2, &Z, &newLIA, 0, 0, 0.5, 1);
 
573
      dpd_buf4_close(&Z);
 
574
      dpd_buf4_close(&L2);
 
575
 
 
576
      dpd_buf4_init(&L2, CC_LAMBDA, L_irr, 0, 5, 0, 5, 0, "LIjAb");
 
577
      dpd_buf4_init(&Z, CC3_MISC, 0, 11, 5, 11, 5, 0, "CC3 ZDfAn (An,Df)");
 
578
      dpd_contract442(&L2, &Z, &newLIA, 0, 0, 1.0, 1);
 
579
      dpd_buf4_close(&Z);
 
580
      dpd_buf4_close(&L2);
 
581
    }
 
582
  }
 
583
 
366
584
  dpd_file2_close(&newLIA);
367
585
  dpd_file2_close(&newLia);
368
586
 
369
587
  /* newLia * Dia */
370
588
  if(params.ref == 0) { /** RHF **/
371
589
 
372
 
    dpd_file2_init(&newLIA, CC_OEI, L_irr, 0, 1, "New LIA");
373
 
    dpd_file2_copy(&newLIA, CC_OEI, "New LIA Increment");
 
590
    dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
 
591
    dpd_file2_copy(&newLIA, CC_LAMBDA, "New LIA Increment");
374
592
    dpd_file2_close(&newLIA);
375
593
 
376
 
    dpd_file2_init(&newLIA, CC_OEI, L_irr, 0, 1, "New LIA Increment");
 
594
    dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA Increment");
377
595
    if(params.local && local.filter_singles) local_filter_T1(&newLIA);
378
596
    else {
379
 
      dpd_file2_init(&dIA, CC_OEI, L_irr, 0, 1, "dIA");
 
597
      dpd_file2_init(&dIA, CC_DENOM, L_irr, 0, 1, "dIA");
380
598
      dpd_file2_dirprd(&dIA, &newLIA);
381
599
      dpd_file2_close(&dIA);
382
600
    }
383
601
    dpd_file2_close(&newLIA);
384
602
 
385
 
    dpd_file2_init(&LIA, CC_OEI, L_irr, 0, 1, "LIA");
386
 
    dpd_file2_copy(&LIA, CC_OEI, "New LIA");
 
603
    dpd_file2_init(&LIA, CC_LAMBDA, L_irr, 0, 1, "LIA");
 
604
    dpd_file2_copy(&LIA, CC_LAMBDA, "New LIA");
387
605
    dpd_file2_close(&LIA);
388
 
    dpd_file2_init(&newLIA, CC_OEI, L_irr, 0, 1, "New LIA");
389
 
    dpd_file2_init(&LIA, CC_OEI, L_irr, 0, 1, "New LIA Increment");
 
606
    dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
 
607
    dpd_file2_init(&LIA, CC_LAMBDA, L_irr, 0, 1, "New LIA Increment");
390
608
    dpd_file2_axpy(&LIA, &newLIA, 1, 0);
391
609
    dpd_file2_close(&LIA);
392
610
 
393
 
    dpd_file2_copy(&newLIA, CC_OEI, "New Lia");  /* spin-adaptation for RHF */
 
611
    dpd_file2_copy(&newLIA, CC_LAMBDA, "New Lia");  /* spin-adaptation for RHF */
394
612
    dpd_file2_close(&newLIA);
395
613
  }
396
614
  else if(params.ref == 1) { /** ROHF **/
397
615
 
398
 
    dpd_file2_init(&newLIA, CC_OEI, L_irr, 0, 1, "New LIA");
399
 
    dpd_file2_copy(&newLIA, CC_OEI, "New LIA Increment");
 
616
    dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
 
617
    dpd_file2_copy(&newLIA, CC_LAMBDA, "New LIA Increment");
400
618
    dpd_file2_close(&newLIA);
401
619
 
402
 
    dpd_file2_init(&newLIA, CC_OEI, L_irr, 0, 1, "New LIA Increment");
403
 
    dpd_file2_init(&dIA, CC_OEI, L_irr, 0, 1, "dIA");
 
620
    dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA Increment");
 
621
    dpd_file2_init(&dIA, CC_DENOM, L_irr, 0, 1, "dIA");
404
622
    dpd_file2_dirprd(&dIA, &newLIA);
405
623
    dpd_file2_close(&dIA);
406
624
    dpd_file2_close(&newLIA);
407
625
 
408
 
    dpd_file2_init(&LIA, CC_OEI, L_irr, 0, 1, "LIA");
409
 
    dpd_file2_copy(&LIA, CC_OEI, "New LIA");
 
626
    dpd_file2_init(&LIA, CC_LAMBDA, L_irr, 0, 1, "LIA");
 
627
    dpd_file2_copy(&LIA, CC_LAMBDA, "New LIA");
410
628
    dpd_file2_close(&LIA);
411
 
    dpd_file2_init(&newLIA, CC_OEI, L_irr, 0, 1, "New LIA");
412
 
    dpd_file2_init(&LIA, CC_OEI, L_irr, 0, 1, "New LIA Increment");
 
629
    dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
 
630
    dpd_file2_init(&LIA, CC_LAMBDA, L_irr, 0, 1, "New LIA Increment");
413
631
    dpd_file2_axpy(&LIA, &newLIA, 1, 0);
414
632
    dpd_file2_close(&LIA);
415
633
    dpd_file2_close(&newLIA);
416
634
 
417
 
    dpd_file2_init(&newLia, CC_OEI, L_irr, 0, 1, "New Lia");
418
 
    dpd_file2_copy(&newLia, CC_OEI, "New Lia Increment");
 
635
    dpd_file2_init(&newLia, CC_LAMBDA, L_irr, 0, 1, "New Lia");
 
636
    dpd_file2_copy(&newLia, CC_LAMBDA, "New Lia Increment");
419
637
    dpd_file2_close(&newLia);
420
638
 
421
 
    dpd_file2_init(&newLia, CC_OEI, L_irr, 0, 1, "New Lia Increment");
422
 
    dpd_file2_init(&dia, CC_OEI, L_irr, 0, 1, "dia");
 
639
    dpd_file2_init(&newLia, CC_LAMBDA, L_irr, 0, 1, "New Lia Increment");
 
640
    dpd_file2_init(&dia, CC_DENOM, L_irr, 0, 1, "dia");
423
641
    dpd_file2_dirprd(&dia, &newLia);
424
642
    dpd_file2_close(&dia);
425
643
    dpd_file2_close(&newLia);
426
644
 
427
 
    dpd_file2_init(&Lia, CC_OEI, L_irr, 0, 1, "Lia");
428
 
    dpd_file2_copy(&Lia, CC_OEI, "New Lia");
 
645
    dpd_file2_init(&Lia, CC_LAMBDA, L_irr, 0, 1, "Lia");
 
646
    dpd_file2_copy(&Lia, CC_LAMBDA, "New Lia");
429
647
    dpd_file2_close(&Lia);
430
 
    dpd_file2_init(&newLia, CC_OEI, L_irr, 0, 1, "New Lia");
431
 
    dpd_file2_init(&Lia, CC_OEI, L_irr, 0, 1, "New Lia Increment");
 
648
    dpd_file2_init(&newLia, CC_LAMBDA, L_irr, 0, 1, "New Lia");
 
649
    dpd_file2_init(&Lia, CC_LAMBDA, L_irr, 0, 1, "New Lia Increment");
432
650
    dpd_file2_axpy(&Lia, &newLia, 1, 0);
433
651
    dpd_file2_close(&Lia);
434
652
    dpd_file2_close(&newLia);
435
653
  }
436
654
  else if(params.ref == 2) {
437
655
 
438
 
    dpd_file2_init(&newLIA, CC_OEI, L_irr, 0, 1, "New LIA");
439
 
    dpd_file2_init(&dIA, CC_OEI, L_irr, 0, 1, "dIA");
 
656
    dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
 
657
    dpd_file2_init(&dIA, CC_DENOM, L_irr, 0, 1, "dIA");
440
658
    dpd_file2_dirprd(&dIA, &newLIA);
441
659
    dpd_file2_close(&dIA);
442
660
    dpd_file2_close(&newLIA);
443
661
 
444
 
    dpd_file2_init(&newLia, CC_OEI, L_irr, 2, 3, "New Lia");
445
 
    dpd_file2_init(&dia, CC_OEI, L_irr, 2, 3, "dia");
 
662
    dpd_file2_init(&newLia, CC_LAMBDA, L_irr, 2, 3, "New Lia");
 
663
    dpd_file2_init(&dia, CC_DENOM, L_irr, 2, 3, "dia");
446
664
    dpd_file2_dirprd(&dia, &newLia);
447
665
    dpd_file2_close(&dia);
448
666
    dpd_file2_close(&newLia);