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

« back to all changes in this revision

Viewing changes to src/bin/cceom-d/onepdm.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
/* onepdm(): Computes the non-R0 parts of the unrelaxed EOM 1pdm
 
7
* intermediates are defined in intermediates.c
 
8
 
9
*   D[i][j] = -LR_oo[j][i] - t1[i][f] * L2R1_ov[j][f]
 
10
*
 
11
*   D[a][b] = +LR_vv[a][b] + t1[n][b] * L2R1_ov[n][a]
 
12
*
 
13
*   D[a][i] = +L2R1_ov[i][a]
 
14
*
 
15
*   D[i][a] = + L1R2_ov[i][a] 
 
16
*            - t1[m][a] * LR_oo[m][i] 
 
17
*            - t1[i][e] * LR_vv[e][a]
 
18
*            - r1[m][a] * LT2_oo[m][i]
 
19
*            - r1[i][e] * LT2_vv[e][a]
 
20
*            + L2R1_ov[M][E] * (t2[i][m][a][e] - t1[i][e] * t1[m][a])
 
21
*
 
22
* RAK, July 2003
 
23
*/
 
24
 
 
25
void onepdm(void)
 
26
{
 
27
  dpdfile2 DIA, Dia, DIJ, DAB, Dij, Dab, TIA, Tia;
 
28
  dpdfile2 LIA, Lia, RIA, Ria, I, XIJ, Xij;
 
29
  dpdbuf4 T2, L2, R2, I2;
 
30
 
 
31
  if(params.ref == 0 || params.ref == 1) { /** RHF/ROHF **/
 
32
 
 
33
    dpd_file2_init(&TIA, CC_OEI, 0, 0, 1, "tIA");
 
34
    dpd_file2_init(&Tia, CC_OEI, 0, 0, 1, "tia");
 
35
 
 
36
    dpd_file2_init(&RIA, CC_RAMPS, 0, 0, 1, "RIA");
 
37
    dpd_file2_init(&Ria, CC_RAMPS, 0, 0, 1, "Ria");
 
38
 
 
39
    dpd_file2_init(&LIA, CC_LAMPS, 0, 0, 1, "LIA");
 
40
    dpd_file2_init(&Lia, CC_LAMPS, 0, 0, 1, "Lia");
 
41
 
 
42
    /* D[i][j] = -LR_oo[j][i] - t1[i][f] * L2R1_ov[j][f] */
 
43
 
 
44
    dpd_file2_init(&DIJ, EOM_D, 0, 0, 0, "DIJ");
 
45
    dpd_file2_scm(&DIJ, 0.0);
 
46
 
 
47
    dpd_file2_init(&I, EOM_TMP, 0, 0, 0, "LR_OO");
 
48
    dpd_file2_axpy(&I, &DIJ, -1.0, 1);
 
49
    dpd_file2_close(&I);
 
50
 
 
51
    dpd_file2_init(&I, EOM_TMP, 0, 0, 1, "L2R1_OV");
 
52
    dpd_contract222(&TIA, &I, &DIJ, 0, 0, -1.0, 1.0);
 
53
    dpd_file2_close(&I);
 
54
    dpd_file2_close(&DIJ);
 
55
 
 
56
    dpd_file2_init(&Dij, EOM_D, 0, 0, 0, "Dij");
 
57
    dpd_file2_scm(&Dij, 0.0);
 
58
 
 
59
    dpd_file2_init(&I, EOM_TMP, 0, 0, 0, "LR_oo");
 
60
    dpd_file2_axpy(&I, &Dij, -1.0, 1);
 
61
    dpd_file2_close(&I);
 
62
 
 
63
    dpd_file2_init(&I, EOM_TMP, 0, 0, 1, "L2R1_ov");
 
64
    dpd_contract222(&Tia, &I, &Dij, 0, 0, -1.0, 1.0);
 
65
    dpd_file2_close(&I);
 
66
    dpd_file2_close(&Dij);
 
67
 
 
68
    /* D[a][b] = +LR_vv[a][b] + L2R1_ov[n][a] * t1[n][b] */
 
69
    dpd_file2_init(&I, EOM_TMP, 0, 1, 1, "LR_VV");
 
70
    dpd_file2_copy(&I, EOM_D, "DAB");
 
71
    dpd_file2_close(&I);
 
72
 
 
73
    dpd_file2_init(&DAB, EOM_D, 0, 1, 1, "DAB");
 
74
    dpd_file2_init(&I, EOM_TMP, 0, 0, 1, "L2R1_OV");
 
75
    dpd_contract222(&I, &TIA, &DAB, 1, 1, 1.0, 1.0);
 
76
    dpd_file2_close(&I);
 
77
    dpd_file2_close(&DAB);
 
78
 
 
79
    dpd_file2_init(&I, EOM_TMP, 0, 1, 1, "LR_vv");
 
80
    dpd_file2_copy(&I, EOM_D, "Dab");
 
81
    dpd_file2_close(&I);
 
82
 
 
83
    dpd_file2_init(&Dab, EOM_D, 0, 1, 1, "Dab");
 
84
    dpd_file2_init(&I, EOM_TMP, 0, 0, 1, "L2R1_ov");
 
85
    dpd_contract222(&I, &Tia, &Dab, 1, 1, 1.0, 1.0);
 
86
    dpd_file2_close(&I);
 
87
    dpd_file2_close(&Dab);
 
88
 
 
89
    /* D[a][i] = +L2R1_ov[i][a] */
 
90
 
 
91
    dpd_file2_init(&I, EOM_TMP, 0, 0, 1, "L2R1_OV");
 
92
    dpd_file2_copy(&I, EOM_D, "DAI");
 
93
    dpd_file2_close(&I);
 
94
 
 
95
    dpd_file2_init(&I, EOM_TMP, 0, 0, 1, "L2R1_ov");
 
96
    dpd_file2_copy(&I, EOM_D, "Dai");
 
97
    dpd_file2_close(&I);
 
98
 
 
99
    /*
 
100
       D[I][A] = + L1R2_OV[I][A] 
 
101
                 - LR_OO[M][I] * t1[M][A]
 
102
                 - t1[I][E] * LR_vv[E][A]
 
103
                 - LT2_OO[M][I] * r1[M][A]
 
104
                 - r1[I][E] * LT2_vv[E][A]
 
105
                 + L2R1_ov[M][E] * (t2[i][m][a][e] - t1[i][e] * t1[m][a])
 
106
    */
 
107
 
 
108
    /* D[i][a] = L1R2_ov[i][a] */
 
109
    dpd_file2_init(&I, EOM_TMP, 0, 0, 1, "L1R2_OV");
 
110
    dpd_file2_copy(&I, EOM_D, "DIA");
 
111
    dpd_file2_close(&I);
 
112
 
 
113
    dpd_file2_init(&I, EOM_TMP, 0, 0, 1, "L1R2_ov");
 
114
    dpd_file2_copy(&I, EOM_D, "Dia");
 
115
    dpd_file2_close(&I);
 
116
 
 
117
    dpd_file2_init(&DIA, EOM_D, 0, 0, 1, "DIA");
 
118
    dpd_file2_init(&Dia, EOM_D, 0, 0, 1, "Dia");
 
119
 
 
120
    /* - LR_OO[M][I] * t1[M][A] */
 
121
 
 
122
    dpd_file2_init(&I, EOM_TMP, 0, 0, 0, "LR_OO");
 
123
    dpd_contract222(&I, &TIA, &DIA, 1, 1, -1.0, 1.0);
 
124
    dpd_file2_close(&I);
 
125
 
 
126
    dpd_file2_init(&I, EOM_TMP, 0, 0, 0, "LR_oo");
 
127
    dpd_contract222(&I, &Tia, &Dia, 1, 1, -1.0, 1.0);
 
128
    dpd_file2_close(&I);
 
129
 
 
130
    /* - t1[I][E] * LR_vv[E][A] */
 
131
 
 
132
    dpd_file2_init(&I, EOM_TMP, 0, 1, 1, "LR_VV");
 
133
    dpd_contract222(&TIA, &I, &DIA, 0, 1, -1.0, 1.0);
 
134
    dpd_file2_close(&I);
 
135
 
 
136
    dpd_file2_init(&I, EOM_TMP, 0, 1, 1, "LR_vv");
 
137
    dpd_contract222(&Tia, &I, &Dia, 0, 1, -1.0, 1.0);
 
138
    dpd_file2_close(&I);
 
139
 
 
140
    /* - LT2_OO[M][I] * r1[M][A] */
 
141
 
 
142
    dpd_file2_init(&I, EOM_TMP, 0, 0, 0, "LT2_OO");
 
143
    dpd_contract222(&I, &RIA, &DIA, 1, 1, -1.0, 1.0);
 
144
    dpd_file2_close(&I);
 
145
 
 
146
    dpd_file2_init(&I, EOM_TMP, 0, 0, 0, "LT2_oo");
 
147
    dpd_contract222(&I, &Ria, &Dia, 1, 1, -1.0, 1.0);
 
148
    dpd_file2_close(&I);
 
149
 
 
150
    /* - r1[I][E] * LT2_vv[E][A] */
 
151
 
 
152
    dpd_file2_init(&I, EOM_TMP, 0, 1, 1, "LT2_VV");
 
153
    dpd_contract222(&RIA, &I, &DIA, 0, 1, -1.0, 1.0);
 
154
    dpd_file2_close(&I);
 
155
 
 
156
    dpd_file2_init(&I, EOM_TMP, 0, 1, 1, "LT2_vv");
 
157
    dpd_contract222(&Ria, &I, &Dia, 0, 1, -1.0, 1.0);
 
158
    dpd_file2_close(&I);
 
159
 
 
160
    /* + L2R1_ov[M][E] * t2[i][m][a][e] */
 
161
 
 
162
    dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 2, 7, 0, "tIJAB"); 
 
163
    dpd_file2_init(&I, EOM_TMP, 0, 0, 1, "L2R1_OV");
 
164
    dpd_dot24(&I, &T2, &DIA, 0, 0, 1.0, 1.0);
 
165
    dpd_file2_close(&I);
 
166
    dpd_buf4_close(&T2);
 
167
 
 
168
    dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tIjAb"); 
 
169
    dpd_file2_init(&I, EOM_TMP, 0, 0, 1, "L2R1_ov");
 
170
    dpd_dot24(&I, &T2, &DIA, 0, 0, 1.0, 1.0);
 
171
    dpd_file2_close(&I);
 
172
    dpd_buf4_close(&T2);
 
173
 
 
174
    dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 2, 7, 0, "tijab"); 
 
