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

« back to all changes in this revision

Viewing changes to src/bin/ccdensity/x_xi1_rhf.cc

  • 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
/*! \file
 
2
    \ingroup CCDENSITY
 
3
    \brief Enter brief description of file here 
 
4
*/
 
5
#include <cstdio>
 
6
#include <libdpd/dpd.h>
 
7
#include "MOInfo.h"
 
8
#include "Params.h"
 
9
#include "Frozen.h"
 
10
#define EXTERN
 
11
#include "globals.h"
 
12
 
 
13
namespace psi { namespace ccdensity {
 
14
 
 
15
extern void x_xi_check(char *term_lbl);
 
16
extern void x_xi1_connected(void);
 
17
 
 
18
/* compute xi_1 amplitudes for zeta equations */
 
19
 
 
20
void x_xi1_rhf(void)
 
21
{
 
22
  dpdfile2 L1, XIA, Xia, I1, R1, F1, Z1A, Z1B;
 
23
  int L_irr, R_irr, G_irr;
 
24
  dpdbuf4 D, R2, L2, H2, I2, Z2;
 
25
 
 
26
  L_irr = params.L_irr;
 
27
  R_irr = params.R_irr;
 
28
  G_irr = params.G_irr;
 
29
 
 
30
#ifdef DEBUG_XI
 
31
x_xi_check("begin xi1");
 
32
#endif
 
33
  /* term 1, XIA += 0.25 LIA Rmnef <mn||ef> */
 
34
  if ((R_irr == 0)  && (!params.connect_xi)) {
 
35
    dpd_file2_init(&I1, EOM_TMP_XI, R_irr, 0, 0, "RD_OO");
 
36
    params.RD_overlap = dpd_file2_trace(&I1);
 
37
    dpd_file2_close(&I1);
 
38
    dpd_file2_init(&L1, CC_GL, L_irr, 0, 1, "LIA");
 
39
    dpd_file2_copy(&L1, EOM_XI, "XIA");
 
40
    dpd_file2_close(&L1);
 
41
    dpd_file2_init(&L1, EOM_XI, G_irr, 0, 1, "XIA");
 
42
    dpd_file2_scm(&L1, params.RD_overlap);
 
43
    dpd_file2_close(&L1);
 
44
  }
 
45
#ifdef DEBUG_XI
 
46
x_xi_check("term 1");
 
47
#endif
 
48
 
 
49
  /* term 2, Xia -= (Rmnef <in||ef>) * Lma */
 
50
  dpd_file2_init(&XIA, EOM_XI, G_irr, 0, 1, "XIA");
 
51
  dpd_file2_init(&I1, EOM_TMP_XI, R_irr, 0, 0, "RD_OO");
 
52
  dpd_file2_init(&L1, CC_GL, L_irr, 0, 1, "LIA");
 
53
  dpd_contract222(&I1, &L1, &XIA, 1, 1, -1.0, 1.0);
 
54
  dpd_file2_close(&L1);
 
55
  dpd_file2_close(&I1);
 
56
  dpd_file2_close(&XIA);
 
57
#ifdef DEBUG_XI
 
58
x_xi_check("term 2");
 
59
#endif
 
60
 
 
61
  /* term 3, XIA -= 0.5 LIE (Rmnfe <mn||fa>) */
 
62
  dpd_file2_init(&XIA, EOM_XI, G_irr, 0, 1, "XIA");
 
63
  dpd_file2_init(&L1, CC_GL, L_irr, 0, 1, "LIA");
 
64
  dpd_file2_init(&I1, EOM_TMP_XI, R_irr, 1, 1, "RD_VV");
 
65
  dpd_contract222(&L1, &I1, &XIA, 0, 1, -1.0, 1.0);
 
66
  dpd_file2_close(&I1);
 
67
  dpd_file2_close(&L1);
 
68
  dpd_file2_close(&XIA);
 
69
#ifdef DEBUG_XI
 
70
x_xi_check("term 3");
 
71
#endif
 
72
 
 
73
  /* term 4, XIA += (Lme Rmnef) <in||af> */
 
74
  dpd_file2_init(&XIA, EOM_XI, G_irr, 0, 1, "XIA");
 
75
  dpd_file2_init(&I1, EOM_TMP, G_irr, 0, 1, "L1R2_OV");
 
76
  dpd_buf4_init(&D, CC_DINTS, 0, 0, 5, 0, 5, 0, "D 2<ij|ab> - <ij|ba>");
 
77
  dpd_dot24(&I1, &D, &XIA, 0, 0, 1.0, 1.0);
 
78
  dpd_buf4_close(&D);
 
79
  dpd_file2_close(&I1);
 
80
  dpd_file2_close(&XIA);
 
81
#ifdef DEBUG_XI
 
82
x_xi_check("term 4");
 
83
#endif
 
84
 
 
85
  /* term 5, XIA += (Lmnef * Rmnef) FIA */ 
 
86
  dpd_file2_init(&R1, CC_GR, R_irr, 0, 1, "RIA");
 
87
  dpd_file2_init(&L1, CC_GL, L_irr, 0, 1, "LIA");
 
88
  params.overlap1 = 2.0 * dpd_file2_dot(&R1, &L1);
 
89
  dpd_file2_close(&R1);
 
90
  dpd_file2_close(&L1);
 
91
  params.overlap2 = 1.0e0 - params.overlap1 - (params.R0 * params.L0);
 
92
 
 
93
  /* When (connect_xi), we still include the following term, even though Hbar
 
94
     is not connected to R.  The <Rmnef|Lmnef> Fia term here along with the
 
95
     <Rme|Lme> Fia term which is _not_ substracted out in xi_connected add up
 
96
     to (1)*Fia.  This constant term causes cclambda to be solving the
 
97
     ground-state lambda equations implicitly when it solves for zeta. */
 
98
  dpd_file2_init(&XIA, EOM_XI, G_irr, 0, 1, "XIA");
 
99
  dpd_file2_init(&F1, CC_OEI, 0, 0, 1, "FME");
 
100
  dpd_file2_axpy(&F1, &XIA, params.overlap2, 0);
 
101
  dpd_file2_close(&F1);
 
102
  dpd_file2_close(&XIA);
 
103
#ifdef DEBUG_XI
 
104
x_xi_check("term 5");
 
105
#endif
 
106
 
 
107
  /* term 6, XIA -= (0.5 Linef Rmnef) Fma */
 
108
  dpd_file2_init(&XIA, EOM_XI, G_irr, 0, 1, "XIA");
 
109
  dpd_file2_init(&I1, EOM_TMP, G_irr, 0, 0, "LR2_OO");
 
110
  dpd_file2_init(&F1, CC_OEI, 0, 0, 1, "FME");
 
111
  dpd_contract222(&I1, &F1, &XIA, 0, 1, -1.0, 1.0);
 
112
  dpd_file2_close(&F1);
 
113
  dpd_file2_close(&I1);
 
114
  dpd_file2_close(&XIA);
 
115
#ifdef DEBUG_XI
 
116
x_xi_check("term 6");
 
117
#endif
 
118
 
 
119
  /* term 7, XIA -= (0.5 Lmnaf Rmnef) Fie */
 
120
  dpd_file2_init(&XIA, EOM_XI, G_irr, 0, 1, "XIA");
 
121
  dpd_file2_init(&I1, EOM_TMP, G_irr, 1, 1, "LR2_VV");
 
122
  dpd_file2_init(&F1, CC_OEI, 0, 0, 1, "FME");
 
123
  dpd_contract222(&F1, &I1, &XIA, 0, 0, -1.0, 1.0);
 
124
  dpd_file2_close(&F1);
 
125
  dpd_file2_close(&I1);
 
126
  dpd_file2_close(&XIA);
 
127
#ifdef DEBUG_XI
 
128
x_xi_check("term 7");
 
129
#endif
 
130
 
 
131
  if (!params.connect_xi) {
 
132
    /* term 8, XIA += (Fme Rmnef) Linaf) */
 
133
    dpd_file2_init(&I1, EOM_TMP1, R_irr, 0, 1, "Z(N,F)");
 
134
    dpd_file2_init(&F1, CC_OEI, 0, 0, 1, "FME");
 
135
    dpd_buf4_init(&R2, CC_GR, R_irr, 0, 5, 0, 5, 0, "2RIjAb - RIjbA");
 
136
    dpd_dot13(&F1, &R2, &I1, 0, 0, 1.0, 0.0);
 
137
    dpd_buf4_close(&R2);
 
138
    dpd_file2_close(&F1);
 
139
    dpd_file2_init(&XIA, EOM_XI, G_irr, 0, 1, "XIA");
 
140
    dpd_buf4_init(&L2, CC_GL, L_irr, 0, 5, 0, 5, 0, "2LIjAb - LIjbA");
 
141
    dpd_dot24(&I1, &L2, &XIA, 0, 0, 1.0, 1.0);
 
142
    dpd_buf4_close(&L2);
 
143
    dpd_file2_close(&XIA);
 
144
    dpd_file2_close(&I1);
 
145
#ifdef DEBUG_XI
 
146
x_xi_check("term 8");
 
147
#endif
 
148
  }
 
149
 
 
150
  /* term 9, XIA -= (0.5 Lmnef Rmoef) Woina */
 
151
  dpd_file2_init(&XIA, EOM_XI, G_irr, 0, 1, "XIA");
 
152
  dpd_file2_init(&I1, EOM_TMP, G_irr, 0, 0, "LR2_OO");
 
153
  dpd_buf4_init(&H2, CC_HBAR, 0, 0, 11, 0, 11, 0, "2WMnIe - WnMIe (Mn,eI)");
 
154
  dpd_dot14(&I1, &H2, &XIA, 1, 0, -1.0, 1.0);
 
155
  dpd_buf4_close(&H2);
 
156
  dpd_file2_close(&I1);
 
157
  dpd_file2_close(&XIA);
 
158
#ifdef DEBUG_XI
 
159
x_xi_check("term 9");
 
160
#endif
 
161
 
 
162
/*  term 10 XIA += (0.5 Lmnef Rmneg) Wfiga */
 
163
  dpd_file2_init(&XIA, EOM_XI, G_irr, 0, 1, "XIA");
 
164
  dpd_file2_init(&I1, EOM_TMP, G_irr, 1, 1, "LR2_VV");
 
165
  dpd_buf4_init(&H2, CC_HBAR, 0, 11, 5, 11, 5, 0, "WAmEf 2(Am,Ef) - (Am,fE)");
 
166
  dpd_dot13(&I1, &H2, &XIA, 0, 0, 1.0, 1.0);
 
167
  dpd_buf4_close(&H2);
 
168
  dpd_file2_close(&I1);
 
169
  dpd_file2_close(&XIA);
 
170
#ifdef DEBUG_XI
 
171
x_xi_check("term 10");
 
172
#endif
 
173
 
 
174
/*  term 11 XIA -= Rmnef Lmoea Winof */
 
175
  dpd_buf4_init(&H2, CC_HBAR, 0, 0, 11, 0, 11, 0, "WMnIe - 2WnMIe (Mn,eI)");
 
176
  dpd_buf4_sort(&H2, EOM_TMP1, qrsp, 10, 0, "WMnIe - 2WnMIe qrsp");
 
177
  dpd_buf4_close(&H2);
 
178
  dpd_buf4_init(&H2, CC_HBAR, 0, 0, 11, 0, 11, 0, "2WMnIe - WnMIe (Mn,eI)");
 
179
  dpd_buf4_sort(&H2, EOM_TMP1, qrsp, 10, 0, "2WMnIe - WnMIe qrsp");
 
180
  dpd_buf4_close(&H2);
 
181
 
 
182
  dpd_file2_init(&XIA, EOM_XI, G_irr, 0, 1, "XIA");
 
183
  dpd_buf4_init(&H2, EOM_TMP1, 0, 10, 0, 10, 0, 0, "2WMnIe - WnMIe qrsp");
 
184
  dpd_buf4_init(&I2, EOM_TMP, G_irr, 10, 10, 10, 10, 0, "R2L2_OVov");
 
185
  dpd_contract442(&H2, &I2, &XIA, 3, 3, -1.0, 1.0);
 
186
  dpd_buf4_close(&I2);
 
187
  dpd_buf4_close(&H2);
 
188
  dpd_buf4_init(&H2, EOM_TMP1, 0, 10, 0, 10, 0, 0, "WMnIe - 2WnMIe qrsp");
 
189
  dpd_buf4_init(&I2, EOM_TMP, G_irr, 10, 10, 10, 10, 0, "R2L2_OvOv");
 
190
  dpd_contract442(&H2, &I2, &XIA, 3, 3, -1.0, 1.0);
 
191
  dpd_buf4_close(&I2);
 
192
  dpd_buf4_close(&H2);
 
193
  dpd_file2_close(&XIA);
 
194
#ifdef DEBUG_XI
 
195
x_xi_check("term 11");
 
196
#endif
 
197
 
 
198
/* term 12, + (Rmnef Lmieg) Wgnaf */
 
199
  dpd_buf4_init(&I2, EOM_TMP, G_irr, 10, 10, 10, 10, 0, "R2L2_OvOv");
 
200
  dpd_buf4_copy(&I2, EOM_TMP1, "R2L2 2OVov + OvOv");
 
201
  dpd_buf4_close(&I2);
 
202
  dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "R2L2 2OVov + OvOv");
 
203
  dpd_buf4_init(&I2, EOM_TMP, G_irr, 10, 10, 10, 10, 0, "R2L2_OVov");
 
204
  dpd_buf4_axpy(&I2, &Z2, 2.0);
 
205
  dpd_buf4_close(&I2);
 
206
  dpd_buf4_sort(&Z2, EOM_TMP1, sprq, 11, 10, "2OVov + OvOv (Gn,If)"); 
 
207
  dpd_buf4_close(&Z2);
 
208
 
 
209
  dpd_buf4_init(&I2, EOM_TMP, G_irr, 10, 10, 10, 10, 0, "R2L2_OVov");
 
210
  dpd_buf4_copy(&I2, EOM_TMP1, "R2L2 OVov + 2OvOv");
 
211
  dpd_buf4_close(&I2);
 
212
  dpd_buf4_init(&Z2, EOM_TMP1, G_irr, 10, 10, 10, 10, 0, "R2L2 OVov + 2OvOv");
 
213
  dpd_buf4_init(&I2, EOM_TMP, G_irr, 10, 10, 10, 10, 0, "R2L2_OvOv");
 
214
  dpd_buf4_axpy(&I2, &Z2, 2.0);
 
215
  dpd_buf4_close(&I2);
 
216
  dpd_buf4_sort(&Z2, EOM_TMP1, spqr, 11, 11, "OVov + 2OvOv (Gn,fI)"); 
 
217
  dpd_buf4_close(&Z2);
 
218
 
 
219
  dpd_file2_init(&XIA, EOM_XI, G_irr, 0, 1, "XIA");
 
220
  dpd_buf4_init(&I2, EOM_TMP1, G_irr, 11, 10, 11, 10, 0, "2OVov + OvOv (Gn,If)");
 
221
  dpd_buf4_init(&H2, CC_HBAR, 0, 11, 5, 11, 5, 0, "WAmEf");
 
222
  dpd_contract442(&I2, &H2, &XIA, 2, 2, 1.0, 1.0);
 
223
  dpd_buf4_close(&I2);
 
224
  dpd_buf4_init(&I2, EOM_TMP1, G_irr, 11, 11, 11, 11, 0, "OVov + 2OvOv (Gn,fI)");
 
225
  dpd_contract442(&I2, &H2, &XIA, 3, 3, -1.0, 1.0);
 
226
  dpd_buf4_close(&H2);
 
227
  dpd_buf4_close(&I2);
 
228
  dpd_file2_close(&XIA);
 
229
#ifdef DEBUG_XI
 
230
x_xi_check("term 12");
 
231
#endif
 
232
 
 
233
/* term 13 -0.25 (Rmnfg Weifg) Lmnea */
 
234
  dpd_file2_init(&XIA, EOM_XI, G_irr, 0, 1, "XIA");
 
235
  dpd_buf4_init(&I2, EOM_TMP, R_irr, 0, 10, 0, 10, 0, "R2Wamef_OoOv");
 
236
  dpd_buf4_init(&L2, CC_GL, L_irr, 0, 5, 0, 5, 0, "2LIjAb - LIjbA");
 
237
  dpd_contract442(&I2, &L2, &XIA, 2, 2, 1.0, 1.0);
 
238
  dpd_buf4_close(&L2);
 
239
  dpd_buf4_close(&I2);
 
240
  dpd_file2_close(&XIA);
 
241
#ifdef DEBUG_XI
 
242
x_xi_check("term 13");
 
243
#endif
 
244
 
 
245
  /* term 14, +0.25 * (Rmnef Loief) * Wmnoa */
 
246
  dpd_file2_init(&XIA, EOM_XI, G_irr, 0, 1, "XIA");
 
247
  dpd_buf4_init(&H2, CC_HBAR, 0, 0, 10, 0, 10, 0, "2WMnIe - WnMIe");
 
248
  dpd_buf4_init(&I2, EOM_TMP, G_irr, 0, 0, 0, 0, 0, "R2L2_OoOo");
 
249
  dpd_contract442(&I2, &H2, &XIA, 3, 3, 1.0, 1.0);
 
250
  dpd_buf4_close(&I2);
 
251
  dpd_buf4_close(&H2);
 
252
  dpd_file2_close(&XIA);
 
253
#ifdef DEBUG_XI
 
254
x_xi_check("term 14");
 
255
#endif
 
256
 
 
257
  /* term 15 Linag (Rnmef Wgmef) */
 
258
  if (!params.connect_xi) {
 
259
    dpd_file2_init(&XIA, EOM_XI, G_irr, 0, 1, "XIA");
 
260
    dpd_file2_init(&I1, EOM_TMP, R_irr, 0, 1, "R2Wamef_OV");
 
261
    dpd_buf4_init(&L2, CC_GL, L_irr, 0, 5, 0, 5, 0, "2LIjAb - LIjbA");
 
262
    dpd_dot24(&I1, &L2, &XIA, 0, 0, 1.0, 1.0);
 
263
    dpd_buf4_close(&L2);
 
264
    dpd_file2_close(&I1);
 
265
    dpd_file2_close(&XIA);
 
266
#ifdef DEBUG_XI
 
267
x_xi_check("term 15");
 
268
#endif
 
269
  }
 
270
 
 
271
  /*  term 16 XIA += 0.5 Lioaf (Rmnef Wmnoe) */
 
272
  if (!params.connect_xi) {
 
273
    dpd_file2_init(&Z1A, EOM_TMP1, R_irr, 0, 1, "Z(O,F)");
 
274
    dpd_buf4_init(&H2, CC_HBAR, 0, 0, 11, 0, 11, 0, "WMnIe - 2WnMIe (Mn,eI)");
 
275
    dpd_buf4_init(&R2, CC_GR, R_irr, 0, 5, 0, 5, 0, "RIjAb");
 
276
    dpd_contract442(&H2, &R2, &Z1A, 3, 3, 1.0, 0.0);
 
277
    dpd_buf4_close(&R2);
 
278
    dpd_buf4_close(&H2);
 
279
    dpd_file2_init(&XIA, EOM_XI, G_irr, 0, 1, "XIA");
 
280
    dpd_buf4_init(&L2, CC_GL, L_irr, 0, 5, 0, 5, 0, "2LIjAb - LIjbA");
 
281
    dpd_dot24(&Z1A, &L2, &XIA, 0, 0, 1.0, 1.0);
 
282
    dpd_buf4_close(&L2);
 
283
    dpd_file2_close(&XIA);
 
284
    dpd_file2_close(&Z1A);
 
285
#ifdef DEBUG_XI
 
286
x_xi_check("term 16");
 
287
#endif
 
288
  }
 
289
 
 
290
  if (params.connect_xi) x_xi1_connected();
 
291
  
 
292
  return;
 
293
}
 
294
 
 
295
}} // namespace psi::ccdensity