~ubuntu-branches/ubuntu/precise/psicode/precise

« back to all changes in this revision

Viewing changes to src/bin/ccdensity/Iab.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 <libdpd/dpd.h>
 
2
#include <libqt/qt.h>
2
3
#define EXTERN
3
4
#include "globals.h"
4
5
 
6
7
** using the expression given in lag.c.
7
8
** */
8
9
 
9
 
void Iab(void)
 
10
void Iab(struct RHO_Params rho_params)
10
11
{
 
12
  int a, b, c, A, B, C, Ga, Gb, Gc, Gac, Gbc;
 
13
  int *vir_off, *virtpi, nirreps, length, col;
11
14
  dpdfile2 F, D, I;
12
15
  dpdbuf4 G, Bints, Cints, Dints, Eints, Fints;
 
16
  vir_off = moinfo.vir_off;
 
17
  virtpi = moinfo.virtpi;
 
18
  nirreps = moinfo.nirreps;
13
19
 
14
20
  if(params.ref == 0 || params.ref == 1) { /** RHF/ROHF **/
15
21
 
17
23
    dpd_file2_init(&I, CC_OEI, 0, 1, 1, "I'AB");
18
24
 
19
25
    dpd_file2_init(&F, CC_OEI, 0, 0, 1, "fIA");
20
 
    dpd_file2_init(&D, CC_OEI, 0, 0, 1, "DAI");
 
26
    dpd_file2_init(&D, CC_OEI, 0, 0, 1, rho_params.DAI_lbl);
21
27
    dpd_contract222(&F, &D, &I, 1, 1, 1.0, 0.0);
22
28
    dpd_file2_close(&D);
23
 
    dpd_file2_init(&D, CC_OEI, 0, 0, 1, "DIA");
 
29
    dpd_file2_init(&D, CC_OEI, 0, 0, 1, rho_params.DIA_lbl);
24
30
    dpd_contract222(&F, &D, &I, 1, 1, 1.0, 1.0);
25
31
    dpd_file2_close(&D);
26
32
    dpd_file2_close(&F);
27
33
 
28
34
    dpd_file2_init(&F, CC_OEI, 0, 1, 1, "fAB");
29
 
    dpd_file2_init(&D, CC_OEI, 0, 1, 1, "DAB");
 
35
    dpd_file2_init(&D, CC_OEI, 0, 1, 1, rho_params.DAB_lbl);
30
36
    dpd_contract222(&F, &D, &I, 0, 0, 1.0, 1.0);
31
37
    dpd_contract222(&F, &D, &I, 0, 1, 1.0, 1.0);
32
38
    dpd_file2_close(&D);
38
44
    dpd_file2_init(&I, CC_OEI, 0, 1, 1, "I'ab");
39
45
 
40
46
    dpd_file2_init(&F, CC_OEI, 0, 0, 1, "fia");
41
 
    dpd_file2_init(&D, CC_OEI, 0, 0, 1, "Dai");
 
47
    dpd_file2_init(&D, CC_OEI, 0, 0, 1, rho_params.Dai_lbl);
42
48
    dpd_contract222(&F, &D, &I, 1, 1, 1.0, 0.0);
43
49
    dpd_file2_close(&D);
44
 
    dpd_file2_init(&D, CC_OEI, 0, 0, 1, "Dia");
 
50
    dpd_file2_init(&D, CC_OEI, 0, 0, 1, rho_params.Dia_lbl);
45
51
    dpd_contract222(&F, &D, &I, 1, 1, 1.0, 1.0);
46
52
    dpd_file2_close(&D);
47
53
    dpd_file2_close(&F);
48
54
 
49
55
    dpd_file2_init(&F, CC_OEI, 0, 1, 1, "fab");
50
 
    dpd_file2_init(&D, CC_OEI, 0, 1, 1, "Dab");
 
56
    dpd_file2_init(&D, CC_OEI, 0, 1, 1, rho_params.Dab_lbl);
51
57
    dpd_contract222(&F, &D, &I, 0, 0, 1.0, 1.0);
52
58
    dpd_contract222(&F, &D, &I, 0, 1, 1.0, 1.0);
53
59
    dpd_file2_close(&D);
61
67
    dpd_file2_init(&I, CC_OEI, 0, 1, 1, "I'AB");
62
68
 
63
69
    dpd_file2_init(&F, CC_OEI, 0, 0, 1, "fIA");
64
 
    dpd_file2_init(&D, CC_OEI, 0, 0, 1, "DAI");
 
70
    dpd_file2_init(&D, CC_OEI, 0, 0, 1, rho_params.DAI_lbl);
65
71
    dpd_contract222(&F, &D, &I, 1, 1, 1.0, 0.0);
66
72
    dpd_file2_close(&D);
67
 
    dpd_file2_init(&D, CC_OEI, 0, 0, 1, "DIA");
 
73
    dpd_file2_init(&D, CC_OEI, 0, 0, 1, rho_params.DIA_lbl);
68
74
    dpd_contract222(&F, &D, &I, 1, 1, 1.0, 1.0);
69
75
    dpd_file2_close(&D);
70
76
    dpd_file2_close(&F);
71
77
 
72
78
    dpd_file2_init(&F, CC_OEI, 0, 1, 1, "fAB");
73
 
    dpd_file2_init(&D, CC_OEI, 0, 1, 1, "DAB");
 
79
    dpd_file2_init(&D, CC_OEI, 0, 1, 1, rho_params.DAB_lbl);
74
80
    dpd_contract222(&F, &D, &I, 0, 0, 1.0, 1.0);
75
81
    dpd_contract222(&F, &D, &I, 0, 1, 1.0, 1.0);
76
82
    dpd_file2_close(&D);
82
88
    dpd_file2_init(&I, CC_OEI, 0, 3, 3, "I'ab");
83
89
 
84
90
    dpd_file2_init(&F, CC_OEI, 0, 2, 3, "fia");
85
 
    dpd_file2_init(&D, CC_OEI, 0, 2, 3, "Dai");
 
91
    dpd_file2_init(&D, CC_OEI, 0, 2, 3, rho_params.Dai_lbl);
86
92
    dpd_contract222(&F, &D, &I, 1, 1, 1.0, 0.0);
87
93
    dpd_file2_close(&D);
88
 
    dpd_file2_init(&D, CC_OEI, 0, 2, 3, "Dia");
 
94
    dpd_file2_init(&D, CC_OEI, 0, 2, 3, rho_params.Dia_lbl);
89
95
    dpd_contract222(&F, &D, &I, 1, 1, 1.0, 1.0);
90
96
    dpd_file2_close(&D);
91
97
    dpd_file2_close(&F);
92
98
 
93
99
    dpd_file2_init(&F, CC_OEI, 0, 3, 3, "fab");
94
 
    dpd_file2_init(&D, CC_OEI, 0, 3, 3, "Dab");
 
100
    dpd_file2_init(&D, CC_OEI, 0, 3, 3, rho_params.Dab_lbl);
95
101
    dpd_contract222(&F, &D, &I, 0, 0, 1.0, 1.0);
96
102
    dpd_contract222(&F, &D, &I, 0, 1, 1.0, 1.0);
97
103
    dpd_file2_close(&D);
192
198
 
193
199
    dpd_buf4_init(&Bints, CC_BINTS, 0, 5, 5, 5, 5, 0, "B <ab|cd>");
194
200
    dpd_buf4_init(&G, CC_GAMMA, 0, 5, 5, 5, 5, 0, "GAbCd");
195
 
    dpd_contract442(&Bints, &G, &I, 0, 0, 2.0, 1.0);
 
201
/*    dpd_contract442(&Bints, &G, &I, 0, 0, 2.0, 1.0);  replaced with 2(V**3) memory code*/
 
202
    dpd_file2_mat_init(&I);
 
203
    dpd_file2_mat_rd(&I);
 
204
    for(Gac=0; Gac < nirreps; Gac++) {
 
205
      Gbc = Gac;
 
206
      for(Ga=0; Ga < nirreps; Ga++) {
 
207
        Gb = Ga;
 
208
        Gc = Ga ^ Gac;
 
209
        Bints.matrix[Gac] = dpd_block_matrix(virtpi[Gc], Bints.params->coltot[Gac]);
 
210
        G.matrix[Gbc] = dpd_block_matrix(virtpi[Gc], G.params->coltot[Gbc]);
 
211
        for(a=0; a < virtpi[Ga]; a++) {
 
212
          A = vir_off[Ga] + a;
 
213
          for(b=0; b < virtpi[Gb]; b++) {
 
214
            B = vir_off[Gb] + b;
 
215
            dpd_buf4_mat_irrep_rd_block(&Bints, Gac, Bints.row_offset[Gac][A], virtpi[Gc]);
 
216
            dpd_buf4_mat_irrep_rd_block(&G, Gbc, G.row_offset[Gbc][B], virtpi[Gc]);
 
217
            length = virtpi[Gc] * Bints.params->coltot[Gac];
 
218
            if(length)
 
219
              I.matrix[Ga][a][b] += 2.0 * C_DDOT(length, Bints.matrix[Gac][0], 1, G.matrix[Gbc][0], 1);
 
220
          }
 
221
        }
 
222
        dpd_free_block(Bints.matrix[Gac], virtpi[Gc], Bints.params->coltot[Gac]);
 
223
        dpd_free_block(G.matrix[Gbc], virtpi[Gc], G.params->coltot[Gbc]);
 
224
      }
 
225
    }
 
226
    dpd_file2_mat_wrt(&I);
 
227
    dpd_file2_mat_close(&I);
196
228
    dpd_buf4_close(&G);
197
229
    dpd_buf4_close(&Bints);
198
230
 
209
241
 
210
242
    dpd_buf4_init(&Bints, CC_BINTS, 0, 5, 5, 5, 5, 0, "B <ab|cd>");
211
243
    dpd_buf4_init(&G, CC_GAMMA, 0, 5, 5, 5, 5, 0, "GAbCd");
212
 
    dpd_contract442(&Bints, &G, &I, 3, 3, 2.0, 1.0);
 
244
   /*  dpd_contract442(&Bints, &G, &I, 3, 3, 2.0, 1.0); replaced with 2(V**3) memory code*/
 
245
    dpd_file2_mat_init(&I);
 
246
    dpd_file2_mat_rd(&I);
 
247
    for(Gac=0; Gac < nirreps; Gac++) {
 
248
      Gbc = Gac;
 
249
      for(Gc=0; Gc < nirreps; Gc++) {
 
250
        Ga = Gc ^ Gac;
 
251
        Gb = Ga;
 
252
        Bints.matrix[Gac] = dpd_block_matrix(virtpi[Ga], Bints.params->coltot[Gac]);
 
253
        G.matrix[Gbc] = dpd_block_matrix(virtpi[Gb], G.params->coltot[Gbc]);
 
254
        for(c=0; c < virtpi[Gc]; c++) {
 
255
          C = vir_off[Gc] + c;
 
256
          dpd_buf4_mat_irrep_rd_block(&Bints, Gac, Bints.row_offset[Gac][C], virtpi[Ga]);
 
257
          dpd_buf4_mat_irrep_rd_block(&G, Gbc, G.row_offset[Gbc][C], virtpi[Gb]);
 
258
          for(a=0; a < virtpi[Ga]; a++) {
 
259
            for(b=0; b < virtpi[Gb]; b++) {
 
260
              for (col=0; col< Bints.params->coltot[Gac]; ++col)
 
261
                I.matrix[Ga][a][b] += 2.0 * Bints.matrix[Gac][a][col]*G.matrix[Gbc][b][col] ;
 
262
            }
 
263
          }
 
264
        }
 
265
        dpd_free_block(Bints.matrix[Gac], virtpi[Ga], Bints.params->coltot[Gac]);
 
266
        dpd_free_block(G.matrix[Gbc], virtpi[Gb], G.params->coltot[Gbc]);
 
267
      }
 
268
    }
 
269
    dpd_file2_mat_wrt(&I);
 
270
    dpd_file2_mat_close(&I);
213
271
    dpd_buf4_close(&G);
214
272
    dpd_buf4_close(&Bints);
215
273