175
    dpd_file2_init(&I, EOM_TMP, 0, 0, 1, "L2R1_ov");
 
176
    dpd_dot24(&I, &T2, &Dia, 0, 0, 1.0, 1.0);
 
177
    dpd_file2_close(&I);
 
178
    dpd_buf4_close(&T2);
 
179
 
 
180
    dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tiJaB"); 
 
181
    dpd_file2_init(&I, EOM_TMP, 0, 0, 1, "L2R1_OV");
 
182
    dpd_dot24(&I, &T2, &Dia, 0, 0, 1.0, 1.0);
 
183
    dpd_file2_close(&I);
 
184
    dpd_buf4_close(&T2);
 
185
    
 
186
    /* - (t1[i][e] * L2R1_ov[M][E]) * t1[m][a] */
 
187
 
 
188
    dpd_file2_init(&I, EOM_TMP, 0, 0, 1, "L2R1_OV");
 
189
    dpd_file2_init(&XIJ, EOM_TMP, 0, 0, 0, "XIJ");
 
190
    dpd_contract222(&TIA, &I, &XIJ, 0, 0, 1.0, 0.0);
 
191
    dpd_file2_close(&I);
 
192
 
 
193
    dpd_file2_init(&XIJ, EOM_TMP, 0, 0, 0, "XIJ");
 
