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

« back to all changes in this revision

Viewing changes to src/bin/detcas/get_mo_info.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:
32
32
   int size;
33
33
   double *eig_unsrt;
34
34
 
 
35
   /* set these to NULL so we'll know which one(s) to free in cleanup */
 
36
   CalcInfo.mo_hess = NULL;
 
37
   CalcInfo.mo_hess_diag = NULL;
 
38
 
 
39
   /* information from checkpoint file */
35
40
   chkpt_init(PSIO_OPEN_OLD);
36
41
   CalcInfo.nirreps = chkpt_rd_nirreps();
37
 
   CalcInfo.nbfso = chkpt_rd_nmo();
 
42
   CalcInfo.nmo = chkpt_rd_nmo();
 
43
   CalcInfo.nbfso = chkpt_rd_nmo(); /* change to nbfso after conversion */
38
44
   CalcInfo.labels = chkpt_rd_irr_labs();
39
45
   CalcInfo.orbs_per_irr = chkpt_rd_orbspi();
40
46
   CalcInfo.enuc = chkpt_rd_enuc();
47
53
   CalcInfo.frozen_uocc = init_int_array(CalcInfo.nirreps);
48
54
   CalcInfo.rstr_docc = init_int_array(CalcInfo.nirreps);
49
55
   CalcInfo.rstr_uocc = init_int_array(CalcInfo.nirreps);
50
 
   CalcInfo.pitz2ci = init_int_array(CalcInfo.nbfso);
 
56
   CalcInfo.pitz2ci = init_int_array(CalcInfo.nmo);
51
57
   CalcInfo.ras_opi = init_int_matrix(MAX_RAS_SPACES,CalcInfo.nirreps);
52
58
      
