2
#include <libdpd/dpd.h>
6
void denom1(dpdfile2 *X1, double omega)
13
nirreps = moinfo.nirreps;
15
virtpi = moinfo.virtpi;
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);
26
dpd_file2_mat_init(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);
33
dpd_file2_mat_wrt(X1);
34
dpd_file2_mat_close(X1);
36
dpd_file2_mat_close(&FAE);
37
dpd_file2_mat_close(&FMI);
38
dpd_file2_close(&FAE);
39
dpd_file2_close(&FMI);
42
void denom2(dpdbuf4 *X2, double omega)
44
int nirreps, h, row, col, irrep;
45
int i, j, I, J, a, b, A, B, isym, jsym, asym, bsym;
48
nirreps = moinfo.nirreps;
49
irrep = X2->file.my_irrep;
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);
58
for(h=0; h < nirreps; h++) {
59
dpd_buf4_mat_irrep_init(X2, h);
60
dpd_buf4_mat_irrep_rd(X2, h);
62
for(row=0; row < X2->params->rowtot[h]; row++) {
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];
71
for(col=0; col < X2->params->coltot[h^irrep]; col++) {
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];
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);
86
dpd_buf4_mat_irrep_wrt(X2, h);
87
dpd_buf4_mat_irrep_close(X2, h);
90
dpd_file2_mat_close(&FAE);
91
dpd_file2_mat_close(&FMI);
92
dpd_file2_close(&FAE);
93
dpd_file2_close(&FMI);