194
    dpd_contract222(&XIJ, &TIA, &DIA, 0, 1, -1.0, 1.0);
 
195
    dpd_file2_close(&XIJ);
 
196
 
 
197
    dpd_file2_init(&I, EOM_TMP, 0, 0, 1, "L2R1_ov");
 
198
    dpd_file2_init(&Xij, EOM_TMP, 0, 0, 0, "Xij");
 
199
    dpd_contract222(&Tia, &I, &Xij, 0, 0, 1.0, 0.0);
 
200
    dpd_file2_close(&I);
 
201
 
 
202
    dpd_file2_init(&Xij, EOM_TMP, 0, 0, 0, "Xij");
 
203
    dpd_contract222(&Xij, &Tia, &Dia, 0, 1, -1.0, 1.0);
 
204
    dpd_file2_close(&Xij);
 
205
 
 
206
    dpd_file2_close(&DIA);
 
207
    dpd_file2_close(&Dia);
 
208
 
 
209
    dpd_file2_close(&TIA);
 
210
    dpd_file2_close(&Tia);
 
211
    dpd_file2_close(&RIA);
 
212
    dpd_file2_close(&Ria);
 
213
    dpd_file2_close(&LIA);
 
214
    dpd_file2_close(&Lia);
 
215
  }
 
216
}