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

« back to all changes in this revision

Viewing changes to src/bin/ccresponse/denom.c

  • Committer: Bazaar Package Importer
  • Author(s): Michael Banck
  • Date: 2006-09-10 14:01:33 UTC
  • Revision ID: james.westby@ubuntu.com-20060910140133-ib2j86trekykfsfv
Tags: upstream-3.2.3
ImportĀ upstreamĀ versionĀ 3.2.3

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include <stdio.h>
 
2
#include <libdpd/dpd.h>
 
3
#define EXTERN
 
4
#include "globals.h"
 
5
 
 
6
void denom1(dpdfile2 *X1, double omega)
 
7
{
 
8
  int nirreps, h, irrep;
 
9
  int i, a;
 
10
  int *occpi, *virtpi;
 
11
  dpdfile2 FAE, FMI;
 
12
 
 
13
  nirreps = moinfo.nirreps;
 
14
  occpi = moinfo.occpi;
 
15
  virtpi = moinfo.virtpi;
 
16
 
 
17
  irrep = X1->my_irrep;
 
18
 
 
19
  dpd_file2_init(&FAE, CC_OEI, 0, 1, 1, "FAE");
 
20
  dpd_file2_init(&FMI, CC_OEI, 0, 0, 0, "FMI");
 
21
  dpd_file2_mat_init(&FAE);
 
22
  dpd_file2_mat_init(&FMI);
 
23
  dpd_file2_mat_rd(&FAE);
 
24
  dpd_file2_mat_rd(&FMI);
 
25
 
 
26
  dpd_file2_mat_init(X1);
 
27
  dpd_file2_mat_rd(X1);
 
28
  for(h=0; h < nirreps; h++) {
 
29
    for(i=0; i < occpi[h]; i++) 
 
30
      for(a=0; a < virtpi[h^irrep]; a++)
 
31
        X1->matrix[h][i][a] /= (FMI.matrix[h][i][i] - FAE.matrix[h^irrep][a][a] + omega);
 
32
  }
 
33
  dpd_file2_mat_wrt(X1);
 
34
  dpd_file2_mat_close(X1);
 
35
 
 
36
  dpd_file2_mat_close(&FAE);
 
37
  dpd_file2_mat_close(&FMI);
 
38
  dpd_file2_close(&FAE);
 
39
  dpd_file2_close(&FMI);
 
40
}
 
41
 
 
42
void denom2(dpdbuf4 *X2, double omega)
 
43
{
 
44
  int nirreps, h, row, col, irrep;
 
45
  int i, j, I, J, a, b, A, B, isym, jsym, asym, bsym;
 
46
  dpdfile2 FAE, FMI;
 
47
 
 
48
  nirreps = moinfo.nirreps;
 
49
  irrep = X2->file.my_irrep;
 
50
 
 
51
  dpd_file2_init(&FAE, CC_OEI, 0, 1, 1, "FAE");
 
52
  dpd_file2_init(&FMI, CC_OEI, 0, 0, 0, "FMI");
 
53
  dpd_file2_mat_init(&FAE);
 
54
  dpd_file2_mat_init(&FMI);
 
55
  dpd_file2_mat_rd(&FAE);
 
56
  dpd_file2_mat_rd(&FMI);
 
57
 
 
58
  for(h=0; h < nirreps; h++) {
 
59
    dpd_buf4_mat_irrep_init(X2, h);
 
60
    dpd_buf4_mat_irrep_rd(X2, h);
 
61
 
 
62
    for(row=0; row < X2->params->rowtot[h]; row++) {
 
63
 
 
64
      i = X2->params->roworb[h][row][0];
 
65
      j = X2->params->roworb[h][row][1];
 
66
      isym = X2->params->psym[i];
 
67
      jsym = X2->params->qsym[j];
 
68
      I = i - moinfo.occ_off[isym];
 
69
      J = j - moinfo.occ_off[jsym];
 
70
 
 
71
      for(col=0; col < X2->params->coltot[h^irrep]; col++) {
 
72
 
 
73
        a = X2->params->colorb[h^irrep][col][0];
 
74
        b = X2->params->colorb[h^irrep][col][1];
 
75
        asym = X2->params->rsym[a];
 
76
        bsym = X2->params->ssym[b];
 
77
        A = a - moinfo.vir_off[asym];
 
78
        B = b - moinfo.vir_off[bsym];
 
79
 
 
80
        X2->matrix[h][row][col] /= (FMI.matrix[isym][I][I] + FMI.matrix[jsym][J][J] - 
 
81
                                   FAE.matrix[asym][A][A] - FAE.matrix[bsym][B][B] + omega);
 
82
 
 
83
      }
 
84
    }
 
85
 
 
86
    dpd_buf4_mat_irrep_wrt(X2, h);
 
87
    dpd_buf4_mat_irrep_close(X2, h);
 
88
  }
 
89
 
 
90
  dpd_file2_mat_close(&FAE);
 
91
  dpd_file2_mat_close(&FMI);
 
92
  dpd_file2_close(&FAE);
 
93
  dpd_file2_close(&FMI);
 
94
}