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

« back to all changes in this revision

Viewing changes to src/bin/cclambda/c_clean.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 <stdio.h>
2
 
#include <math.h>
3
 
#define EXTERN
4
 
#include "globals.h"
5
 
 
6
 
/*** This function removes incorrectly non-zero elements from ***
7
 
 *** a vector.  The non-zero elements are due to the          ***
8
 
 *** specification of open-shell orbitals as both occupied    ***
9
 
 *** and virtual orbitals.                                    ***/
10
 
 
11
 
void c_clean(dpdfile2 *CME, dpdfile2 *Cme,
12
 
 dpdbuf4 *CMNEF, dpdbuf4 *Cmnef, dpdbuf4 *CMnEf) {
13
 
 
14
 
  int *occpi, *virtpi, *occ_off, *vir_off, *openpi, C_irr;
15
 
  int nirreps, *occ_sym, *vir_sym;
16
 
  int mn, ef, m, n, e, f, h, M, N, E, F;
17
 
  int msym, nsym, esym, fsym;
18
 
 
19
 
  C_irr = CME->my_irrep;
20
 
  nirreps = moinfo.nirreps;
21
 
  occpi = moinfo.occpi; virtpi = moinfo.virtpi;
22
 
  occ_off = moinfo.occ_off; vir_off = moinfo.vir_off;
23
 
  occ_sym = moinfo.occ_sym; vir_sym = moinfo.vir_sym;
24
 
  openpi = moinfo.openpi;
25
 
 
26
 
  dpd_file2_mat_init(CME);
27
 
  dpd_file2_mat_rd(CME);
28
 
  for(h=0; h < nirreps; h++) {
29
 
    for(m=0; m<occpi[h]; m++)
30
 
      for(e=(virtpi[h^C_irr]-openpi[h^C_irr]); e<virtpi[h^C_irr]; e++)
31
 
        CME->matrix[h][m][e] = 0.0;
32
 
  }
33
 
  dpd_file2_mat_wrt(CME);
34
 
 
35
 
  dpd_file2_mat_init(Cme);
36
 
  dpd_file2_mat_rd(Cme);
37
 
  for(h=0; h < nirreps; h++) {
38
 
    for(m=(occpi[h]-openpi[h]); m<occpi[h]; m++)
39
 
      for(e=0; e<virtpi[h^C_irr]; e++)
40
 
        Cme->matrix[h][m][e] = 0.0;
41
 
  }
42
 
  dpd_file2_mat_wrt(Cme);
43
 
 
44
 
  for(h=0; h < nirreps; h++) {
45
 
    dpd_buf4_mat_irrep_init(CMNEF, h);
46
 
    dpd_buf4_mat_irrep_rd(CMNEF, h);
47
 
    for(mn=0; mn < CMNEF->params->rowtot[h]; mn++) {
48
 
      for(ef=0; ef < CMNEF->params->coltot[h^C_irr]; ef++) {
49
 
          e = CMNEF->params->colorb[h^C_irr][ef][0];
50
 
          f = CMNEF->params->colorb[h^C_irr][ef][1];
51
 
          esym = CMNEF->params->rsym[e];
52
 
          fsym = CMNEF->params->ssym[f];
53
 
          E = e - vir_off[esym];
54
 
          F = f - vir_off[fsym];
55
 
          if ((E >= (virtpi[esym] - openpi[esym])) ||
56
 
              (F >= (virtpi[fsym] - openpi[fsym])) )
57
 
                   CMNEF->matrix[h][mn][ef] = 0.0;
58
 
      }
59
 
    }
60
 
    dpd_buf4_mat_irrep_wrt(CMNEF, h);
61
 
    dpd_buf4_mat_irrep_close(CMNEF, h);
62
 
  }
63
 
 
64
 
  for(h=0; h < nirreps; h++) {
65
 
    dpd_buf4_mat_irrep_init(Cmnef, h);
66
 
    dpd_buf4_mat_irrep_rd(Cmnef, h);
67
 
    for(mn=0; mn < Cmnef->params->rowtot[h]; mn++) {
68
 
      m = Cmnef->params->roworb[h][mn][0];
69
 
      n = Cmnef->params->roworb[h][mn][1];
70
 
      msym = Cmnef->params->psym[m];
71
 
      nsym = Cmnef->params->qsym[n];
72
 
      M = m - occ_off[msym];
73
 
      N = n - occ_off[nsym];
74
 
      for(ef=0; ef < Cmnef->params->coltot[h^C_irr]; ef++) {
75
 
        if ((M >= (occpi[msym] - openpi[msym])) ||
76
 
            (N >= (occpi[nsym] - openpi[nsym])) )
77
 
               Cmnef->matrix[h][mn][ef] = 0.0;
78
 
      }
79
 
    }
80
 
    dpd_buf4_mat_irrep_wrt(Cmnef, h);
81
 
    dpd_buf4_mat_irrep_close(Cmnef, h);
82
 
  }
83
 
 
84
 
  for(h=0; h < nirreps; h++) {
85
 
    dpd_buf4_mat_irrep_init(CMnEf, h);
86
 
    dpd_buf4_mat_irrep_rd(CMnEf, h);
87
 
    for(mn=0; mn < CMnEf->params->rowtot[h]; mn++) {
88
 
      n = CMnEf->params->roworb[h][mn][1];
89
 
      nsym = CMnEf->params->qsym[n];
90
 
      N = n - occ_off[nsym];
91
 
      for(ef=0; ef < CMnEf->params->coltot[h^C_irr]; ef++) {
92
 
        e = CMnEf->params->colorb[h^C_irr][ef][0];
93
 
        esym = CMnEf->params->rsym[e];
94
 
        E = e - vir_off[esym];
95
 
        if ((N >= (occpi[nsym] - openpi[nsym])) ||
96
 
            (E >= (virtpi[esym] - openpi[esym])) )
97
 
          CMnEf->matrix[h][mn][ef] = 0.0;
98
 
      }
99
 
    }
100
 
    dpd_buf4_mat_irrep_wrt(CMnEf, h);
101
 
    dpd_buf4_mat_irrep_close(CMnEf, h);
102
 
  }
103
 
 
104
 
  return;
105
 
}
106
 
 
107
 
 
108
 