53
 
   if (!ras_set2(CalcInfo.nirreps, CalcInfo.nbfso, 1, 0,
 
59
   if (!ras_set2(CalcInfo.nirreps, CalcInfo.nmo, 1, 1,
54
60
                CalcInfo.orbs_per_irr, CalcInfo.docc, CalcInfo.socc, 
55
61
                CalcInfo.frozen_docc, CalcInfo.frozen_uocc, 
56
62
                CalcInfo.rstr_docc, CalcInfo.rstr_uocc,
78
84
 
79
85
  /* construct the "ordering" array, which maps the other direction */
80
86
  /* i.e. from a CI orbital to a Pitzer orbital                     */
81
 
  CalcInfo.ci2pitz = init_int_array(CalcInfo.nbfso);
82
 
  for (i=0; i<CalcInfo.nbfso; i++) {
 
87
  CalcInfo.ci2pitz = init_int_array(CalcInfo.nmo);
 
88
  for (i=0; i<CalcInfo.nmo; i++) {
83
89
    j = CalcInfo.pitz2ci[i];
84
90
    CalcInfo.ci2pitz[j] = i;
85
91
  }
86
92
 
87
93
 
88
94
  /* Set up an array to map absolute ci order to relative Pitzer order */
89
 
  CalcInfo.ci2relpitz = init_int_array(CalcInfo.nbfso);
 
95
  CalcInfo.ci2relpitz = init_int_array(CalcInfo.nmo);
90
96
  for (h=0,cnt=0; h<CalcInfo.nirreps; h++) {
91
97
    for (i=0; i<CalcInfo.orbs_per_irr[h]; i++,cnt++) {
92
98
      j = CalcInfo.pitz2ci[cnt];
96
102
 
97
103
  if (Params.print_lvl > 4) {
98
104
    fprintf(outfile, "\nPitzer to CI order array = \n");
99
 
    for (i=0; i<CalcInfo.nbfso; i++) {
 
105
    for (i=0; i<CalcInfo.nmo; i++) {
100
106
      fprintf(outfile, "%3d ", CalcInfo.pitz2ci[i]);
101
107
    }
102
108
    fprintf(outfile, "\n");
103
109
  }
104
110
 
105
111
 
106
 
  CalcInfo.nbstri = (CalcInfo.nbfso * (CalcInfo.nbfso + 1)) / 2 ;
 
112
  CalcInfo.nbstri = (CalcInfo.nmo * (CalcInfo.nmo + 1)) / 2 ;
107
113
  check((CalcInfo.nbstri <= IOFF_MAX), 
108
114
        "(get_mo_info): IOFF_MAX may not large enough!");
109
115
 
110
116
  /* transform orbsym vector to new MO order */
111
 
  CalcInfo.orbsym = init_int_array(CalcInfo.nbfso);
 
117
  CalcInfo.orbsym = init_int_array(CalcInfo.nmo);
112
118
 
113
119
  for (i=0,cnt=0; i<CalcInfo.nirreps; i++) {
114
120
    for (j=0; j<CalcInfo.orbs_per_irr[i]; j++,cnt++) {
117
123
    }
118
124
  }
119
125
 
120
 
  CalcInfo.num_fzv_orbs = 0;
121
 
  for (i=0; i<CalcInfo.nirreps; i++) 
 
126
  CalcInfo.num_fzv_orbs = 0;  CalcInfo.num_vir_orbs = 0;
 
127
  for (i=0; i<CalcInfo.nirreps; i++) {
122
128
    CalcInfo.num_fzv_orbs += CalcInfo.frozen_uocc[i];  
 
129
    CalcInfo.num_vir_orbs += CalcInfo.rstr_uocc[i];
 
130
  }
123
131
 
124
 
  CalcInfo.npop = CalcInfo.nbfso - CalcInfo.num_fzv_orbs;
 
132
  CalcInfo.npop = CalcInfo.nmo - CalcInfo.num_fzv_orbs -
 
133
    CalcInfo.num_vir_orbs;
125
134
 
126
135
  CalcInfo.num_fzc_orbs = 0;
127
136
  CalcInfo.num_cor_orbs = 0;
128
 
  if (Params.fzc) {
129
 
    for (i=0; i<CalcInfo.nirreps; i++) {
130
 
      j = CalcInfo.frozen_docc[i];
131
 
      CalcInfo.num_fzc_orbs += j;
132
 
    }
 
137
  for (i=0; i<CalcInfo.nirreps; i++) {
 
138
    CalcInfo.num_fzc_orbs += CalcInfo.frozen_docc[i];
133
139
  } 
134
 
  else {
135
 
    for (i=0; i<CalcInfo.nirreps; i++) {
136
 
      CalcInfo.num_cor_orbs += CalcInfo.frozen_docc[i];
137
 
    } 
 
140
  for (i=0; i<CalcInfo.nirreps; i++) {
 
141
    CalcInfo.num_cor_orbs += CalcInfo.rstr_docc[i];
138
142
  }
139
143
 
140
144
  /* construct the CalcInfo.ras_orbs array (may not be of any use now) */
141
145
  cnt = 0;
142
 
  CalcInfo.fzc_orbs = init_int_matrix(CalcInfo.nirreps,CalcInfo.nbfso);
143
 
  CalcInfo.fzv_orbs = init_int_matrix(CalcInfo.nirreps,CalcInfo.nbfso);
 
146
  CalcInfo.fzc_orbs = init_int_matrix(CalcInfo.nirreps,CalcInfo.nmo);
 
147
  CalcInfo.cor_orbs = init_int_matrix(CalcInfo.nirreps,CalcInfo.nmo);
 
148
  CalcInfo.vir_orbs = init_int_matrix(CalcInfo.nirreps,CalcInfo.nmo);
 
149
  CalcInfo.fzv_orbs = init_int_matrix(CalcInfo.nirreps,CalcInfo.nmo);
 
150
 
 
151
  /* FZC */
144
152
  for (irrep=0; irrep<CalcInfo.nirreps; irrep++)
145
153
    for (j=0; j<CalcInfo.frozen_docc[irrep]; j++)
146
154
      CalcInfo.fzc_orbs[irrep][j] = cnt++;
147
155
 
 
156
  /* COR */
 
157
  for (irrep=0; irrep<CalcInfo.nirreps; irrep++)
 
158
    for (j=0; j<CalcInfo.rstr_docc[irrep]; j++)
 
159
      CalcInfo.cor_orbs[irrep][j] = cnt++;
 
160
 
 
161
  /* RAS */
148
162
  CalcInfo.ras_orbs = (int ***) malloc (MAX_RAS_SPACES * sizeof(int **));
149
163
  for (i=0; i<MAX_RAS_SPACES; i++) {
150
164
    CalcInfo.ras_orbs[i] = init_int_matrix(CalcInfo.nirreps,
151
 
      CalcInfo.nbfso);
 
165
      CalcInfo.nmo);
152
166
    for (irrep=0; irrep<CalcInfo.nirreps; irrep++) {
153
167
      for (j=0; j<CalcInfo.ras_opi[i][irrep]; j++) {
154
168
        CalcInfo.ras_orbs[i][irrep][j] = cnt++;
156
170
    }
157
171
  }
158
172
 
 
173
  /* VIR */
 
174
  for (irrep=0; irrep<CalcInfo.nirreps; irrep++)
 
175
    for (j=0; j<CalcInfo.rstr_uocc[irrep]; j++)
 
176
      CalcInfo.vir_orbs[irrep][j] = cnt++;
 
177
 
 
178
  /* FZV */
159
179
  for (irrep=0; irrep<CalcInfo.nirreps; irrep++)
160
180
    for (j=0; j<CalcInfo.frozen_uocc[irrep]; j++)
161
181
      CalcInfo.fzv_orbs[irrep][j] = cnt++;
168
188
  CalcInfo.fstact = init_int_array(CalcInfo.nirreps);
169
189
  CalcInfo.lstact = init_int_array(CalcInfo.nirreps);
170
190
  CalcInfo.active = init_int_array(CalcInfo.nirreps);
 
191
 
 
192
  /* I think I never use this... --CDS 6/12/04
171
193
  pitzer_arrays(CalcInfo.nirreps, CalcInfo.frozen_docc, CalcInfo.frozen_uocc,
172
194
                CalcInfo.orbs_per_irr, CalcInfo.first, CalcInfo.last,
173
195
                CalcInfo.fstact, CalcInfo.lstact, CalcInfo.active);
 
196
  */
174
197
 
175
198
  /* allocate memory to store the MO coefficient matrix symm blocked */
176
199
 
188
211
    for (i=0; i<CalcInfo.nirreps; i++) {
189
212
      fprintf(outfile, "%2d ", CalcInfo.frozen_docc[i]);
190
213
    }
191
 
    fprintf(outfile, "\n   RESTR_DOCC   = ");
 
214
    fprintf(outfile, "\n   RESTR_DOCC    = ");
192
215
    for (i=0; i<CalcInfo.nirreps; i++) {
193
216
      fprintf(outfile, "%2d ", CalcInfo.rstr_docc[i]);
194
217
    }
200
223
    for (i=0; i<CalcInfo.nirreps; i++) {
201
224
      fprintf(outfile, "%2d ", CalcInfo.socc[i]);
202
225
    }
203
 
    fprintf(outfile, "\n   RESTR_UOCC   = ");
 
226
    fprintf(outfile, "\n   RESTR_UOCC    = ");
204
227
    for (i=0; i<CalcInfo.nirreps; i++) {
205
228
      fprintf(outfile, "%2d ", CalcInfo.rstr_uocc[i]);
206
229
    }
217
240
    }
218
241
    fprintf(outfile, "\n");
219
242
 
220
 
    fprintf(outfile, "   MOL ORBS      =   %6d\n", CalcInfo.nbfso);
 
243
    fprintf(outfile, "   MOL ORBS      =   %6d\n", CalcInfo.nmo);
221
244
    fprintf(outfile, "   FROZEN CORE   =   %6d      RESTR CORE   =   %6d\n",
222
245
        CalcInfo.num_fzc_orbs, CalcInfo.num_cor_orbs);
223
246
    fprintf(outfile, "\n");