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

« back to all changes in this revision

Viewing changes to src/bin/cis/denom.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 <libdpd/dpd.h>
2
 
#define EXTERN
3
 
#include "globals.h"
4
 
 
5
 
void denom(int irrep, double root)
6
 
{
7
 
  int Gij, Gab;
8
 
  int ij, ab, i, j, a, b, I, J, A, B, isym, jsym, asym, bsym;
9
 
  int nirreps;
10
 
  int *occpi, *virtpi, *occ_off, *vir_off;
11
 
  int *aoccpi, *avirtpi, *aocc_off, *avir_off;
12
 
  int *boccpi, *bvirtpi, *bocc_off, *bvir_off;
13
 
  double fii, fjj, faa, fbb;
14
 
  dpdfile2 fIJ, fij, fAB, fab;
15
 
  dpdbuf4 D;
16
 
  char lbl[32];
17
 
 
18
 
  nirreps = moinfo.nirreps;
19
 
 
20
 
  if(params.ref == 0) { /** RHF **/
21
 
 
22
 
    occpi = moinfo.occpi;
23
 
    virtpi = moinfo.virtpi;
24
 
    occ_off = moinfo.occ_off;
25
 
    vir_off = moinfo.vir_off;
26
 
 
27
 
    dpd_file2_init(&fIJ, CC_OEI, 0, 0, 0, "fIJ");
28
 
    dpd_file2_mat_init(&fIJ);
29
 
    dpd_file2_mat_rd(&fIJ);
30
 
  
31
 
    dpd_file2_init(&fij, CC_OEI, 0, 0, 0, "fij");
32
 
    dpd_file2_mat_init(&fij);
33
 
    dpd_file2_mat_rd(&fij);
34
 
  
35
 
    dpd_file2_init(&fAB, CC_OEI, 0, 1, 1, "fAB");
36
 
    dpd_file2_mat_init(&fAB);
37
 
    dpd_file2_mat_rd(&fAB);
38
 
  
39
 
    dpd_file2_init(&fab, CC_OEI, 0, 1, 1, "fab");
40
 
    dpd_file2_mat_init(&fab);
41
 
    dpd_file2_mat_rd(&fab);
42
 
 
43
 
    sprintf(lbl, "dIjAb[%d]", irrep);
44
 
    dpd_buf4_init(&D, CC_MISC, irrep, 0, 5, 0, 5, 0, lbl);
45
 
    for(Gij=0; Gij < nirreps; Gij++) {
46
 
 
47
 
      dpd_buf4_mat_irrep_init(&D, Gij);
48
 
 
49
 
      for(ij=0; ij < D.params->rowtot[Gij]; ij++) {
50
 
        i = D.params->roworb[Gij][ij][0];
51
 
        j = D.params->roworb[Gij][ij][1];
52
 
        isym = D.params->psym[i];
53
 
        jsym = D.params->qsym[j];
54
 
 
55
 
        I = i - occ_off[isym];
56
 
        J = j - occ_off[jsym];
57
 
 
58
 
        fii = fIJ.matrix[isym][I][I];
59
 
        fjj = fij.matrix[jsym][J][J];
60
 
          
61
 
        for(ab=0; ab < D.params->coltot[Gij^irrep]; ab++) {
62
 
          a = D.params->colorb[Gij^irrep][ab][0];
63
 
          b = D.params->colorb[Gij^irrep][ab][1];
64
 
          asym = D.params->rsym[a];
65
 
          bsym = D.params->ssym[b];
66
 
 
67
 
          A = a - vir_off[asym];
68
 
          B = b - vir_off[bsym];
69
 
 
70
 
          faa = fAB.matrix[asym][A][A];
71
 
          fbb = fab.matrix[bsym][B][B];
72
 
 
73
 
          D.matrix[Gij][ij][ab] = 1.0/(fii + fjj - faa - fbb + root);
74
 
      }
75
 
    }
76
 
 
77
 
    dpd_buf4_mat_irrep_wrt(&D, Gij);
78
 
    dpd_buf4_mat_irrep_close(&D, Gij);
79
 
 
80
 
  }
81
 
 
82
 
  dpd_buf4_close(&D);
83
 
 
84
 
}
85
 
  else if(params.ref == 2) { /** UHF **/
86
 
 
87
 
    aoccpi = moinfo.aoccpi;
88
 
    boccpi = moinfo.boccpi;
89
 
    avirtpi = moinfo.avirtpi;
90
 
    bvirtpi = moinfo.bvirtpi;
91
 
    aocc_off = moinfo.aocc_off;
92
 
    bocc_off = moinfo.bocc_off;
93
 
    avir_off = moinfo.avir_off;
94
 
    bvir_off = moinfo.bvir_off;
95
 
 
96
 
    dpd_file2_init(&fIJ, CC_OEI, 0, 0, 0, "fIJ");
97
 
    dpd_file2_mat_init(&fIJ);
98
 
    dpd_file2_mat_rd(&fIJ);
99
 
  
100
 
    dpd_file2_init(&fij, CC_OEI, 0, 2, 2, "fij");
101
 
    dpd_file2_mat_init(&fij);
102
 
    dpd_file2_mat_rd(&fij);
103
 
  
104
 
    dpd_file2_init(&fAB, CC_OEI, 0, 1, 1, "fAB");
105
 
    dpd_file2_mat_init(&fAB);
106
 
    dpd_file2_mat_rd(&fAB);
107
 
  
108
 
    dpd_file2_init(&fab, CC_OEI, 0, 3, 3, "fab");
109
 
    dpd_file2_mat_init(&fab);
110
 
    dpd_file2_mat_rd(&fab);
111
 
 
112
 
    sprintf(lbl, "dIJAB[%d]", irrep);
113
 
    dpd_buf4_init(&D, CC_MISC, irrep, 1, 6, 1, 6, 0, lbl);
114
 
    for(Gij=0; Gij < nirreps; Gij++) {
115
 
      dpd_buf4_mat_irrep_init(&D, Gij);
116
 
      for(ij=0; ij < D.params->rowtot[Gij]; ij++) {
117
 
        i = D.params->roworb[Gij][ij][0];
118
 
        j = D.params->roworb[Gij][ij][1];
119
 
        isym = D.params->psym[i];
120
 
        jsym = D.params->qsym[j];
121
 
        I = i - aocc_off[isym];
122
 
        J = j - aocc_off[jsym];
123
 
        fii = fIJ.matrix[isym][I][I];
124
 
        fjj = fIJ.matrix[jsym][J][J];
125
 
 
126
 
        for(ab=0; ab < D.params->coltot[Gij^irrep]; ab++) {
127
 
          a = D.params->colorb[Gij^irrep][ab][0];
128
 
          b = D.params->colorb[Gij^irrep][ab][1];
129
 
          asym = D.params->rsym[a];
130
 
          bsym = D.params->ssym[b];
131
 
          A = a - avir_off[asym];
132
 
          B = b - avir_off[bsym];
133
 
          faa = fAB.matrix[asym][A][A];
134
 
          fbb = fAB.matrix[bsym][B][B];
135
 
 
136
 
          D.matrix[Gij][ij][ab] = 1.0/(fii + fjj - faa - fbb + root);
137
 
        }
138
 
      }
139
 
      dpd_buf4_mat_irrep_wrt(&D, Gij);
140
 
      dpd_buf4_mat_irrep_close(&D, Gij);
141
 
    }
142
 
    dpd_buf4_close(&D);
143
 
 
144
 
    sprintf(lbl, "dijab[%d]", irrep);
145
 
    dpd_buf4_init(&D, CC_MISC, irrep, 11, 16, 11, 16, 0, lbl);
146
 
    for(Gij=0; Gij < nirreps; Gij++) {
147
 
      dpd_buf4_mat_irrep_init(&D, Gij);
148
 
      for(ij=0; ij < D.params->rowtot[Gij]; ij++) {
149
 
        i = D.params->roworb[Gij][ij][0];
150
 
        j = D.params->roworb[Gij][ij][1];
151
 
        isym = D.params->psym[i];
152
 
        jsym = D.params->qsym[j];
153
 
        I = i - bocc_off[isym];
154
 
        J = j - bocc_off[jsym];
155
 
        fii = fij.matrix[isym][I][I];
156
 
        fjj = fij.matrix[jsym][J][J];
157
 
 
158
 
        for(ab=0; ab < D.params->coltot[Gij^irrep]; ab++) {
159
 
          a = D.params->colorb[Gij^irrep][ab][0];
160
 
          b = D.params->colorb[Gij^irrep][ab][1];
161
 
          asym = D.params->rsym[a];
162
 
          bsym = D.params->ssym[b];
163
 
          A = a - bvir_off[asym];
164
 
          B = b - bvir_off[bsym];
165
 
          faa = fab.matrix[asym][A][A];
166
 
          fbb = fab.matrix[bsym][B][B];
167
 
 
168
 
          D.matrix[Gij][ij][ab] = 1.0/(fii + fjj - faa - fbb + root);
169
 
        }
170
 
      }
171
 
      dpd_buf4_mat_irrep_wrt(&D, Gij);
172
 
      dpd_buf4_mat_irrep_close(&D, Gij);
173
 
    }
174
 
    dpd_buf4_close(&D);
175
 
 
176
 
    sprintf(lbl, "dIjAb[%d]", irrep);
177
 
    dpd_buf4_init(&D, CC_MISC, irrep, 22, 28, 22, 28, 0, lbl);
178
 
    for(Gij=0; Gij < nirreps; Gij++) {
179
 
      dpd_buf4_mat_irrep_init(&D, Gij);
180
 
      for(ij=0; ij < D.params->rowtot[Gij]; ij++) {
181
 
        i = D.params->roworb[Gij][ij][0];
182
 
        j = D.params->roworb[Gij][ij][1];
183
 
        isym = D.params->psym[i];
184
 
        jsym = D.params->qsym[j];
185
 
        I = i - aocc_off[isym];
186
 
        J = j - bocc_off[jsym];
187
 
        fii = fIJ.matrix[isym][I][I];
188
 
        fjj = fij.matrix[jsym][J][J];
189
 
 
190
 
        for(ab=0; ab < D.params->coltot[Gij^irrep]; ab++) {
191
 
          a = D.params->colorb[Gij^irrep][ab][0];
192
 
          b = D.params->colorb[Gij^irrep][ab][1];
193
 
          asym = D.params->rsym[a];
194
 
          bsym = D.params->ssym[b];
195
 
          A = a - avir_off[asym];
196
 
          B = b - bvir_off[bsym];
197
 
          faa = fAB.matrix[asym][A][A];
198
 
          fbb = fab.matrix[bsym][B][B];
199
 
 
200
 
          D.matrix[Gij][ij][ab] = 1.0/(fii + fjj - faa - fbb + root);
201
 
        }
202
 
      }
203
 
      dpd_buf4_mat_irrep_wrt(&D, Gij);
204
 
      dpd_buf4_mat_irrep_close(&D, Gij);
205
 
    }
206
 
    dpd_buf4_close(&D);
207
 
 
208
 
    dpd_file2_mat_close(&fIJ);
209
 
    dpd_file2_mat_close(&fij);
210
 
    dpd_file2_mat_close(&fAB);
211
 
    dpd_file2_mat_close(&fab);
212
 
    dpd_file2_close(&fIJ);
213
 
    dpd_file2_close(&fij);
214
 
    dpd_file2_close(&fAB);
215
 
    dpd_file2_close(&fab);
216
 
  }
217
 
}