void c_cleanSS(dpdfile2 *CME, dpdfile2 *Cme) {
109
 
  int *occpi, *virtpi, *occ_off, *vir_off, *openpi;
110
 
  int nirreps, *occ_sym, *vir_sym;
111
 
  int mn, ef, m, n, e, f;
112
 
  int h, M, N, E, F;
113
 
  int msym, nsym, esym, fsym, C_irr;
114
 
 
115
 
  C_irr = CME->my_irrep;
116
 
  nirreps = moinfo.nirreps;
117
 
  occpi = moinfo.occpi; virtpi = moinfo.virtpi;
118
 
  occ_off = moinfo.occ_off; vir_off = moinfo.vir_off;
119
 
  occ_sym = moinfo.occ_sym; vir_sym = moinfo.vir_sym;
120
 
  openpi = moinfo.openpi;
121
 
 
122
 
  dpd_file2_mat_init(CME);
123
 
  dpd_file2_mat_rd(CME);
124
 
  for(h=0; h < nirreps; h++) {
125
 
    for(m=0; m<occpi[h]; m++)
126
 
      for(e=(virtpi[h^C_irr]-openpi[h^C_irr]); e<virtpi[h^C_irr]; e++)
127
 
        CME->matrix[h][m][e] = 0.0;
128
 
  }
129
 
  dpd_file2_mat_wrt(CME);
130
 
 
131
 
  dpd_file2_mat_init(Cme);
132
 
  dpd_file2_mat_rd(Cme);
133
 
  for(h=0; h < nirreps; h++) {
134
 
    for(m=(occpi[h]-openpi[h]); m<occpi[h]; m++)
135
 
      for(e=0; e<virtpi[h^C_irr]; e++)
136
 
        Cme->matrix[h][m][e] = 0.0;
137
 
  }
138
 
  dpd_file2_mat_wrt(Cme);
139
 
 
140
 
  return;
141
 
}