ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libBASS/Globals.cpp
(Generate patch)

Comparing trunk/OOPSE/libBASS/Globals.cpp (file contents):
Revision 655 by mmeineke, Tue Jul 29 16:32:06 2003 UTC vs.
Revision 1153 by gezelter, Tue May 11 04:21:52 2004 UTC

# Line 1 | Line 1
1 < #include <cstdlib>
2 < #include <cstdio>
3 < #include <cstring>
1 > #include <stdlib.h>
2 > #include <stdio.h>
3 > #include <string.h>
4  
5   #include "Globals.hpp"
6   #include "simError.h"
# Line 17 | Line 17
17   */
18  
19   //required parameters
20 < #define G_FORCEFIELD  1
21 < #define G_NCOMPONENTS 2
22 < #define G_TARGETTEMP  3
23 < #define G_ENSEMBLE    4
24 < #define G_DT          5
25 < #define G_RUNTIME     6
20 > #define G_FORCEFIELD         1
21 > #define G_NCOMPONENTS        2
22 > #define G_TARGETTEMP         3
23 > #define G_ENSEMBLE           4
24 > #define G_DT                 5
25 > #define G_RUNTIME            6
26  
27   //optional parameters
28 < #define G_INITIALCONFIG   7
29 < #define G_FINALCONFIG     8
30 < #define G_NMOL            9
31 < #define G_DENSITY        10
32 < #define G_BOX            11
33 < #define G_BOXX           12
34 < #define G_BOXY           13
35 < #define G_BOXZ           14
36 < #define G_SAMPLETIME     15
37 < #define G_STATUSTIME     16
38 < #define G_ECR            17
39 < #define G_DIELECTRIC     18
40 < #define G_TEMPSET        19
41 < #define G_THERMALTIME    20
42 < #define G_USEPBC         21
43 < #define G_MIXINGRULE     22
44 < #define G_EST            23
45 < #define G_USERF          24
46 < #define G_TARGETPRESSURE 25
47 < #define G_TAUTHERMOSTAT  26
48 < #define G_TAUBAROSTAT    27
28 > #define G_INITIALCONFIG      7
29 > #define G_FINALCONFIG        8
30 > #define G_NMOL               9
31 > #define G_DENSITY           10
32 > #define G_BOX               11
33 > #define G_BOXX              12
34 > #define G_BOXY              13
35 > #define G_BOXZ              14
36 > #define G_SAMPLETIME        15
37 > #define G_STATUSTIME        16
38 > #define G_RCUT              17
39 > #define G_RSW               18
40 > #define G_DIELECTRIC        19
41 > #define G_TEMPSET           20
42 > #define G_THERMALTIME       21
43 > #define G_USEPBC            22
44 > #define G_MIXINGRULE        23
45 > #define G_USERF             24
46 > #define G_TARGETPRESSURE    25
47 > #define G_TAUTHERMOSTAT     26
48 > #define G_TAUBAROSTAT       27
49 > #define G_ZCONSTIME         28
50 > #define G_NZCONSTRAINTS     29
51 > #define G_ZCONSTOL          30
52 > #define G_ZCONSFORCEPOLICY  31
53 > #define G_SEED              32
54 > #define G_RESETTIME         33
55 > #define G_USEINITTIME       34
56 > #define G_USEINIT_XS_STATE  35
57 > #define G_ORTHOBOXTOLERANCE 36
58 > #define G_MINIMIZER         37
59 > #define G_MIN_MAXITER       38
60 > #define G_MIN_WRITEFRQ      39
61 > #define G_MIN_STEPSIZE      40
62 > #define G_MIN_FTOL          41
63 > #define G_MIN_GTOL          42
64 > #define G_MIN_LSTOL         43
65 > #define G_MIN_LSMAXITER     44
66 > #define G_ZCONSGAP          45
67 > #define G_ZCONSFIXTIME      46
68 > #define G_ZCONSUSINGSMD     47
69  
50
70   Globals::Globals(){
71    
72    int i;
73 +
74 +  hash_size = 23;
75 +  hash_shift = 4;
76    
77    components = NULL;
78    
# Line 74 | Line 96 | Globals::Globals(){
96    addHash( "boxY",          G_BOXY );
97    addHash( "boxZ",          G_BOXZ );
98    addHash( "sampleTime",    G_SAMPLETIME );
99 +  addHash( "resetTime",     G_RESETTIME );
100    addHash( "statusTime",    G_STATUSTIME );
101 <  addHash( "electrostaticCutoffRadius",            G_ECR );
101 >  addHash( "cutoffRadius",  G_RCUT );
102 >  addHash( "switchingRadius",  G_RSW );
103    addHash( "dielectric",    G_DIELECTRIC );
104    addHash( "tempSet",       G_TEMPSET );
105    addHash( "thermalTime",   G_THERMALTIME );
106    addHash( "mixingRule",    G_MIXINGRULE);
107    addHash( "usePeriodicBoundaryConditions",        G_USEPBC);
84  addHash( "electrostaticSkinThickness",           G_EST );
108    addHash( "useReactionField",                     G_USERF );
109    addHash( "targetPressure",                       G_TARGETPRESSURE);
110    addHash( "tauThermostat",                        G_TAUTHERMOSTAT);
111    addHash( "tauBarostat",                          G_TAUBAROSTAT);
112 <  
113 <  // define some default values
112 >  addHash( "zconsTime",                            G_ZCONSTIME);
113 >  addHash( "nZconstraints",                        G_NZCONSTRAINTS);
114 >  addHash( "zconsTol",                             G_ZCONSTOL);
115 >  addHash( "zconsForcePolicy",                     G_ZCONSFORCEPOLICY);
116 >  addHash( "seed",                                 G_SEED);
117 >  addHash( "useInitialTime",                       G_USEINITTIME);
118 >  addHash( "useInitialExtendedSystemState",        G_USEINIT_XS_STATE);
119 >  addHash( "orthoBoxTolerance",                    G_ORTHOBOXTOLERANCE);
120 >  addHash( "minimizer", G_MINIMIZER);
121 >  addHash( "minMaxIter", G_MIN_MAXITER);
122 >  addHash( "minWriteFrq", G_MIN_WRITEFRQ);
123 >  addHash( "minStepSize", G_MIN_STEPSIZE);
124 >  addHash( "minFTol", G_MIN_FTOL);
125 >  addHash( "minGTol", G_MIN_GTOL);
126 >  addHash( "minLSTol", G_MIN_LSTOL);
127 >  addHash( "minLSMaxIter", G_MIN_LSMAXITER);
128 >  addHash( "zconsGap", G_ZCONSGAP);
129 >  addHash( "zconsFixtime", G_ZCONSFIXTIME);
130 >  addHash( "zconsUsingSMD", G_ZCONSUSINGSMD);
131  
132    strcpy( mixingRule,"standard");  //default mixing rules to standard.
133    usePBC = 1; //default  periodic boundry conditions to on
134    useRF  = 0;
135 <  
135 >  useInitTime = 0; // default to pull init time from the init file
136 >  useInitXSstate = 0; // default to pull the extended state from the init file
137 >  orthoBoxTolerance = 1E-6;
138 >
139    have_force_field =  0;
140    have_n_components = 0;
141    have_target_temp =  0;
# Line 111 | Line 154 | Globals::Globals(){
154    have_box_z =          0;
155    have_sample_time =    0;
156    have_status_time =    0;
157 +  have_reset_time =     0;
158    have_thermal_time =   0;
159 <  have_ecr =            0;
159 >  have_rcut =           0;
160 >  have_rsw =            0;
161    have_dielectric =     0;
162    have_tempSet =        0;
118  have_est =            0;
163    have_target_pressure =0;
164    have_q_mass =         0;
165    have_tau_thermostat = 0;
166 <  have_tau_barostat =   0;
167 < }
166 >  have_tau_barostat   = 0;
167 >  have_zcons_time     = 0;
168 >  have_n_zConstraints = 0;
169 >  have_zConstraints   = 0;
170 >  have_zcons_tol = 0;
171 >  have_zcons_gap = 0;
172 >  have_zcons_fixtime = 0;
173 >  have_zcons_using_smd = 0;  
174 >  have_seed = 0;
175 >  have_minimizer = 0;
176 >  have_minimizer_maxiteration = 0;
177 >  have_minimizer_writefrq = 0;
178 >  have_minimizer_stepsize = 0;
179 >  have_minimizer_ftol = 0;
180 >  have_minimizer_gtol = 0;
181 >  have_minimizer_ls_tol = 0;
182 >  have_minimizer_ls_maxiteration = 0;
183  
184 + }
185 +
186   Globals::~Globals(){
187    int i;
188  
# Line 194 | Line 255 | int Globals::componentStartIndex( event* the_event ){
255    return 0;
256   }
257  
258 < int Globals::componentStartIndex( event* the_event ){
258 > int Globals::componentEnd( event* the_event ){
259  
260 <  current_component->startIndex( the_event->evt.si.array,
261 <                                 the_event->evt.si.n_elements );
260 >  the_event->err_msg = current_component->checkMe();
261 >  if( the_event->err_msg != NULL ) return 0;
262 >
263    return 1;
264   }
265  
266 < int Globals::componentEnd( event* the_event ){
266 > int Globals::newZconstraint( event* the_event ){
267 >  
268  
269 <  the_event->err_msg = current_component->checkMe();
269 >  int index = the_event->evt.blk_index;
270 >  char err[200];
271 >  current_zConstraint = new ZconStamp( index );
272 >  
273 >  have_zConstraints = 1;
274 >
275 >  if( have_n_zConstraints && index < n_zConstraints )
276 >    zConstraints[index] = current_zConstraint;
277 >  else{
278 >    if( have_n_zConstraints ){
279 >      sprintf( err, "Globals error, %d out of nZconstraints range",
280 >               index );
281 >      the_event->err_msg = strdup( err );
282 >      return 0;
283 >    }
284 >    else{
285 >      the_event->err_msg = strdup("Globals error, nZconstraints"
286 >                                  " not given before"
287 >                                  " first zConstraint declaration." );
288 >      return 0;
289 >    }
290 >  }  
291 >
292 >  return 1;
293 > }
294 >
295 >
296 >
297 > int Globals::zConstraintAssign( event* the_event ){
298 >
299 >  switch( the_event->evt.asmt.asmt_type ){
300 >    
301 >  case STRING:
302 >    return current_zConstraint->assignString( the_event->evt.asmt.lhs,
303 >                                              the_event->evt.asmt.rhs.sval,
304 >                                              &(the_event->err_msg));
305 >    break;
306 >    
307 >  case DOUBLE:
308 >    return current_zConstraint->assignDouble( the_event->evt.asmt.lhs,
309 >                                              the_event->evt.asmt.rhs.dval,
310 >                                              &(the_event->err_msg));
311 >    break;
312 >    
313 >  case INT:
314 >    return current_zConstraint->assignInt( the_event->evt.asmt.lhs,
315 >                                           the_event->evt.asmt.rhs.ival,
316 >                                           &(the_event->err_msg));
317 >    break;
318 >    
319 >  default:
320 >    the_event->err_msg = strdup( "Globals error. Invalid zConstraint"
321 >                                 " assignment type" );
322 >    return 0;
323 >    break;
324 >  }
325 >  return 0;
326 > }
327 >
328 > int Globals::zConstraintEnd( event* the_event ){
329 >
330 >  the_event->err_msg = current_zConstraint->checkMe();
331    if( the_event->err_msg != NULL ) return 0;
332  
333    return 1;
# Line 258 | Line 382 | int Globals::globalAssign( event* the_event ){
382          return 1;
383        }
384        break;
385 +
386 +    case G_NZCONSTRAINTS:
387 +      if( the_type == STRING ){
388 +        the_event->err_msg =
389 +          strdup("Global error. nZconstraints is not a double or an int.\n" );
390 +        return 0;
391 +      }
392        
393 +      else if( the_type == DOUBLE ){
394 +        n_zConstraints = (int)the_event->evt.asmt.rhs.dval;
395 +        zConstraints = new ZconStamp*[n_zConstraints];
396 +        have_n_zConstraints = 1;
397 +        return 1;
398 +      }
399 +      
400 +      else{
401 +        n_zConstraints = the_event->evt.asmt.rhs.ival;
402 +        zConstraints = new ZconStamp*[n_zConstraints];
403 +        have_n_zConstraints = 1;
404 +        return 1;
405 +      }
406 +      break;
407 +      
408      case G_TARGETTEMP:
409        switch( the_type ){
410          
# Line 287 | Line 433 | int Globals::globalAssign( event* the_event ){
433          break;
434        }
435        break;
436 +
437 +    case G_ORTHOBOXTOLERANCE:
438 +      switch( the_type ){
439 +        
440 +      case STRING:
441 +        the_event->err_msg =
442 +          strdup( "Global error. orthoBoxTolerance is not a double or int.\n" );
443 +        return 0;
444 +        break;
445 +        
446 +      case DOUBLE:
447 +        orthoBoxTolerance = the_event->evt.asmt.rhs.dval;
448 +        have_target_temp = 1;
449 +        return 1;
450 +        break;
451 +        
452 +      case INT:
453 +        orthoBoxTolerance = (double)the_event->evt.asmt.rhs.ival;
454 +        have_target_temp = 1;
455 +        return 1;
456 +        break;
457 +        
458 +      default:
459 +        the_event->err_msg =
460 +          strdup( "Global error.orthoBoxTolerance unrecognized.\n" );
461 +        return 0;
462 +        break;
463 +      }
464 +      break;
465        
466      case G_ENSEMBLE:
467        if( the_type == STRING ){
# Line 625 | Line 800 | int Globals::globalAssign( event* the_event ){
800        }
801        break;
802  
803 <   case G_THERMALTIME:
803 >    case G_RESETTIME:
804 >      switch( the_type ){
805 >        
806 >      case STRING:
807 >        the_event->err_msg =
808 >          strdup( "Global error. resetTime is not a double or int.\n" );
809 >        return 0;
810 >        break;
811 >        
812 >      case DOUBLE:
813 >        resetTime = the_event->evt.asmt.rhs.dval;
814 >        have_reset_time = 1;
815 >        return 1;
816 >        break;
817 >        
818 >      case INT:
819 >        resetTime = (double)the_event->evt.asmt.rhs.ival;
820 >        have_reset_time = 1;
821 >        return 1;
822 >        break;
823 >        
824 >      default:
825 >        the_event->err_msg =
826 >          strdup( "Global error. resetTime unrecognized.\n" );
827 >        return 0;
828 >        break;
829 >      }
830 >      break;
831 >
832 >    case G_THERMALTIME:
833        switch( the_type ){
834          
835        case STRING:
# Line 654 | Line 858 | int Globals::globalAssign( event* the_event ){
858        }
859        break;
860        
861 <    case G_ECR:
861 >    case G_RCUT:
862        switch( the_type ){
863          
864        case STRING:
865          the_event->err_msg =
866 <          strdup( "Global error. electrostaticCutoffRadius is not a double or int.\n" );
866 >          strdup( "Global error. cutoffRadius is not a double or int.\n" );
867          return 0;
868          break;
869          
870        case DOUBLE:
871 <        ecr = the_event->evt.asmt.rhs.dval;
872 <        have_ecr = 1;
871 >        rcut = the_event->evt.asmt.rhs.dval;
872 >        have_rcut = 1;
873          return 1;
874          break;
875          
876        case INT:
877 <        ecr = (double)the_event->evt.asmt.rhs.ival;
878 <        have_ecr = 1;
877 >        rcut = (double)the_event->evt.asmt.rhs.ival;
878 >        have_rcut = 1;
879          return 1;
880          break;
881          
882        default:
883          the_event->err_msg =
884 <          strdup( "Global error. electrostaticCutoffRadius unrecognized.\n" );
884 >          strdup( "Global error. cutoffRadius unrecognized.\n" );
885          return 0;
886          break;
887        }
888        break;
889  
890 <    case G_EST:
890 >    case G_RSW:
891        switch( the_type ){
892          
893        case STRING:
894          the_event->err_msg =
895 <          strdup( "Global error. electrostaticSkinThickness is not a double or int.\n" );
895 >          strdup( "Global error. switchingRadius is not a double or int.\n" );
896          return 0;
897          break;
898          
899        case DOUBLE:
900 <        est = the_event->evt.asmt.rhs.dval;
901 <        have_est = 1;
900 >        rsw = the_event->evt.asmt.rhs.dval;
901 >        have_rsw = 1;
902          return 1;
903          break;
904          
905        case INT:
906 <        est = (double)the_event->evt.asmt.rhs.ival;
907 <        have_est = 1;
906 >        rsw = (double)the_event->evt.asmt.rhs.ival;
907 >        have_rsw = 1;
908          return 1;
909          break;
910          
911        default:
912          the_event->err_msg =
913 <          strdup( "Global error. electrostaticSkinThickness unrecognized.\n" );
913 >          strdup( "Global error. switchingRadius unrecognized.\n" );
914          return 0;
915          break;
916        }
# Line 759 | Line 963 | int Globals::globalAssign( event* the_event ){
963          strdup( "Global error. tempSet was not \"true\" or \"false\".\n" );
964        return 0;
965        break;
966 +
967 +    case G_USEINITTIME:
968 +      if( the_type == STRING ){
969 +        
970 +        if( !strcasecmp( "true", the_event->evt.asmt.rhs.sval )) useInitTime = 1;
971 +        else if( !strcasecmp( "false", the_event->evt.asmt.rhs.sval )) useInitTime = 0;
972 +        else{
973 +          the_event->err_msg =
974 +            strdup( "Global error. useInitTime was not \"true\" or \"false\".\n" );
975 +          return 0;
976 +        }
977 +        return 1;
978 +      }
979        
980 +      the_event->err_msg =
981 +        strdup( "Global error. useInitTime was not \"true\" or \"false\".\n" );
982 +      return 0;
983 +      break;
984 +
985 +    case G_USEINIT_XS_STATE:
986 +      if( the_type == STRING ){
987 +        
988 +        if( !strcasecmp( "true", the_event->evt.asmt.rhs.sval ))
989 +          useInitXSstate = 1;
990 +        else if( !strcasecmp( "false", the_event->evt.asmt.rhs.sval ))
991 +          useInitXSstate = 0;
992 +        else{
993 +          the_event->err_msg =
994 +            strdup( "Global error. useInitExtendedSystemState was not \"true\" or \"false\".\n" );
995 +          return 0;
996 +        }
997 +        return 1;
998 +      }
999 +      
1000 +      the_event->err_msg =
1001 +        strdup( "Global error. useInitExtendedSystemState was not \"true\" or \"false\".\n" );
1002 +      return 0;
1003 +      break;
1004 +      
1005      case G_USEPBC:
1006        if( the_type == STRING ){
1007          
# Line 882 | Line 1124 | int Globals::globalAssign( event* the_event ){
1124          break;
1125        }
1126        break;
1127 +      
1128 +    case G_ZCONSTIME:
1129 +      switch( the_type ){
1130 +        
1131 +      case STRING:
1132 +        the_event->err_msg =
1133 +          strdup( "Global error. zcons_time is not a double or int.\n" );
1134 +        return 0;
1135 +        break;
1136 +        
1137 +      case DOUBLE:
1138 +        zcons_time = the_event->evt.asmt.rhs.dval;
1139 +        have_zcons_time = 1;
1140 +        return 1;
1141 +        break;
1142 +        
1143 +      case INT:
1144 +        zcons_time = (double)the_event->evt.asmt.rhs.ival;
1145 +        have_zcons_time = 1;
1146 +        return 1;
1147 +        break;
1148 +        
1149 +      default:
1150 +        the_event->err_msg =
1151 +          strdup( "Global error. zcons_time unrecognized.\n" );
1152 +        return 0;
1153 +        break;
1154 +      }
1155 +      break;
1156  
1157 +    case G_ZCONSTOL:
1158 +      switch( the_type ){
1159 +        
1160 +      case STRING:
1161 +        the_event->err_msg =
1162 +          strdup( "Global error. zcons_tol is not a double or int.\n" );
1163 +        return 0;
1164 +        break;
1165 +        
1166 +      case DOUBLE:
1167 +        zcons_tol = the_event->evt.asmt.rhs.dval;
1168 +        have_zcons_tol = 1;
1169 +        return 1;
1170 +        break;
1171 +        
1172 +      case INT:
1173 +        zcons_tol = (double)the_event->evt.asmt.rhs.ival;
1174 +        have_zcons_tol = 1;
1175 +        return 1;
1176 +        break;
1177 +        
1178 +      default:
1179 +        the_event->err_msg =
1180 +          strdup( "Global error. zcons_ol unrecognized.\n" );
1181 +        return 0;
1182 +        break;
1183 +      }
1184 +      break;
1185 +  
1186 +    case G_ZCONSFORCEPOLICY:
1187 +      switch( the_type ){
1188 +        
1189 +      case STRING:
1190 +   strcpy(zconsForcePolicy, the_event->evt.asmt.rhs.sval);
1191  
1192 +   for(int i = 0; zconsForcePolicy[i] != '\0'; i++)
1193 +        {
1194 +      zconsForcePolicy[i] = toupper(zconsForcePolicy[i]);
1195 +   }
1196 +        have_zcons_force_policy = 1;
1197 +   return 1;
1198 +        break;
1199 +        
1200 +      case DOUBLE:
1201 +        the_event->err_msg =
1202 +          strdup( "Global error. zconsForcePolicy is not a double or int.\n" );
1203 +        return 0;
1204 +        break;
1205 +        
1206 +      case INT:
1207 +        the_event->err_msg =
1208 +          strdup( "Global error. zconsForcePolicy is not a double or int.\n" );
1209 +        return 0;
1210 +        break;
1211 +        
1212 +      default:
1213 +        the_event->err_msg =
1214 +          strdup( "Global error. zconsForcePolicy unrecognized.\n" );
1215 +        return 0;
1216 +        break;
1217 +      }
1218 +      break;
1219 +      
1220 +    case G_ZCONSGAP:
1221 +      switch( the_type ){
1222 +  
1223 +      case STRING:
1224 +        the_event->err_msg =
1225 +          strdup( "Global error. zcons_gap is not a double or int.\n" );
1226 +        return 0;
1227 +        break;
1228 +  
1229 +      case DOUBLE:
1230 +        zcons_gap = the_event->evt.asmt.rhs.dval;
1231 +        have_zcons_gap= 1;
1232 +        return 1;
1233 +        break;
1234 +  
1235 +      case INT:
1236 +        zcons_gap= (double)the_event->evt.asmt.rhs.ival;
1237 +        have_zcons_gap= 1;
1238 +        return 1;
1239 +        break;
1240 +  
1241 +      default:
1242 +        the_event->err_msg =
1243 +          strdup( "Global error. zcons_gap unrecognized.\n" );
1244 +        return 0;
1245 +        break;
1246 +      }
1247 +      break;
1248 +
1249 +    case G_ZCONSFIXTIME:
1250 +      switch( the_type ){
1251 +  
1252 +      case STRING:
1253 +        the_event->err_msg =
1254 +          strdup( "Global error. zcons_fixtime is not a double or int.\n" );
1255 +        return 0;
1256 +        break;
1257 +  
1258 +      case DOUBLE:
1259 +        zcons_fixtime= the_event->evt.asmt.rhs.dval;
1260 +        have_zcons_fixtime= 1;
1261 +        return 1;
1262 +        break;
1263 +  
1264 +      case INT:
1265 +        zcons_fixtime= (double)the_event->evt.asmt.rhs.ival;
1266 +        have_zcons_fixtime= 1;
1267 +        return 1;
1268 +        break;
1269 +  
1270 +      default:
1271 +        the_event->err_msg =
1272 +          strdup( "Global error. zcons_fixtime unrecognized.\n" );
1273 +        return 0;
1274 +        break;
1275 +      }
1276 +      break;
1277 +
1278 +    case G_ZCONSUSINGSMD:
1279 +      switch( the_type ){
1280 +  
1281 +      case STRING:
1282 +        the_event->err_msg =
1283 +          strdup( "Global error. zcons_fixtime is not an  int.\n" );
1284 +        return 0;
1285 +        break;
1286 +  
1287 +      case DOUBLE:
1288 +        the_event->err_msg =
1289 +          strdup( "Global error. zcons_fixtime is not an  int.\n" );
1290 +        return 0;
1291 +        break;
1292 +  
1293 +      case INT:
1294 +        zcons_using_smd= the_event->evt.asmt.rhs.ival;
1295 +        have_zcons_using_smd= 1;
1296 +        return 1;
1297 +        break;
1298 +  
1299 +      default:
1300 +        the_event->err_msg =
1301 +          strdup( "Global error. zcons_usingsmd unrecognized.\n" );
1302 +        return 0;
1303 +        break;
1304 +      }
1305 +      break;
1306 +      
1307 +    case G_MINIMIZER:
1308 +      switch( the_type ){
1309 +
1310 +      case STRING:
1311 +        strcpy(minimizer_name, the_event->evt.asmt.rhs.sval);
1312 +
1313 +        for(int i = 0; zconsForcePolicy[i] != '\0'; i++){
1314 +          zconsForcePolicy[i] = toupper(zconsForcePolicy[i]);
1315 +        }
1316 +        have_minimizer= 1;
1317 +        return 1;
1318 +        break;
1319 +        
1320 +      case DOUBLE:
1321 +        the_event->err_msg =
1322 +          strdup( "Global error. minimizer_name is not a double or int.\n" );
1323 +        return 0;
1324 +        break;
1325 +        
1326 +      case INT:
1327 +        the_event->err_msg =
1328 +          strdup( "Global error. minimizer_name is not a double or int.\n" );
1329 +        return 0;
1330 +        break;
1331 +        
1332 +      default:
1333 +        the_event->err_msg =
1334 +          strdup( "Global error. minimizer_name unrecognized.\n" );
1335 +        return 0;
1336 +        break;
1337 +      }
1338 +      break;
1339 +
1340 +    case G_MIN_MAXITER:
1341 +      switch( the_type ){
1342 +
1343 +      case STRING:
1344 +        the_event->err_msg =
1345 +          strdup( "Global error. minimizer_maxiteration is not a double or int.\n" );
1346 +        return 1;
1347 +        break;
1348 +        
1349 +      case DOUBLE:
1350 +        minimizer_maxiteration = the_event->evt.asmt.rhs.dval;
1351 +        have_minimizer_maxiteration = 1;
1352 +        return 1;
1353 +        break;
1354 +        
1355 +      case INT:
1356 +        minimizer_maxiteration = the_event->evt.asmt.rhs.ival;
1357 +        have_minimizer_maxiteration = 1;
1358 +        return 1;
1359 +        break;
1360 +        
1361 +      default:
1362 +        the_event->err_msg =
1363 +          strdup( "Global error. minimizer_maxiteration unrecognized.\n" );
1364 +        return 0;
1365 +        break;
1366 +      }
1367 +      break;
1368 +      
1369 +    case G_MIN_WRITEFRQ:
1370 +      switch( the_type ){
1371 +
1372 +      case STRING:
1373 +        the_event->err_msg =
1374 +          strdup( "Global error. minimizer_writefrq is not a double or int.\n" );
1375 +        return 1;
1376 +        break;
1377 +        
1378 +      case DOUBLE:
1379 +        minimizer_writefrq= the_event->evt.asmt.rhs.dval;
1380 +        have_minimizer_writefrq = 1;
1381 +        return 1;
1382 +        break;
1383 +        
1384 +      case INT:
1385 +        minimizer_writefrq= the_event->evt.asmt.rhs.ival;
1386 +        have_minimizer_writefrq = 1;
1387 +        return 1;
1388 +        break;
1389 +        
1390 +      default:
1391 +        the_event->err_msg =
1392 +          strdup( "Global error. minimizer_writefrq unrecognized.\n" );
1393 +        return 0;
1394 +        break;
1395 +      }
1396 +      break;
1397 +
1398 +    case G_MIN_STEPSIZE:
1399 +      switch( the_type ){
1400 +
1401 +      case STRING:
1402 +        the_event->err_msg =
1403 +          strdup( "Global error. minimizer_resetfrq is not a double or int.\n" );
1404 +        return 1;
1405 +        break;
1406 +        
1407 +      case DOUBLE:
1408 +        minimizer_stepsize= the_event->evt.asmt.rhs.dval;
1409 +        have_minimizer_stepsize = 1;
1410 +        return 1;
1411 +        break;
1412 +        
1413 +      case INT:
1414 +        minimizer_stepsize= the_event->evt.asmt.rhs.ival;
1415 +        have_minimizer_stepsize = 1;
1416 +        return 1;
1417 +        break;
1418 +        
1419 +      default:
1420 +        the_event->err_msg =
1421 +          strdup( "Global error. minimizer_resetfrq unrecognized.\n" );
1422 +        return 0;
1423 +        break;
1424 +      }
1425 +      break;      
1426 +
1427 +    case G_MIN_FTOL:
1428 +      switch( the_type ){
1429 +
1430 +      case STRING:
1431 +        the_event->err_msg =
1432 +          strdup( "Global error. minimizer_ftol is not a double or int.\n" );
1433 +        return 1;
1434 +        break;
1435 +        
1436 +      case DOUBLE:
1437 +        minimizer_ftol= the_event->evt.asmt.rhs.dval;
1438 +        have_minimizer_ftol = 1;
1439 +        return 1;
1440 +        break;
1441 +        
1442 +      case INT:
1443 +        minimizer_ftol= the_event->evt.asmt.rhs.ival;
1444 +        have_minimizer_ftol = 1;
1445 +        return 1;
1446 +        break;
1447 +        
1448 +      default:
1449 +        the_event->err_msg =
1450 +          strdup( "Global error. minimizer_ftol unrecognized.\n" );
1451 +        return 0;
1452 +        break;
1453 +      }
1454 +      break;
1455 +      
1456 +    case G_MIN_GTOL:
1457 +      switch( the_type ){
1458 +
1459 +      case STRING:
1460 +        the_event->err_msg =
1461 +          strdup( "Global error. minimizer_gtol is not a double or int.\n" );
1462 +        return 1;
1463 +        break;
1464 +        
1465 +      case DOUBLE:
1466 +        minimizer_gtol= the_event->evt.asmt.rhs.dval;
1467 +        have_minimizer_gtol = 1;
1468 +        return 1;
1469 +        break;
1470 +        
1471 +      case INT:
1472 +        minimizer_gtol= the_event->evt.asmt.rhs.ival;
1473 +        have_minimizer_gtol = 1;
1474 +        return 1;
1475 +        break;
1476 +        
1477 +      default:
1478 +        the_event->err_msg =
1479 +          strdup( "Global error. minimizer_gtol unrecognized.\n" );
1480 +        return 0;
1481 +        break;
1482 +      }
1483 +      break;
1484 +      
1485 +    case G_MIN_LSMAXITER:
1486 +      switch( the_type ){
1487 +
1488 +      case STRING:
1489 +        the_event->err_msg =
1490 +          strdup( "Global error. minimizer_ls_maxiteration is not a double or int.\n" );
1491 +        return 1;
1492 +        break;
1493 +        
1494 +      case DOUBLE:
1495 +        minimizer_ls_maxiteration = the_event->evt.asmt.rhs.dval;
1496 +        have_minimizer_ls_maxiteration = 1;
1497 +        return 1;
1498 +        break;
1499 +        
1500 +      case INT:
1501 +        minimizer_ls_maxiteration = the_event->evt.asmt.rhs.ival;
1502 +        have_minimizer_ls_maxiteration = 1;
1503 +        return 1;
1504 +        break;
1505 +        
1506 +      default:
1507 +        the_event->err_msg =
1508 +          strdup( "Global error. minimizer_ls_maxiteration unrecognized.\n" );
1509 +        return 0;
1510 +        break;
1511 +      }
1512 +      break;      
1513 +
1514 +    case G_MIN_LSTOL:
1515 +      switch( the_type ){
1516 +
1517 +      case STRING:
1518 +        the_event->err_msg =
1519 +          strdup( "Global error. minimizer_ls_tol is not a double or int.\n" );
1520 +        return 1;
1521 +        break;
1522 +        
1523 +      case DOUBLE:
1524 +        minimizer_ls_tol= the_event->evt.asmt.rhs.dval;
1525 +        have_minimizer_ls_tol = 1;
1526 +        return 1;
1527 +        break;
1528 +        
1529 +      case INT:
1530 +        minimizer_ls_tol= the_event->evt.asmt.rhs.ival;
1531 +        have_minimizer_ls_tol = 1;
1532 +        return 1;
1533 +        break;
1534 +        
1535 +      default:
1536 +        the_event->err_msg =
1537 +          strdup( "Global error. minimizer_ls_tol unrecognized.\n" );
1538 +        return 0;
1539 +        break;
1540 +      }
1541 +      break;
1542 +      
1543        // add more token cases here.
1544 +    case G_SEED:
1545 +      switch( the_type ){
1546 +        
1547 +      case STRING:
1548 +   the_event->err_msg =
1549 +          strdup( "Global error. seed is not a string.\n" );
1550 +        return 0;
1551 +   return 0;
1552 +        break;
1553 +        
1554 +      case DOUBLE:
1555 +   have_seed = 1;
1556 +   seed = (int)the_event->evt.asmt.rhs.dval;
1557 +        return 1;
1558 +        break;
1559 +        
1560 +      case INT:
1561 +   have_seed = 1;
1562 +   seed =  the_event->evt.asmt.rhs.ival ;
1563 +        return 1;
1564 +        break;
1565 +        
1566 +      default:
1567 +        the_event->err_msg =
1568 +          strdup( "Global error. seed unrecognized.\n" );
1569 +        return 0;
1570 +        break;
1571 +      }
1572 +      break;
1573 +      // add more token cases here.
1574  
1575      }
1576    }
# Line 946 | Line 1632 | char* Globals::checkMe( void ){
1632      have_err= 1;
1633    }
1634    
1635 <  if( !have_ensemble ){
1636 <    strcat( err, "\t->ensemble\n" );
1637 <    have_err= 1;
1638 <  }
1635 >  if(!have_minimizer)
1636 >    if( !have_ensemble ){
1637 >      strcat( err, "\t->ensemble\n" );
1638 >      have_err= 1;
1639 >    }
1640    
1641    if( !have_dt ){
1642      strcat( err, "\t->dt\n" );

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines