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;
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);
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,
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;
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];
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]);
102
108
fprintf(outfile, "\n");
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!");
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);
113
119
for (i=0,cnt=0; i<CalcInfo.nirreps; i++) {
114
120
for (j=0; j<CalcInfo.orbs_per_irr[i]; j++,cnt++) {
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];
124
CalcInfo.npop = CalcInfo.nbfso - CalcInfo.num_fzv_orbs;
132
CalcInfo.npop = CalcInfo.nmo - CalcInfo.num_fzv_orbs -
133
CalcInfo.num_vir_orbs;
126
135
CalcInfo.num_fzc_orbs = 0;
127
136
CalcInfo.num_cor_orbs = 0;
129
for (i=0; i<CalcInfo.nirreps; i++) {
130
j = CalcInfo.frozen_docc[i];
131
CalcInfo.num_fzc_orbs += j;
137
for (i=0; i<CalcInfo.nirreps; i++) {
138
CalcInfo.num_fzc_orbs += CalcInfo.frozen_docc[i];
135
for (i=0; i<CalcInfo.nirreps; i++) {
136
CalcInfo.num_cor_orbs += CalcInfo.frozen_docc[i];
140
for (i=0; i<CalcInfo.nirreps; i++) {
141
CalcInfo.num_cor_orbs += CalcInfo.rstr_docc[i];
140
144
/* construct the CalcInfo.ras_orbs array (may not be of any use now) */
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);
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++;
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++;
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,
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++;
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++;
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);
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);
175
198
/* allocate memory to store the MO coefficient matrix symm blocked */
188
211
for (i=0; i<CalcInfo.nirreps; i++) {
189
212
fprintf(outfile, "%2d ", CalcInfo.frozen_docc[i]);
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]);
200
223
for (i=0; i<CalcInfo.nirreps; i++) {
201
224
fprintf(outfile, "%2d ", CalcInfo.socc[i]);
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]);
218
241
fprintf(outfile, "\n");
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");