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

« back to all changes in this revision

Viewing changes to src/bin/cchbar/Wmbej.c

  • Committer: Bazaar Package Importer
  • Author(s): Michael Banck
  • Date: 2008-06-07 16:49:57 UTC
  • mfrom: (2.1.2 hardy)
  • Revision ID: james.westby@ubuntu.com-20080607164957-8pifvb133yjlkagn
Tags: 3.3.0-3
* debian/rules (DEB_MAKE_CHECK_TARGET): Do not abort test suite on
  failures.
* debian/rules (DEB_CONFIGURE_EXTRA_FLAGS): Set ${bindir} to /usr/lib/psi.
* debian/rules (install/psi3): Move psi3 file to /usr/bin.
* debian/patches/07_464867_move_executables.dpatch: New patch, add
  /usr/lib/psi to the $PATH, so that the moved executables are found.
  (closes: #464867)
* debian/patches/00list: Adjusted.

Show diffs side-by-side

added added

removed removed

Lines of Context:
30
30
void Wmbej_build(void) {
31
31
  dpdbuf4 WMBEJ, Wmbej, WMbEj, WmBeJ, WmBEj, WMbeJ;
32
32
  dpdbuf4 tIAJB, tjAIb, tiajb, tIAjb, tiaJB, tIbjA;
33
 
  dpdbuf4 D, C, F, E, X, Y, t2, W;
 
33
  dpdbuf4 D, C, F, E, X, Y, t2, W, Z;
34
34
  dpdfile2 tIA, tia;
35
 
 
36
 
  if(params.ref == 0 || params.ref == 1) { /** RHF or ROHF **/
 
35
  int Gmb, mb, Gj, Ge, Gf, nrows, ncols, nlinks;
 
36
 
 
37
  if(params.ref == 0) { /** RHF **/
 
38
 
 
39
    /* <mb||ej> -> Wmbej */
 
40
 
 
41
    dpd_buf4_init(&C, CC_CINTS, 0, 10, 10, 10, 10, 0, "C <ia|jb>");
 
42
    dpd_buf4_scmcopy(&C, CC_TMP0, "WMbeJ", -1);
 
43
    dpd_buf4_close(&C);
 
44
 
 
45
    dpd_buf4_init(&D, CC_DINTS, 0, 10, 11, 10, 11, 0, "D <ij|ab> (ib,aj)");
 
46
    dpd_buf4_copy(&D, CC_TMP0, "WMbEj");
 
47
    dpd_buf4_close(&D);
 
48
 
 
49
    dpd_file2_init(&tIA, CC_OEI, 0, 0, 1, "tIA");
 
50
 
 
51
    /* F -> Wmbej */
 
52
 
 
53
    dpd_buf4_init(&F, CC_FINTS, 0, 10, 5, 10, 5, 0, "F <ia|bc>");
 
54
 
 
55
    dpd_buf4_init(&WMbEj, CC_TMP0, 0, 10, 11, 10, 11, 0, "WMbEj");
 
56
    dpd_contract424(&F, &tIA, &WMbEj, 3, 1, 0, 1, 1); /* should run OOC, if needed */
 
57
    dpd_buf4_close(&WMbEj);
 
58
 
 
59
    dpd_buf4_close(&F);
 
60
 
 
61
    /*
 
62
    dpd_buf4_init(&F, CC_FINTS, 0, 11, 5, 11, 5, 0, "F <ai|bc>");
 
63
 
 
64
    dpd_buf4_init(&Z, CC_TMP0, 0, 11, 11, 11, 11, 0, "Z(bM,eJ)");
 
65
    dpd_contract424(&F, &tIA, &Z, 3, 1, 0, -1, 0);
 
66
    dpd_buf4_sort(&Z, CC_TMP0, qpsr, 10, 10, "Z(Mb,Je)");
 
67
    dpd_buf4_close(&Z);
 
68
    dpd_buf4_init(&Z, CC_TMP0, 0, 10, 10, 10, 10, 0, "Z(Mb,Je)");
 
69
    dpd_buf4_init(&WMbeJ, CC_TMP0, 0, 10, 10, 10, 10, 0, "WMbeJ");
 
70
    dpd_buf4_axpy(&Z, &WMbeJ, 1.0);
 
71
    dpd_buf4_close(&WMbeJ);
 
72
    dpd_buf4_close(&Z);
 
73
 
 
74
    dpd_buf4_close(&F);
 
75
    */
 
76
    /* W(Mb,Je) <-- t(J,F) <Mb|Fe> */
 
77
    /* OOC code added to replace above on 3/26/05, TDC */
 
78
    dpd_buf4_init(&F, CC_FINTS, 0, 10, 5, 10, 5, 0, "F <ia|bc>");
 
79
    dpd_buf4_init(&W, CC_TMP0, 0, 10, 10, 10, 10, 0, "WMbeJ");
 
80
    dpd_file2_mat_init(&tIA);
 
81
    dpd_file2_mat_rd(&tIA);
 
82
 
 
83
    for(Gmb=0; Gmb < moinfo.nirreps; Gmb++) {
 
84
      dpd_buf4_mat_irrep_row_init(&W, Gmb);
 
85
      dpd_buf4_mat_irrep_row_init(&F, Gmb);
 
86
 
 
87
      for(mb=0; mb < F.params->rowtot[Gmb]; mb++) {
 
88
        dpd_buf4_mat_irrep_row_rd(&W, Gmb, mb);
 
89
        dpd_buf4_mat_irrep_row_rd(&F, Gmb, mb);
 
90
 
 
91
        for(Gj=0; Gj < moinfo.nirreps; Gj++) {
 
92
          Gf = Gj;  /* T1 is totally symmetric */
 
93
          Ge = Gmb ^ Gf; /* <mb|fe> is totally symmetric */
 
94
 
 
95
          nrows = moinfo.occpi[Gj];
 
96
          ncols = moinfo.virtpi[Ge];
 
97
          nlinks = moinfo.virtpi[Gf];
 
98
          if(nrows && ncols && nlinks)
 
99
            C_DGEMM('n','n',nrows,ncols,nlinks,-1.0,tIA.matrix[Gj][0],nlinks,
 
100
                    &F.matrix[Gmb][0][F.col_offset[Gmb][Gf]],ncols,1.0,
 
101
                    &W.matrix[Gmb][0][W.col_offset[Gmb][Gj]],ncols);
 
102
        }
 
103
 
 
104
        dpd_buf4_mat_irrep_row_wrt(&W, Gmb, mb);
 
105
      }
 
106
 
 
107
      dpd_buf4_mat_irrep_row_close(&F, Gmb);
 
108
      dpd_buf4_mat_irrep_row_close(&W, Gmb);
 
109
    }
 
110
 
 
111
    dpd_file2_mat_close(&tIA);
 
112
    dpd_buf4_close(&W);
 
113
    dpd_buf4_close(&F);
 
114
 
 
115
 
 
116
    dpd_file2_close(&tIA);
 
117
 
 
118
    /* E -> Wmbej */
 
119
    dpd_file2_init(&tIA, CC_OEI, 0, 0, 1, "tIA");
 
120
 
 
121
    dpd_buf4_init(&E, CC_EINTS, 0, 11, 0, 11, 0, 0, "E <ai|jk>");
 
122
    dpd_buf4_init(&WMbEj, CC_TMP0, 0, 10, 11, 10, 11, 0, "WMbEj");
 
123
    dpd_contract424(&E, &tIA, &WMbEj, 3, 0, 1, -1, 1);
 
124
    dpd_buf4_close(&WMbEj);
 
125
    dpd_buf4_close(&E);
 
126
 
 
127
    dpd_buf4_init(&E, CC_EINTS, 0, 0, 10, 0, 10, 0, "E <ij|ka>");
 
128
    dpd_buf4_init(&WMbeJ, CC_TMP0, 0, 10, 10, 10, 10, 0, "WMbeJ");
 
129
    dpd_contract424(&E, &tIA, &WMbeJ, 1, 0, 1, 1, 1);
 
130
    dpd_buf4_close(&WMbeJ);
 
131
    dpd_buf4_close(&E);
 
132
 
 
133
    dpd_file2_close(&tIA);  
 
134
 
 
135
 
 
136
    /* Sort to (ME,JB) */
 
137
 
 
138
    dpd_buf4_init(&WMbEj, CC_TMP0, 0, 10, 11, 10, 11, 0, "WMbEj");
 
139
    dpd_buf4_sort(&WMbEj, CC_HBAR, prsq, 10, 10, "WMbEj");
 
140
    dpd_buf4_close(&WMbEj);
 
141
 
 
142
    dpd_buf4_init(&WMbeJ, CC_TMP0, 0, 10, 10, 10, 10, 0, "WMbeJ");
 
143
    dpd_buf4_sort(&WMbeJ, CC_HBAR, psrq, 10, 10, "WMbeJ");
 
144
    dpd_buf4_close(&WMbeJ);
 
145
 
 
146
 
 
147
    /* T1^2 -> Wmbej */
 
148
 
 
149
    dpd_file2_init(&tIA, CC_OEI, 0, 0, 1, "tIA");
 
150
 
 
151
    /*** ABAB ***/
 
152
 
 
153
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 10, 10, 10, 0, "WMbEj");
 
154
    dpd_buf4_init(&t2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "tIAjb");
 
155
    dpd_buf4_init(&D, CC_DINTS, 0, 10, 10, 10, 10, 0, "D 2<ij|ab> - <ij|ba> (ia,jb)");
 
156
    dpd_contract444(&D, &t2, &W, 0, 0, 1, 1);
 
157
    dpd_buf4_close(&D);
 
158
    dpd_buf4_close(&t2);
 
159
    dpd_buf4_init(&t2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "tjAIb");
 
160
    dpd_buf4_init(&D, CC_DINTS, 0, 10, 10, 10, 10, 0, "D <ij|ab> (ia,jb)");
 
161
    dpd_contract444(&D, &t2, &W, 0, 0, -1, 1);
 
162
    dpd_buf4_close(&D);
 
163
    dpd_buf4_close(&t2);
 
164
    dpd_buf4_close(&W);
 
165
 
 
166
    dpd_buf4_init(&Y, CC_TMP0, 0, 10, 0, 10, 0, 0, "Y (ME,JN)");
 
167
    dpd_buf4_init(&D, CC_DINTS, 0, 10, 11, 10, 11, 0, "D <ij|ab> (ia,bj)");
 
168
    dpd_contract244(&tIA, &D, &Y, 1, 2, 1, 1, 0);
 
169
    dpd_buf4_close(&D);
 
170
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 10, 10, 10, 0, "WMbEj");
 
171
    dpd_contract424(&Y, &tIA, &W, 3, 0, 0, -1, 1);
 
172
    dpd_buf4_close(&W);
 
173
    dpd_buf4_close(&Y);
 
174
 
 
175
    /*** ABBA ***/
 
176
  
 
177
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 10, 10, 10, 0, "WMbeJ");
 
178
    dpd_buf4_init(&t2, CC_TAMPS, 0, 10, 10, 10, 10, 0, "tIbjA");
 
179
    dpd_buf4_init(&D, CC_DINTS, 0, 10, 10, 10, 10, 0, "D <ij|ab> (ib,ja)");
 
180
    dpd_contract444(&D, &t2, &W, 0, 0, 1, 1);
 
181
    dpd_buf4_close(&D);
 
182
    dpd_buf4_close(&t2);
 
183
    dpd_buf4_close(&W);
 
184
 
 
185
    dpd_buf4_init(&Y, CC_TMP0, 0, 10, 0, 10, 0, 0, "Y (ME,JN)");
 
186
    dpd_buf4_init(&D, CC_DINTS, 0, 10, 11, 10, 11, 0, "D <ij|ab> (ib,aj)");
 
187
    dpd_contract244(&tIA, &D, &Y, 1, 2, 1, 1, 0);
 
188
    dpd_buf4_close(&D);
 
189
    dpd_buf4_init(&W, CC_HBAR, 0, 10, 10, 10, 10, 0, "WMbeJ");
 
190
    dpd_contract424(&Y, &tIA, &W, 3, 0, 0, 1, 1);
 
191
    dpd_buf4_close(&W);
 
192
    dpd_buf4_close(&Y);
 
193
 
 
194
    dpd_file2_close(&tIA);
 
195
 
 
196
  }
 
197
  else if(params.ref == 1) { /** ROHF **/
37
198
 
38
199
    /* W(mb,je) <-- <mb||ej> */
39
200