21
21
double power(double x, int y);
23
23
void get_optinfo() {
24
int a, i, cnt, cnt2, natom, nallatom;
24
int a, i, cnt, cnt2, natom, nallatom, errcod;
26
27
optinfo.iteration = 0;
27
28
optinfo.micro_iteration = 0;
37
38
optinfo.dertype = 0;
39
if (ip_exist("DERTYPE",0)) {
40
errcod = ip_string("DERTYPE", &(junk),0);
41
if (errcod != IPE_OK) optinfo.dertype = 0;
42
else if(!strcmp(junk,"NONE")) optinfo.dertype = 0;
43
else if(!strcmp(junk,"FIRST")) optinfo.dertype = 1;
44
else if(!strcmp(junk,"SECOND")) optinfo.dertype = 2;
45
else if(!strcmp(junk,"RESPONSE")) optinfo.dertype = 3; /* linear response */
47
printf("Invalid value of input keyword DERTYPE: %s\n", junk);
48
exit(PSI_RETURN_FAILURE);
52
errcod = ip_string("WFN", &(optinfo.wfn), 0);
53
errcod = ip_string("JOBTYPE", &(optinfo.jobtype), 0);
38
55
optinfo.numerical_dertype = 0;
56
if (ip_exist("DERTYPE",0)) {
57
if ( (strcmp(optinfo.jobtype,"OPT")==0) && (optinfo.dertype==0) )
58
optinfo.numerical_dertype = 1;
61
optinfo.redundant = 1; optinfo.delocalize = 0;
62
if ((optinfo.mode == MODE_DISP_IRREP) || (optinfo.mode == MODE_DISP_NOSYMM) )
63
{ optinfo.redundant = 0; optinfo.delocalize =1; }
64
if ( optinfo.numerical_dertype == 1 )
65
{ optinfo.redundant = 0; optinfo.delocalize =1; }
66
ip_boolean("DELOCALIZE", &(optinfo.delocalize),0);
67
if (optinfo.delocalize)
68
optinfo.redundant = 0;
40
70
/* print options */
41
71
optinfo.print_simples = 0;
48
78
ip_boolean("PRINT_SYMMETRY", &(optinfo.print_symmetry),0);
49
79
optinfo.print_hessian = 0;
50
80
ip_boolean("PRINT_HESSIAN", &(optinfo.print_hessian),0);
81
optinfo.print_cartesians = 0;
82
ip_boolean("PRINT_CARTESIANS", &(optinfo.print_cartesians),0);
52
84
/* optimization parameters */
53
85
optinfo.optimize = 1;
57
89
optinfo.optimize = 0;
92
optinfo.freq_irrep = -1;
93
if (ip_exist("FREQ_IRREP",0)) {
94
ip_data("FREQ_IRREP","%d",&(optinfo.freq_irrep),0);
61
98
ip_boolean("BFGS",&(optinfo.bfgs),0);
62
99
optinfo.bfgs_use_last = 6;
64
101
optinfo.mix_types = 1;
65
102
ip_boolean("MIX_TYPES",&(optinfo.mix_types),0);
67
optinfo.redundant = 1;
68
optinfo.delocalize = 0;
69
ip_boolean("DELOCALIZE", &(optinfo.delocalize),0);
70
if (optinfo.delocalize)
71
optinfo.redundant = 0;
72
if ((optinfo.mode == MODE_DISP_IRREP) || (optinfo.mode == MODE_DISP_NOSYMM) )
73
{ optinfo.redundant = 0; optinfo.delocalize =1; }
104
ip_data("POINTS","%d",&(optinfo.points),0);
106
if ( (optinfo.dertype == 0) && (optinfo.numerical_dertype == 2) ) {
107
fprintf(outfile,"O(h^2) formula used for frequencies by energy points.\n");
112
/* takes values of 1,2,3 for x,y,z for location of first dummy of linear bend*/
113
optinfo.dummy_axis_1 = 2;
114
ip_data("DUMMY_AXIS_1","%d",&(optinfo.dummy_axis_1),0);
115
optinfo.dummy_axis_1 -= 1;
116
optinfo.dummy_axis_2 = 3;
117
ip_data("DUMMY_AXIS_2","%d",&(optinfo.dummy_axis_2),0);
118
optinfo.dummy_axis_2 -= 1;
76
121
if (ip_exist("ZMAT",0)) optinfo.zmat = 1;
82
127
ip_data("CONV","%d",&a,0);
128
/* ip_data("CONVERGENCE","%d",&a,0); */
83
129
optinfo.conv = power(10.0, -1*a);
89
135
optinfo.scale_connectivity = 1.3;
90
136
ip_data("SCALE_CONNECTIVITY","%lf",&(optinfo.scale_connectivity),0);
92
optinfo.disp_size = 0.0010;
138
optinfo.disp_size = 0.005;
93
139
ip_data("EDISP","%lf",&(optinfo.disp_size),0);
95
141
/* back-transformation parameters */
135
181
if (optinfo.print_params) {
136
for (i=0;i<natom;++i)
182
for (i=0;i<nallatom;++i)
137
183
fprintf(outfile,"atom_dummy[%d]: %d\n",i,optinfo.atom_dummy[i]);
184
for (i=0;i<nallatom;++i)
185
fprintf(outfile,"to_nodummy[%d]: %d\n",i,optinfo.to_nodummy[i]);
138
186
for (i=0;i<natom;++i)
139
187
fprintf(outfile,"to_dummy[%d]: %d\n",i,optinfo.to_dummy[i]);
140
for (i=0;i<nallatom;++i)
141
fprintf(outfile,"to_nodummy[%d]: %d\n",i,optinfo.to_nodummy[i]);
156
202
fprintf(outfile,"print_symmetry %d\n",optinfo.print_symmetry);
157
203
fprintf(outfile,"optimize: %d\n",optinfo.optimize);
158
204
fprintf(outfile,"zmat: %d\n",optinfo.zmat);
205
fprintf(outfile,"dummy_axis_1: %d\n",optinfo.dummy_axis_1);
206
fprintf(outfile,"dummy_axis_2: %d\n",optinfo.dummy_axis_2);
207
fprintf(outfile,"points: %d\n",optinfo.points);
159
208
fprintf(outfile,"zmat_simples: %d\n",optinfo.zmat_simples);
160
209
fprintf(outfile,"redundant: %d\n",optinfo.redundant);
161
210
fprintf(outfile,"bfgs: %d\n",optinfo.bfgs);