2
** PARAMS.CC: File contains functions which get or print the running
3
** parameters for the CI calculation.
5
** David Sherrill, 16 November 1994
18
#include <libipv1/ip_lib.h>
19
#include <libipv1/ip_data.gbl>
20
#include <libciomr/libciomr.h>
22
#include <libchkpt/chkpt.h>
30
** get_parameters(): Function gets the program running parameters such
31
** as convergence. These are stored in the Parameters data structure.
33
void get_parameters(void)
39
/* default value of Ms0 depends on iopen but is modified below
40
* depending on value of opentype
43
chkpt_init(PSIO_OPEN_OLD);
44
Parameters.Ms0 = !(chkpt_rd_iopen());
47
/* need to figure out wheter to filter tei's */
48
errcod = ip_string("DERTYPE", &(Parameters.dertype),0);
49
if(errcod == IPE_KEY_NOT_FOUND) {
50
Parameters.dertype = (char *) malloc(sizeof(char)*5);
51
strcpy(Parameters.dertype, "NONE");
54
errcod = ip_string("WFN", &(Parameters.wfn),0);
55
if(errcod == IPE_KEY_NOT_FOUND) {
56
Parameters.wfn = (char *) malloc(sizeof(char)*5);
57
strcpy(Parameters.wfn, "NONE");
60
if (strcmp(Parameters.dertype, "FIRST")==0 ||
61
strcmp(Parameters.wfn, "DETCAS")==0) Parameters.filter_ints = 1;
62
else Parameters.filter_ints = 0;
65
/* Parameters.print_lvl is set in detci.cc */
66
/* Parameters.have_special_conv is set in detci.cc */
67
Parameters.ex_lvl = 2;
68
Parameters.val_ex_lvl = 0;
69
Parameters.maxiter = 12;
70
Parameters.max_dets = 10000;
71
Parameters.num_roots = 1;
73
Parameters.print_ciblks = 0;
75
Parameters.opentype = PARM_OPENTYPE_UNKNOWN;
76
Parameters.ref_sym = -1;
77
Parameters.oei_file = PSIF_OEI; /* always need fzc operator */
78
Parameters.oei_erase = 0;
79
Parameters.tei_file = PSIF_MO_TEI;
80
Parameters.tei_erase = 0;
81
Parameters.h0blocksize = 400;
82
Parameters.h0guess_size = 100;
83
Parameters.h0block_coupling = 0;
84
Parameters.h0block_coupling_size = 0;
85
Parameters.nprint = 20;
86
Parameters.hd_ave = EVANGELISTI;
87
Parameters.hd_otf = TRUE;
88
Parameters.nodfile = 0;
91
Parameters.fci_strings = 0;
93
Parameters.mixed4 = 1;
95
Parameters.repl_otf = 0;
96
Parameters.calc_ssq = 0;
98
Parameters.save_mpn2 = 0;
99
Parameters.mpn_schmidt = 0;
100
Parameters.wigner = 0;
101
Parameters.perturbation_parameter = 1.0;
102
Parameters.z_scale_H = 0;
104
Parameters.ras1_lvl = -1;
105
Parameters.ras1_min = -1;
106
Parameters.a_ras1_lvl = -1;
107
Parameters.a_ras1_min = -1;
108
Parameters.b_ras1_lvl = -1;
109
Parameters.b_ras1_min = -1;
110
Parameters.a_ras3_max = -1;
111
Parameters.b_ras3_max = -1;
112
Parameters.ras3_lvl = -1;
113
Parameters.ras3_max = -1;
114
Parameters.ras4_lvl = -1;
115
Parameters.ras4_max = -1;
116
Parameters.ras34_max = -1;
118
if (strcmp(Parameters.wfn, "DETCAS")==0)
119
Parameters.guess_vector = PARM_GUESS_VEC_DFILE;
121
Parameters.guess_vector = PARM_GUESS_VEC_H0_BLOCK;
123
Parameters.icore = 1;
124
Parameters.diag_method = METHOD_DAVIDSON_LIU_SEM;
125
Parameters.precon = PRECON_DAVIDSON;
126
Parameters.update = UPDATE_DAVIDSON;
127
Parameters.maxnvect = 0;
128
Parameters.collapse_size = 1;
130
Parameters.lse_collapse = 3;
131
Parameters.lse_tolerance = 3;
132
Parameters.genci = 0;
133
Parameters.neg_only = 1;
134
Parameters.zero_blocks = 0;
136
Parameters.nunits = 1;
137
Parameters.first_tmp_unit = 50;
138
Parameters.first_hd_tmp_unit = 0;
139
Parameters.num_hd_tmp_units = 0;
140
Parameters.first_c_tmp_unit = 0;
141
Parameters.num_c_tmp_units = 0;
142
Parameters.first_s_tmp_unit = 0;
143
Parameters.num_s_tmp_units = 0;
144
Parameters.first_d_tmp_unit = 0;
145
Parameters.num_d_tmp_units = 0;
147
Parameters.restart = 0;
148
Parameters.restart_vecs = 0;
149
Parameters.restart_iter = 0;
150
Parameters.bendazzoli = 0;
152
if (strcmp(Parameters.dertype, "FIRST")==0 ||
153
strcmp(Parameters.wfn, "DETCAS")==0) {
154
Parameters.convergence = 7;
155
Parameters.energy_convergence = 8;
157
Parameters.opdm_write = 1;
159
Parameters.tpdm_write = 1;
163
Parameters.convergence = 4;
164
Parameters.energy_convergence = 6;
166
Parameters.opdm_write = 0;
168
Parameters.tpdm_write = 0;
171
Parameters.opdm_file = PSIF_MO_OPDM;
172
Parameters.opdm_print = 0;
173
Parameters.opdm_diag = 0;
174
Parameters.opdm_wrtnos = 0;
175
Parameters.opdm_orbsfile = 76;
176
Parameters.opdm_ave = 0;
177
Parameters.opdm_orbs_root = -1;
178
Parameters.opdm_ke = 0;
179
Parameters.tpdm_file = PSIF_MO_TPDM;
180
Parameters.tpdm_print = 0;
183
Parameters.nthreads = 1;
184
Parameters.pthreads = 0;
185
Parameters.sf_restrict = 0;
187
errcod = ip_data("EX_LVL","%d",&(Parameters.ex_lvl),0);
188
errcod = ip_data("VAL_EX_LVL","%d",&(Parameters.val_ex_lvl),0);
189
errcod = ip_data("MAX_DET","%d",&(Parameters.max_dets),0);
190
errcod = ip_data("MAXITER","%d",&(Parameters.maxiter),0);
191
errcod = ip_data("NUM_ROOTS","%d",&(Parameters.num_roots),0);
192
errcod = ip_boolean("ISTOP",&(Parameters.istop),0);
193
errcod = ip_data("PRINT","%d",&(Parameters.print_lvl),0);
194
errcod = ip_boolean("PRINT_CIBLKS",&(Parameters.print_ciblks),0);
195
errcod = ip_data("CONVERGENCE","%d",&(Parameters.convergence),0);
196
errcod = ip_data("ENERGY_CONVERGENCE","%d",
197
&(Parameters.energy_convergence),0);
198
errcod = ip_data("S","%d",&(Parameters.S),0);
200
/* this stuff was appropriate to the OPENTYPE keyword in PSI2 */
201
errcod = ip_data("OPENTYPE","%s",line1,0);
202
if (errcod == IPE_OK) {
203
if (strcmp(line1, "NONE")==0) {
204
Parameters.opentype = PARM_OPENTYPE_NONE;
207
else if (strcmp(line1, "HIGHSPIN")==0) {
208
Parameters.opentype = PARM_OPENTYPE_HIGHSPIN;
211
else if (strcmp(line1, "SINGLET")==0) {
212
Parameters.opentype = PARM_OPENTYPE_SINGLET;
215
else Parameters.opentype = PARM_OPENTYPE_UNKNOWN;
217
else { /* no opentype keyword, as appropriate for PSI3 */
218
errcod = ip_data("REFERENCE","%s",line1,0);
219
/* fprintf(outfile, "line1 = ");
220
for (int ij = 0; ij<3; ij++) fprintf(outfile, "%1c", line1[ij]);
221
fprintf(outfile,"\n");
223
if (errcod == IPE_OK) {
224
if (strcmp(line1, "RHF")==0) {
225
Parameters.opentype = PARM_OPENTYPE_NONE;
228
else if (strcmp(line1, "ROHF")==0) {
229
if (ip_data("MULTP","%d",&tval,0) == IPE_OK) {
231
Parameters.opentype = PARM_OPENTYPE_SINGLET;
235
Parameters.opentype = PARM_OPENTYPE_HIGHSPIN;
240
fprintf(outfile, "detci: trouble reading MULTP\n");
243
} /* end ROHF parsing */
245
fprintf(outfile, "detci: can only handle RHF or ROHF\n");
249
else Parameters.opentype = PARM_OPENTYPE_UNKNOWN;
250
} /* end PSI3 parsing */
252
errcod = ip_boolean("MS0",&(Parameters.Ms0),0);
253
errcod = ip_data("REF_SYM","%d",&(Parameters.ref_sym),0);
254
errcod = ip_data("OEI_FILE","%d",&(Parameters.oei_file),0);
255
errcod = ip_boolean("OEI_ERASE",&(Parameters.oei_erase),0);
256
errcod = ip_data("TEI_FILE","%d",&(Parameters.tei_file),0);
257
errcod = ip_boolean("TEI_ERASE",&(Parameters.tei_erase),0);
258
errcod = ip_data("H0_BLOCKSIZE","%d",&(Parameters.h0blocksize),0);
259
Parameters.h0guess_size = Parameters.h0blocksize;
260
errcod = ip_data("H0_GUESS_SIZE","%d",&(Parameters.h0guess_size),0);
261
if (Parameters.h0guess_size > Parameters.h0blocksize)
262
Parameters.h0guess_size = Parameters.h0blocksize;
263
errcod = ip_data("H0_BLOCK_COUPLING_SIZE","%d",
264
&(Parameters.h0block_coupling_size),0);
265
errcod = ip_boolean("H0_BLOCK_COUPLING",&(Parameters.h0block_coupling),0);
266
errcod = ip_data("NPRINT","%d",&(Parameters.nprint),0);
267
errcod = ip_boolean("FREEZE_CORE",&(Parameters.fzc),0);
268
errcod = ip_boolean("FCI",&(Parameters.fci),0);
269
if (Parameters.fci) Parameters.fci_strings = 1;
270
errcod = ip_boolean("FCI_STRINGS",&(Parameters.fci_strings),0);
271
errcod = ip_boolean("MIXED",&(Parameters.mixed),0);
272
errcod = ip_boolean("MIXED4",&(Parameters.mixed4),0);
273
errcod = ip_boolean("R4S",&(Parameters.r4s),0);
274
errcod = ip_boolean("REPL_OTF",&(Parameters.repl_otf),0);
275
errcod = ip_boolean("CALC_SSQ",&(Parameters.calc_ssq),0);
276
errcod = ip_boolean("MPN",&(Parameters.mpn),0);
277
if (Parameters.mpn) {
278
Parameters.mpn_schmidt = FALSE;
279
Parameters.wigner = TRUE;
280
Parameters.guess_vector = PARM_GUESS_VEC_UNIT;
281
Parameters.hd_ave = ORB_ENER;
282
Parameters.update = UPDATE_DAVIDSON;
283
Parameters.hd_otf = TRUE;
284
Parameters.nodfile = TRUE;
286
errcod = ip_data("SAVE_MPN2","%d",&(Parameters.save_mpn2),0);
287
errcod = ip_data("PERTURBATION_PARAMETER","%lf",
288
&(Parameters.perturbation_parameter),0);
290
if (Parameters.perturbation_parameter <= 1.0 &&
291
Parameters.perturbation_parameter >= -1.0) Parameters.z_scale_H = 1;
293
else { fprintf(outfile, "Parameters.perturbation_parameters beyond the"
294
"bounds of -1.0 >= z <= 1.0\n");
298
errcod = ip_boolean("MPN_SCHMIDT",&(Parameters.mpn_schmidt),0);
299
errcod = ip_boolean("WIGNER",&(Parameters.wigner),0);
301
errcod = ip_data("A_RAS3_MAX","%d",&(Parameters.a_ras3_max),0);
302
errcod = ip_data("B_RAS3_MAX","%d",&(Parameters.b_ras3_max),0);
303
errcod = ip_data("RAS3_MAX","%d",&(Parameters.ras3_max),0);
304
errcod = ip_data("RAS4_MAX","%d",&(Parameters.ras4_max),0);
305
errcod = ip_data("RAS34_MAX","%d",&(Parameters.ras34_max),0);
306
errcod = ip_data("GUESS_VECTOR", "%s", line1, 0);
307
if (errcod == IPE_OK) {
308
if (strcmp(line1, "UNIT")==0)
309
Parameters.guess_vector = PARM_GUESS_VEC_UNIT;
310
else if (strcmp(line1, "H0_BLOCK")==0)
311
Parameters.guess_vector = PARM_GUESS_VEC_H0_BLOCK;
312
else if (strcmp(line1, "DFILE")==0)
313
Parameters.guess_vector = PARM_GUESS_VEC_DFILE;
314
/* else if (Parameters.mpn) Parameters.guess_vector = PARM_GUESS_VEC_UNIT; */
315
else if (strcmp(line1, "IMPORT")==0)
316
Parameters.guess_vector = PARM_GUESS_VEC_IMPORT;
317
else Parameters.guess_vector = PARM_GUESS_VEC_UNIT;
319
errcod = ip_data("ICORE", "%d", &(Parameters.icore),0);
320
errcod = ip_boolean("GENCI",&(Parameters.genci),0) ;
321
errcod = ip_data("HD_AVE","%s",line1, 0);
322
if (errcod == IPE_OK) {
323
if (strcmp(line1, "HD_EXACT")==0) Parameters.hd_ave = HD_EXACT;
324
if (strcmp(line1, "HD_KAVE")==0) Parameters.hd_ave = HD_KAVE;
325
if (strcmp(line1, "ORB_ENER")==0) Parameters.hd_ave = ORB_ENER;
326
if (strcmp(line1, "EVANGELISTI")==0) Parameters.hd_ave = EVANGELISTI;
327
if (strcmp(line1, "LEININGER")==0) Parameters.hd_ave = LEININGER;
328
if (strcmp(line1, "Z_KAVE")==0) Parameters.hd_ave = Z_HD_KAVE;
329
/* if (Parameters.mpn) Parameters.hd_ave = ORB_ENER; */
331
errcod = ip_boolean("HD_OTF",&(Parameters.hd_otf),0);
332
if (errcod == IPE_OK) Parameters.hd_otf = TRUE;
333
errcod = ip_boolean("NODFILE",&(Parameters.nodfile),0);
334
if (Parameters.num_roots > 1) Parameters.nodfile = FALSE;
336
errcod = ip_data("DIAG_METHOD","%s",line1, 0);
337
if (errcod == IPE_OK) {
338
if (strcmp(line1, "RSP")==0) Parameters.diag_method = METHOD_RSP;
339
if (strcmp(line1, "OLSEN")==0) Parameters.diag_method = METHOD_OLSEN;
340
if (strcmp(line1, "MITRUSHENKOV")==0)
341
Parameters.diag_method = METHOD_MITRUSHENKOV;
342
if (strcmp(line1, "DAVIDSON")==0)
343
Parameters.diag_method = METHOD_DAVIDSON_LIU_SEM;
344
if (strcmp(line1, "SEM")==0)
345
Parameters.diag_method = METHOD_DAVIDSON_LIU_SEM;
346
if (strcmp(line1, "SEMTEST")==0)
347
Parameters.diag_method = METHOD_RSPTEST_OF_SEM;
350
errcod = ip_data("PRECONDITIONER","%s",line1, 0);
351
if (errcod == IPE_OK) {
352
if (strcmp(line1, "LANCZOS")==0) Parameters.precon = PRECON_LANCZOS;
353
if (strcmp(line1, "DAVIDSON")==0) Parameters.precon = PRECON_DAVIDSON;
354
if (strcmp(line1, "GEN_DAVIDSON")==0)
355
Parameters.precon = PRECON_GEN_DAVIDSON;
356
if (strcmp(line1, "H0BLOCK")==0) Parameters.precon = PRECON_GEN_DAVIDSON;
357
if (strcmp(line1, "H0BLOCK_INV")==0)
358
Parameters.precon = PRECON_H0BLOCK_INVERT;
359
if (strcmp(line1, "ITER_INV")==0)
360
Parameters.precon = PRECON_H0BLOCK_ITER_INVERT;
361
if (strcmp(line1, "H0BLOCK_COUPLING")==0)
362
Parameters.precon = PRECON_H0BLOCK_COUPLING;
363
if (strcmp(line1, "EVANGELISTI")==0)
364
Parameters.precon = PRECON_EVANGELISTI;
366
errcod = ip_data("UPDATE","%s",line1, 0);
367
if (errcod == IPE_OK) {
368
if (strcmp(line1, "DAVIDSON")==0) Parameters.update = UPDATE_DAVIDSON;
369
if (strcmp(line1, "OLSEN")==0) Parameters.update = UPDATE_OLSEN;
371
if (Parameters.diag_method < METHOD_DAVIDSON_LIU_SEM &&
372
Parameters.update==UPDATE_DAVIDSON) {
373
fprintf(outfile,"DAVIDSON update not available for OLSEN or MITRUSH"
375
Parameters.update = UPDATE_OLSEN;
377
if (Parameters.precon==PRECON_EVANGELISTI && (Parameters.update!=UPDATE_DAVIDSON
378
|| Parameters.diag_method!=METHOD_DAVIDSON_LIU_SEM)) {
379
fprintf(outfile,"EVANGELISTI preconditioner not available for OLSEN or"
380
" MITRUSH iterators or updates.\n");
381
Parameters.update = UPDATE_DAVIDSON;
384
errcod = ip_boolean("ZERO_BLOCKS",&(Parameters.zero_blocks),0);
385
if (Parameters.icore || !Parameters.mpn) Parameters.zero_blocks = 0;
386
Parameters.num_init_vecs = Parameters.num_roots;
387
errcod = ip_data("NUM_INIT_VECS","%d",&(Parameters.num_init_vecs),0);
389
errcod = ip_data("COLLAPSE_SIZE", "%d", &(Parameters.collapse_size),0);
390
if (Parameters.collapse_size < 1) Parameters.collapse_size = 1;
392
errcod = ip_data("LSE_COLLAPSE", "%d", &(Parameters.lse_collapse),0);
393
if (Parameters.lse_collapse < 1) Parameters.lse_collapse = 3;
395
errcod = ip_boolean("LSE",&(Parameters.lse),0) ;
397
errcod = ip_data("LSE_TOLERANCE", "%d", &(Parameters.lse_tolerance),0);
399
errcod = ip_data("MAXNVECT", "%d", &(Parameters.maxnvect),0);
400
if (Parameters.maxnvect == 0 &&
401
Parameters.diag_method == METHOD_DAVIDSON_LIU_SEM) {
402
Parameters.maxnvect = Parameters.maxiter * Parameters.num_roots
403
+ Parameters.num_init_vecs;
405
else if (Parameters.maxnvect == 0 &&
406
Parameters.diag_method == METHOD_RSPTEST_OF_SEM) {
407
Parameters.maxnvect = Parameters.maxiter * Parameters.num_roots
408
+ Parameters.num_init_vecs;
410
else if (Parameters.maxnvect == 0 &&
411
Parameters.diag_method == METHOD_MITRUSHENKOV) {
412
Parameters.maxnvect = 2;
414
else if (Parameters.maxnvect == 0 &&
415
Parameters.diag_method == METHOD_OLSEN) {
416
Parameters.maxnvect = 1;
418
else { /* the user tried to specify a value for maxnvect...check it */
419
/* if (Parameters.maxnvect / (Parameters.collapse_size *
420
Parameters.num_roots) < 2) {
421
fprintf(outfile, "maxnvect must be at least twice collapse_size *");
422
fprintf(outfile, " num_roots.\n");
428
errcod = ip_data("NUNITS", "%d", &(Parameters.nunits),0);
429
errcod = ip_data("FIRST_TMP_UNIT", "%d", &(Parameters.first_tmp_unit),0);
430
errcod = ip_data("FIRST_HD_TMP_UNIT","%d",&(Parameters.first_hd_tmp_unit),0);
431
errcod = ip_data("FIRST_C_TMP_UNIT","%d",&(Parameters.first_c_tmp_unit),0);
432
errcod = ip_data("FIRST_S_TMP_UNIT","%d",&(Parameters.first_s_tmp_unit),0);
433
errcod = ip_data("FIRST_D_TMP_UNIT","%d",&(Parameters.first_d_tmp_unit),0);
434
errcod = ip_data("NUM_HD_TMP_UNITS","%d",&(Parameters.num_hd_tmp_units),0);
435
errcod = ip_data("NUM_C_TMP_UNITS","%d",&(Parameters.num_c_tmp_units),0);
436
errcod = ip_data("NUM_S_TMP_UNITS","%d",&(Parameters.num_s_tmp_units),0);
437
errcod = ip_data("NUM_D_TMP_UNITS","%d",&(Parameters.num_d_tmp_units),0);
439
if (Parameters.first_hd_tmp_unit == 0)
440
Parameters.first_hd_tmp_unit = Parameters.first_tmp_unit;
441
/* if ( (Parameters.num_hd_tmp_units == 0) && (!Parameters.hd_otf) ) */
442
if (Parameters.num_hd_tmp_units == 0)
443
Parameters.num_hd_tmp_units = 1;
444
if (Parameters.first_c_tmp_unit == 0) Parameters.first_c_tmp_unit =
445
Parameters.first_hd_tmp_unit + Parameters.num_hd_tmp_units;
446
if (Parameters.num_c_tmp_units == 0) Parameters.num_c_tmp_units =
448
if (Parameters.first_s_tmp_unit == 0) Parameters.first_s_tmp_unit =
449
Parameters.first_c_tmp_unit + Parameters.num_c_tmp_units;
450
if (Parameters.num_s_tmp_units == 0) Parameters.num_s_tmp_units =
452
if (Parameters.first_d_tmp_unit == 0) Parameters.first_d_tmp_unit =
453
Parameters.first_s_tmp_unit + Parameters.num_s_tmp_units;
454
/* if ( (Parameters.num_d_tmp_units == 0) && (!Parameters.nodfile) ) */
455
if (Parameters.num_d_tmp_units == 0)
456
Parameters.num_d_tmp_units = 1;
458
errcod = ip_boolean("RESTART",&(Parameters.restart),0);
459
errcod = ip_data("RESTART_ITER","%d",&(Parameters.restart_iter),0);
460
errcod = ip_data("RESTART_VECS","%d",&(Parameters.restart_vecs),0);
461
if (Parameters.restart && (errcod!=IPE_OK || Parameters.restart_vecs==0)) {
462
fprintf(outfile, "For RESTART must specify nonzero RESTART_VECS\n");
465
errcod = ip_boolean("BENDAZZOLI",&(Parameters.bendazzoli),0) ;
466
if (Parameters.bendazzoli & !Parameters.fci) Parameters.bendazzoli=0;
468
/* Parse the OPDM stuff. It is possible to give incompatible options,
469
* but we will try to eliminate some of those. Parameters_opdm will
470
* function as the master switch for all other OPDM parameters.
472
errcod = ip_boolean("OPDM_PRINT",&(Parameters.opdm_print),0);
473
errcod = ip_data("OPDM_FILE","%d",&(Parameters.opdm_file),0);
474
errcod = ip_boolean("WRTNOS",&(Parameters.opdm_wrtnos),0);
475
errcod = ip_boolean("OPDM_DIAG",&(Parameters.opdm_diag),0);
476
errcod = ip_boolean("OPDM_AVE",&(Parameters.opdm_ave),0);
477
errcod = ip_data("ORBSFILE","%d",&(Parameters.opdm_orbsfile),0);
478
errcod = ip_data("ORBS_ROOT","%d",&(Parameters.opdm_orbs_root),0);
479
errcod = ip_boolean("OPDM_KE",&(Parameters.opdm_ke),0);
480
errcod = ip_data("ROOT","%d",&(Parameters.root),0);
481
Parameters.root -= 1;
483
if (Parameters.opdm_orbs_root != -1) Parameters.opdm_orbs_root -= 1;
484
if (Parameters.opdm_orbs_root < 0) Parameters.opdm_orbs_root = 0;
485
if (Parameters.opdm_wrtnos) Parameters.opdm_diag = 1;
486
if (Parameters.opdm_print || Parameters.opdm_diag || Parameters.opdm_wrtnos
487
|| Parameters.opdm_ave || Parameters.opdm_ke) Parameters.opdm = 1;
488
errcod = ip_boolean("OPDM",&(Parameters.opdm),0);
489
if (Parameters.opdm) Parameters.opdm_write = 1;
490
errcod = ip_boolean("OPDM_WRITE",&(Parameters.opdm_write),0);
491
errcod = ip_boolean("OPDM_PRINT",&(Parameters.opdm_print),0);
492
errcod = ip_data("OPDM_DIAG","%d",&(Parameters.opdm_diag),0);
494
errcod = ip_boolean("TPDM",&(Parameters.tpdm),0);
495
if (Parameters.tpdm) Parameters.tpdm_write = 1;
496
errcod = ip_boolean("TPDM_WRITE",&(Parameters.tpdm_write),0);
497
errcod = ip_boolean("TPDM_PRINT",&(Parameters.tpdm_print),0);
498
errcod = ip_data("TPDM_FILE","%d",&(Parameters.tpdm_file),0);
500
if (Parameters.guess_vector == PARM_GUESS_VEC_DFILE &&
501
strcmp(Parameters.wfn, "DETCAS")!=0) {
503
chkpt_init(PSIO_OPEN_OLD);
504
i = chkpt_rd_phase_check();
508
fprintf(outfile, "Can't use d file guess: SCF phase not checked\n");
509
if (Parameters.h0guess_size) {
510
Parameters.guess_vector = PARM_GUESS_VEC_H0_BLOCK;
511
if (Parameters.precon == PRECON_GEN_DAVIDSON)
512
Parameters.precon = PRECON_H0BLOCK_ITER_INVERT;
514
else Parameters.guess_vector = PARM_GUESS_VEC_UNIT;
517
if (Parameters.num_init_vecs < Parameters.num_roots)
518
Parameters.num_init_vecs = Parameters.num_roots;
519
if (Parameters.guess_vector == PARM_GUESS_VEC_UNIT &&
520
Parameters.num_init_vecs > 1) {
521
Parameters.guess_vector = PARM_GUESS_VEC_H0_BLOCK;
522
fprintf(outfile,"Warning: Unit vec option not available for more than"
525
if (Parameters.guess_vector == PARM_GUESS_VEC_UNIT)
526
Parameters.h0blocksize = Parameters.h0guess_size = 1;
528
errcod = ip_data("NTHREADS", "%d", &(Parameters.nthreads),0);
529
if (Parameters.nthreads < 1) Parameters.nthreads = 1;
530
errcod = ip_boolean("PTHREADS",&(Parameters.pthreads),0);
531
if (!Parameters.pthreads) Parameters.nthreads = 1;
533
Parameters.export_ci_vector = 0;
534
errcod = ip_boolean("EXPORT_VECTOR", &(Parameters.export_ci_vector), 0);
536
Parameters.num_export = 0;
537
if (Parameters.export_ci_vector) {
538
Parameters.num_export = 1;
539
errcod = ip_data("NUM_EXPORT", "%d", &(Parameters.num_export), 0);
540
if (Parameters.num_export > Parameters.num_roots) {
541
fprintf(outfile, "Warning: can't export %d roots if %d requested\n",
542
Parameters.num_export, Parameters.num_roots);
543
Parameters.num_export = Parameters.num_roots;
547
errcod = ip_boolean("SF_RESTRICT",&(Parameters.sf_restrict),0);
549
/* The filter_guess options are used to filter out some trial
550
vectors which may not have the appropriate phase convention
551
between two determinants. This is useful to remove, e.g.,
552
delta states when a sigma state is desired. The user
553
inputs two determinants (by giving the absolute alpha string
554
number and beta string number for each), and also the
555
desired phase between these two determinants for guesses
556
which are to be kept.
558
Parameters.filter_guess = 0;
559
errcod = ip_boolean("FILTER_GUESS",&(Parameters.filter_guess),0);
560
if (errcod == IPE_OK && Parameters.filter_guess == 1) {
561
Parameters.filter_guess_sign = 1;
562
errcod = ip_data("FILTER_GUESS_SIGN","%d",
563
&(Parameters.filter_guess_sign),0);
564
if (errcod != IPE_OK || (Parameters.filter_guess_sign != 1 &&
565
Parameters.filter_guess_sign != -1)) {
566
fprintf(outfile, "FILTER_GUESS_SIGN should be 1 or -1 !\n");
569
errcod = ip_count("FILTER_GUESS_DET1",&i,0);
570
if (errcod != IPE_OK || i != 2) {
571
fprintf(outfile, "Need to specify FILTER_GUESS_DET1 = "
572
"(alphastr betastr)\n");
576
errcod = ip_data("FILTER_GUESS_DET1","%d",
577
&(Parameters.filter_guess_Ia),1,0);
578
errcod = ip_data("FILTER_GUESS_DET1","%d",
579
&(Parameters.filter_guess_Ib),1,1);
582
errcod = ip_count("FILTER_GUESS_DET2",&i,0);
583
if (errcod != IPE_OK || i != 2) {
584
fprintf(outfile, "Need to specify FILTER_GUESS_DET2 = "
585
"(alphastr betastr)\n");
589
errcod = ip_data("FILTER_GUESS_DET2","%d",
590
&(Parameters.filter_guess_Ja),1,0);
591
errcod = ip_data("FILTER_GUESS_DET2","%d",
592
&(Parameters.filter_guess_Jb),1,1);
594
} /* end the filter_guess stuff */
599
** print_parameters(): Function prints the program's running parameters
600
** found in the Parameters structure.
602
void print_parameters(void)
604
fprintf(outfile, "\n");
605
fprintf(outfile, "PARAMETERS: \n");
606
fprintf(outfile, " EX LVL = %6d H0 BLOCKSIZE = %6d\n",
607
Parameters.ex_lvl, Parameters.h0blocksize);
608
fprintf(outfile, " VAL EX LVL = %6d H0 GUESS SIZE= %6d\n",
609
Parameters.val_ex_lvl, Parameters.h0guess_size);
610
fprintf(outfile, " H0COUPLINGSIZE= %6d H0 COUPLING = %6s\n",
611
Parameters.h0block_coupling_size, Parameters.h0block_coupling ? "yes" : "no");
612
fprintf(outfile, " NPRINT = %6d MAX DET = %6d\n",
613
Parameters.nprint, Parameters.max_dets);
614
fprintf(outfile, " MAXITER = %6d FREEZE CORE = %6s\n",
615
Parameters.maxiter, Parameters.fzc ? "yes" : "no");
616
fprintf(outfile, " NUM ROOTS = %6d ICORE = %6d\n",
617
Parameters.num_roots, Parameters.icore);
618
fprintf(outfile, " PRINT = %6d FCI = %6s\n",
619
Parameters.print_lvl, Parameters.fci ? "yes" : "no");
620
if (Parameters.have_special_conv)
622
" CONV = %8.2g MIXED = %6s\n",
623
Parameters.special_conv, Parameters.mixed ? "yes" : "no");
625
fprintf(outfile, " CONV = %6d MIXED = %6s\n",
626
Parameters.convergence, Parameters.mixed ? "yes" : "no");
628
fprintf(outfile, " E CONV = %6d MIXED4 = %6s\n",
629
Parameters.energy_convergence, Parameters.mixed4 ? "yes" : "no");
630
fprintf(outfile, " OEI FILE = %6d R4S = %6s\n",
631
Parameters.oei_file, Parameters.r4s ? "yes" : "no");
632
fprintf(outfile, " OEI ERASE = %6s REPL OTF = %6s\n",
633
Parameters.oei_erase ? "yes" : "no", Parameters.repl_otf ? "yes" : "no");
634
fprintf(outfile, " TEI FILE = %6d DIAG METHOD = ",
635
Parameters.tei_file);
637
switch (Parameters.diag_method) {
639
fprintf(outfile, "%6s\n", "RSP");
642
fprintf(outfile, "%6s\n", "OLSEN");
645
fprintf(outfile, "%6s\n", "MITRUS");
648
fprintf(outfile, "%6s\n", "SEM");
651
fprintf(outfile, "%6s\n", "SEMTEST");
654
fprintf(outfile, "%6s\n", "???");
658
fprintf(outfile, " PRECONDITIONER= ");
659
switch (Parameters.precon) {
661
fprintf(outfile, "%6s", " LANCZOS ");
663
case PRECON_DAVIDSON:
664
fprintf(outfile, "%6s", "DAVIDSON ");
666
case PRECON_GEN_DAVIDSON:
667
fprintf(outfile, "%6s", "GEN_DAVIDSON");
669
case PRECON_H0BLOCK_INVERT:
670
fprintf(outfile, "%6s", "H0BLOCK_INV ");
672
case PRECON_H0BLOCK_ITER_INVERT:
673
fprintf(outfile, "%6s", "ITER_INV ");
675
case PRECON_H0BLOCK_COUPLING:
676
fprintf(outfile, "%6s", "H0_COUPLING ");
678
case PRECON_EVANGELISTI:
679
fprintf(outfile, "%6s", "EVANGELISTI ");
682
fprintf(outfile, "%6s", "??? ");
686
fprintf(outfile, " UPDATE = ");
687
switch (Parameters.update) {
689
fprintf(outfile, "%6s\n", "DAVIDSON");
692
fprintf(outfile, "%6s\n", "OLSEN");
695
fprintf(outfile, "%6s\n", "???");
699
fprintf(outfile, " S = %6d Ms0 = %6s\n",
700
Parameters.S, Parameters.Ms0 ? "yes" : "no");
701
fprintf(outfile, " TEI ERASE = %6s MAXNVECT = %6d\n",
702
Parameters.tei_erase ? "yes" : "no", Parameters.maxnvect);
703
fprintf(outfile, " RESTART = %6s RESTART VECS = %6d\n",
704
Parameters.restart ? "yes" : "no", Parameters.restart_vecs);
705
fprintf(outfile, " GUESS VECTOR = ");
706
switch (Parameters.guess_vector) {
707
case PARM_GUESS_VEC_UNIT:
708
fprintf(outfile, "%7s", "UNIT");
710
case PARM_GUESS_VEC_H0_BLOCK:
711
fprintf(outfile, "%7s", "H0BLOCK");
713
case PARM_GUESS_VEC_DFILE:
714
fprintf(outfile, "%7s", "D FILE");
716
case PARM_GUESS_VEC_IMPORT:
717
fprintf(outfile, "%7s", "IMPORT");
720
fprintf(outfile, "%7s", "???");
723
fprintf(outfile, " OPENTYPE = ");
724
switch (Parameters.opentype) {
725
case PARM_OPENTYPE_NONE:
726
fprintf(outfile, "%8s\n", "NONE");
728
case PARM_OPENTYPE_HIGHSPIN:
729
fprintf(outfile, "%8s\n", "HIGHSPIN");
731
case PARM_OPENTYPE_SINGLET:
732
fprintf(outfile, "%8s\n", "SINGLET");
735
fprintf(outfile, "%8s\n", "???");
738
fprintf(outfile, " GENCI ALG = %6s",
739
Parameters.genci ? "yes" : "no");
740
if (Parameters.ref_sym == -1)
741
fprintf(outfile, " REF SYM = %6s\n", "auto");
743
fprintf(outfile, " REF SYM = %6d\n", Parameters.ref_sym);
745
fprintf(outfile, " COLLAPSE SIZE = %6d", Parameters.collapse_size);
746
fprintf(outfile, " HD AVE =");
747
switch (Parameters.hd_ave) {
749
fprintf(outfile," %11s\n", "HD_EXACT");
752
fprintf(outfile," %11s\n", "HD_KAVE");
755
fprintf(outfile," %11s\n", "ORB_ENER");
758
fprintf(outfile," %11s\n", "EVANGELISTI");
761
fprintf(outfile," %11s\n", "LEININGER");
764
fprintf(outfile," %11s\n", "???");
768
fprintf(outfile, " LSE = %6s LSE ITER = %6d\n",
769
Parameters.lse ? "yes" : "no", Parameters.lse_iter);
770
fprintf(outfile, " HD OTF = %6s NO DFILE = %6s\n",
771
Parameters.hd_otf ? "yes" : "no", Parameters.nodfile ? "yes":"no");
772
fprintf(outfile, " MPN = %6s MPN SCHMIDT = %6s\n",
773
Parameters.mpn ? "yes":"no", Parameters.mpn_schmidt ? "yes":"no");
774
fprintf(outfile, " WIGNER = %6s ZERO BLOCKS = %6s\n",
775
Parameters.wigner ? "yes":"no", Parameters.zero_blocks ? "yes":"no");
776
fprintf(outfile, " PERT Z = %1.4f ROOT = %6d\n",
777
Parameters.perturbation_parameter, Parameters.root);
778
fprintf(outfile, " PTHREADS = %6s NTHREADS = %6d\n",
779
Parameters.pthreads ? "yes":"no", Parameters.nthreads);
780
fprintf(outfile, " EXPORT VECTOR = %6s NUM EXPORT = %6d\n",
781
Parameters.export_ci_vector ? "yes":"no", Parameters.num_export);
782
fprintf(outfile, " FILTER_GUESS = %6s SF_RESTRICT = %6s\n",
783
Parameters.filter_guess ? "yes":"no",
784
Parameters.sf_restrict ? "yes":"no");
785
fprintf(outfile, "\n FILES = %3d %3d %3d %3d\n",
786
Parameters.first_hd_tmp_unit, Parameters.first_c_tmp_unit,
787
Parameters.first_s_tmp_unit, Parameters.first_d_tmp_unit);
789
fprintf(outfile, "\n") ;
795
** set_ras_parms(): Set the RAS parameters or their conventional equivalents
796
** (i.e. fermi level, etc).
799
void set_ras_parms(void)
803
int tot_expl_el,nras2alp,nras2bet,betsocc;
804
int *ras1, *ras2, *ras3;
807
for (i=0,j=0; i<CalcInfo.nirreps; i++) j += CalcInfo.ras_opi[0][i];
808
Parameters.a_ras1_lvl = Parameters.b_ras1_lvl = Parameters.ras1_lvl = j-1;
810
/* figure out how many electrons are in RAS II */
811
/* alpha electrons */
812
for (i=0,nras2alp=0,betsocc=0; i<CalcInfo.nirreps; i++) {
813
j = CalcInfo.docc[i] - CalcInfo.frozen_docc[i] - CalcInfo.ras_opi[0][i];
814
if (Parameters.opentype == PARM_OPENTYPE_HIGHSPIN) {
815
j += CalcInfo.socc[i];
817
else if (Parameters.opentype == PARM_OPENTYPE_SINGLET) {
818
if (betsocc + CalcInfo.socc[i] <= CalcInfo.spab)
819
betsocc += CalcInfo.socc[i];
821
j += CalcInfo.socc[i] - (CalcInfo.spab - betsocc);
822
betsocc = CalcInfo.spab;
825
if (j > 0) nras2alp += j;
826
if (j > CalcInfo.ras_opi[1][i]) {
827
fprintf(outfile, "(set_ras_parms): detecting %d electrons ",
828
j - CalcInfo.ras_opi[1][i]);
829
fprintf(outfile, "in RAS III for irrep %d.\n", i);
830
fprintf(outfile, "Some parts of DETCI assume all elec in I and II\n");
834
for (i=0,nras2bet=0,betsocc=0; i<CalcInfo.nirreps; i++) {
835
j = CalcInfo.docc[i] - CalcInfo.frozen_docc[i] - CalcInfo.ras_opi[0][i];
836
if (Parameters.opentype == PARM_OPENTYPE_SINGLET && CalcInfo.socc[i]) {
837
if (betsocc + CalcInfo.socc[i] <= CalcInfo.spab)
838
j += CalcInfo.socc[i];
840
j += CalcInfo.spab - betsocc;
841
betsocc = CalcInfo.spab;
844
if (j > 0) nras2bet += j;
845
if (j > CalcInfo.ras_opi[1][i]) {
846
fprintf(outfile, "(set_ras_parms): detecting %d electrons ",
847
j - CalcInfo.ras_opi[1][i]);
848
fprintf(outfile, "in RAS III for irrep %d.\n", i);
849
fprintf(outfile, "Some parts of DETCI assume all elec in I and II\n");
853
Parameters.a_ras1_max = (CalcInfo.num_alp_expl >
854
Parameters.a_ras1_lvl + 1) ? Parameters.a_ras1_lvl + 1 :
855
(CalcInfo.num_alp_expl) ;
856
if (Parameters.fzc) Parameters.a_ras1_max += CalcInfo.num_fzc_orbs;
858
Parameters.b_ras1_max = (CalcInfo.num_bet_expl >
859
Parameters.b_ras1_lvl + 1) ? Parameters.b_ras1_lvl + 1:
860
(CalcInfo.num_bet_expl) ;
861
if (Parameters.fzc) Parameters.b_ras1_max += CalcInfo.num_fzc_orbs;
863
for (i=0,j=0; i<CalcInfo.nirreps; i++) j += CalcInfo.ras_opi[1][i];
864
Parameters.ras3_lvl = Parameters.ras1_lvl + j + 1;
866
for (i=0,j=0; i<CalcInfo.nirreps; i++) j += CalcInfo.ras_opi[2][i];
867
Parameters.ras4_lvl = Parameters.ras3_lvl + j;
870
/* check Parameters to make sure everything consistent */
872
/* deduce Parameters.a_ras3_max and Parameters.b_ras3_max if needed */
873
if (Parameters.a_ras3_max == -1 || Parameters.b_ras3_max == -1) {
874
if (Parameters.ras3_max != -1) { /* have parsed ras3_max */
875
Parameters.a_ras3_max = (Parameters.ras3_max <= CalcInfo.num_alp_expl)
876
? Parameters.ras3_max : CalcInfo.num_alp_expl;
877
Parameters.b_ras3_max = (Parameters.ras3_max <= CalcInfo.num_bet_expl)
878
? Parameters.ras3_max : CalcInfo.num_bet_expl;
881
Parameters.a_ras3_max = (Parameters.ex_lvl <= CalcInfo.num_alp_expl)
882
? Parameters.ex_lvl : CalcInfo.num_alp_expl;
883
Parameters.b_ras3_max = (Parameters.ex_lvl <= CalcInfo.num_bet_expl)
884
? Parameters.ex_lvl : CalcInfo.num_bet_expl;
888
if (Parameters.ras4_max != -1) { /* have parsed */
889
Parameters.a_ras4_max = (Parameters.ras4_max <= CalcInfo.num_alp_expl)
890
? Parameters.ras4_max : CalcInfo.num_alp_expl;
891
Parameters.b_ras4_max = (Parameters.ras4_max <= CalcInfo.num_bet_expl)
892
? Parameters.ras4_max : CalcInfo.num_bet_expl;
895
Parameters.a_ras4_max = Parameters.a_ras3_max;
896
Parameters.b_ras4_max = Parameters.b_ras3_max;
899
if (Parameters.ras34_max != -1) { /* have parsed */
900
Parameters.a_ras34_max = Parameters.ras34_max;
901
Parameters.b_ras34_max = Parameters.ras34_max;
904
Parameters.a_ras34_max = Parameters.a_ras3_max;
905
Parameters.b_ras34_max = Parameters.b_ras3_max;
908
i = Parameters.ras4_lvl - Parameters.ras3_lvl;
909
if (Parameters.a_ras3_max > i) Parameters.a_ras3_max = i;
910
if (Parameters.b_ras3_max > i) Parameters.b_ras3_max = i;
912
i = CalcInfo.num_ci_orbs - Parameters.ras4_lvl;
913
if (Parameters.a_ras4_max > i) Parameters.a_ras4_max = i;
914
if (Parameters.b_ras4_max > i) Parameters.b_ras4_max = i;
916
i = CalcInfo.num_ci_orbs - Parameters.ras3_lvl;
917
if (Parameters.a_ras34_max > i) Parameters.a_ras34_max = i;
918
if (Parameters.b_ras34_max > i) Parameters.b_ras34_max = i;
920
i = (CalcInfo.num_alp_expl <= Parameters.a_ras1_lvl + 1) ?
921
CalcInfo.num_alp_expl : Parameters.a_ras1_lvl + 1;
922
Parameters.a_ras1_min = i - Parameters.ex_lvl -
923
Parameters.val_ex_lvl;
924
if (Parameters.a_ras1_min < 0) Parameters.a_ras1_min = 0;
925
Parameters.a_ras1_min += CalcInfo.num_fzc_orbs;
926
Parameters.a_ras1_min += CalcInfo.num_cor_orbs;
928
i = (CalcInfo.num_bet_expl <= Parameters.b_ras1_lvl + 1) ?
929
CalcInfo.num_bet_expl : Parameters.b_ras1_lvl + 1;
930
Parameters.b_ras1_min = i - Parameters.ex_lvl -
931
Parameters.val_ex_lvl;
932
if (Parameters.b_ras1_min < 0) Parameters.b_ras1_min = 0;
933
Parameters.b_ras1_min += CalcInfo.num_fzc_orbs;
934
Parameters.b_ras1_min += CalcInfo.num_cor_orbs;
936
tot_expl_el = CalcInfo.num_alp_expl + CalcInfo.num_bet_expl;
937
if (Parameters.ras3_max == -1) {
938
Parameters.ras3_max = (Parameters.ex_lvl <= tot_expl_el) ?
939
Parameters.ex_lvl : tot_expl_el ;
942
if (Parameters.ras3_max > tot_expl_el)
943
Parameters.ras3_max = tot_expl_el;
946
if (Parameters.ras34_max == -1) Parameters.ras34_max = Parameters.ras3_max;
948
i = 2 * (Parameters.ras4_lvl - Parameters.ras3_lvl);
949
if (i < Parameters.ras3_max) Parameters.ras3_max = i;
951
i = 2 * (CalcInfo.num_ci_orbs - Parameters.ras3_lvl);
952
if (i < Parameters.ras34_max) Parameters.ras34_max = i;
954
i = (tot_expl_el < 2*(Parameters.ras1_lvl + 1)) ? tot_expl_el :
955
2*(Parameters.ras1_lvl + 1) ;
957
Parameters.ras1_min = i - Parameters.ex_lvl -
958
Parameters.val_ex_lvl + 2 * CalcInfo.num_fzc_orbs;
960
if (Parameters.a_ras1_min + Parameters.b_ras1_min > Parameters.ras1_min)
961
Parameters.ras1_min = Parameters.a_ras1_min + Parameters.b_ras1_min;
963
if (Parameters.ras4_max == -1) {
964
Parameters.ras4_max = (Parameters.ex_lvl <= tot_expl_el) ?
965
Parameters.ex_lvl : tot_expl_el;
968
i = 2 * (CalcInfo.num_ci_orbs - Parameters.ras4_lvl);
969
if (i < Parameters.ras4_max) Parameters.ras4_max = i;
971
if (Parameters.print_lvl) {
972
fprintf(outfile, " RAS1 LVL = %6d A RAS3 MAX = %6d\n",
973
Parameters.ras1_lvl, Parameters.a_ras3_max);
974
fprintf(outfile, " RAS1 MIN = %6d B RAS3 MAX = %6d\n",
975
Parameters.ras1_min, Parameters.b_ras3_max);
976
fprintf(outfile, " A RAS1 LVL = %6d RAS4 LVL = %6d\n",
977
Parameters.a_ras1_lvl, Parameters.ras4_lvl);
978
fprintf(outfile, " A RAS1 MIN = %6d A RAS4 MAX = %6d\n",
979
Parameters.a_ras1_min, Parameters.a_ras4_max);
980
fprintf(outfile, " A RAS1 MAX = %6d B RAS4 MAX = %6d\n",
981
Parameters.a_ras1_max, Parameters.b_ras4_max);
982
fprintf(outfile, " B RAS1 LVL = %6d RAS4 MAX = %6d\n",
983
Parameters.b_ras1_lvl, Parameters.ras4_max);
984
fprintf(outfile, " B RAS1 MIN = %6d A RAS34 MAX = %6d\n",
985
Parameters.b_ras1_min, Parameters.a_ras34_max);
986
fprintf(outfile, " B RAS1 MAX = %6d B RAS34 MAX = %6d\n",
987
Parameters.b_ras1_max, Parameters.b_ras34_max);
988
fprintf(outfile, " RAS3 LVL = %6d RAS34 MAX = %6d\n",
989
Parameters.ras3_lvl, Parameters.ras34_max);
990
fprintf(outfile, " RAS3 MAX = %6d\n", Parameters.ras3_max);
993
fprintf(outfile, "\n");
994
fprintf(outfile, " DOCC = ") ;
995
for (i=0; i<CalcInfo.nirreps; i++) {
996
fprintf(outfile, "%2d ", CalcInfo.docc[i]) ;
998
fprintf(outfile, "\n SOCC = ") ;
999
for (i=0; i<CalcInfo.nirreps; i++) {
1000
fprintf(outfile, "%2d ", CalcInfo.socc[i]) ;
1002
fprintf(outfile, "\n FROZEN DOCC = ") ;
1003
for (i=0; i<CalcInfo.nirreps; i++) {
1004
fprintf(outfile, "%2d ", CalcInfo.frozen_docc[i]) ;
1006
fprintf(outfile, "\n FROZEN UOCC = ") ;
1007
for (i=0; i<CalcInfo.nirreps; i++) {
1008
fprintf(outfile, "%2d ", CalcInfo.frozen_uocc[i]) ;
1010
fprintf(outfile, "\n");
1011
for (i=0; i<4; i++) {
1012
fprintf(outfile, " RAS %d = ",i+1);
1013
for (j=0; j<CalcInfo.nirreps; j++) {
1014
fprintf(outfile,"%2d ",CalcInfo.ras_opi[i][j]);
1016
fprintf(outfile, "\n");
1020
"*******************************************************\n\n");