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

Comparing:
branches/mmeineke/OOPSE/libBASS/Globals.cpp (file contents), Revision 377 by mmeineke, Fri Mar 21 17:42:12 2003 UTC vs.
trunk/OOPSE/libBASS/Globals.cpp (file contents), Revision 1099 by gezelter, Mon Apr 12 20:33:12 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_RRF           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
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
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_LJRCUT            37
59 > #define G_MINIMIZER 38
60 > #define G_MIN_MAXITER 39
61 > #define G_MIN_WRITEFRQ 40
62 > #define G_MIN_STEPSIZE 41
63 > #define G_MIN_FTOL 42
64 > #define G_MIN_GTOL 43
65 > #define G_MIN_LSTOL 44
66 > #define G_MIN_LSMAXITER 45
67 > #define G_ZCONSGAP 46
68 > #define G_ZCONSFIXTIME 47
69 > #define G_ZCONSUSINGSMD 48
70  
45
71   Globals::Globals(){
72    
73    int i;
74 +
75 +  hash_size = 23;
76 +  hash_shift = 4;
77    
78    components = NULL;
79    
# Line 69 | Line 97 | Globals::Globals(){
97    addHash( "boxY",          G_BOXY );
98    addHash( "boxZ",          G_BOXZ );
99    addHash( "sampleTime",    G_SAMPLETIME );
100 +  addHash( "resetTime",     G_RESETTIME );
101    addHash( "statusTime",    G_STATUSTIME );
102 <  addHash( "rRF",           G_RRF );
102 >  addHash( "electrostaticCutoffRadius",            G_ECR );
103    addHash( "dielectric",    G_DIELECTRIC );
104    addHash( "tempSet",       G_TEMPSET );
105    addHash( "thermalTime",   G_THERMALTIME );
106    addHash( "mixingRule",    G_MIXINGRULE);
107 <  addHash( "periodicBox",   G_USEPBC);
108 <  
109 <  // define some default values
107 >  addHash( "usePeriodicBoundaryConditions",        G_USEPBC);
108 >  addHash( "electrostaticSkinThickness",           G_EST );
109 >  addHash( "useReactionField",                     G_USERF );
110 >  addHash( "targetPressure",                       G_TARGETPRESSURE);
111 >  addHash( "tauThermostat",                        G_TAUTHERMOSTAT);
112 >  addHash( "tauBarostat",                          G_TAUBAROSTAT);
113 >  addHash( "zconsTime",                            G_ZCONSTIME);
114 >  addHash( "nZconstraints",                        G_NZCONSTRAINTS);
115 >  addHash( "zconsTol",                             G_ZCONSTOL);
116 >  addHash( "zconsForcePolicy",                     G_ZCONSFORCEPOLICY);
117 >  addHash( "seed",                                 G_SEED);
118 >  addHash( "useInitialTime",                       G_USEINITTIME);
119 >  addHash( "useInitialExtendedSystemState",        G_USEINIT_XS_STATE);
120 >  addHash( "orthoBoxTolerance",                    G_ORTHOBOXTOLERANCE);
121 >  addHash( "LJrcut",                               G_LJRCUT);
122 >  addHash( "minimizer", G_MINIMIZER);
123 >  addHash( "minMaxIter", G_MIN_MAXITER);
124 >  addHash( "minWriteFrq", G_MIN_WRITEFRQ);
125 >  addHash( "minStepSize", G_MIN_STEPSIZE);
126 >  addHash( "minFTol", G_MIN_FTOL);
127 >  addHash( "minGTol", G_MIN_GTOL);
128 >  addHash( "minLSTol", G_MIN_LSTOL);
129 >  addHash( "minLSMaxIter", G_MIN_LSMAXITER);
130 >  addHash( "zconsGap", G_ZCONSGAP);
131 >  addHash( "zconsFixtime", G_ZCONSFIXTIME);
132 >    addHash( "zconsUsingSMD", G_ZCONSUSINGSMD);
133  
134    strcpy( mixingRule,"standard");  //default mixing rules to standard.
135    usePBC = 1; //default  periodic boundry conditions to on
136 <  
136 >  useRF  = 0;
137 >  useInitTime = 1; // default to pull init time from the init file
138 >  useInitXSstate = 1; // default to pull the extended state from the init file
139 >  orthoBoxTolerance = 1E-6;
140  
141    have_force_field =  0;
142    have_n_components = 0;
# Line 101 | Line 156 | Globals::Globals(){
156    have_box_z =          0;
157    have_sample_time =    0;
158    have_status_time =    0;
159 +  have_reset_time =     0;
160    have_thermal_time =   0;
161 <  have_rrf =            0;
161 >  have_ecr =            0;
162    have_dielectric =     0;
163    have_tempSet =        0;
164 < }
164 >  have_est =            0;
165 >  have_target_pressure =0;
166 >  have_q_mass =         0;
167 >  have_tau_thermostat = 0;
168 >  have_tau_barostat   = 0;
169 >  have_zcons_time     = 0;
170 >  have_n_zConstraints = 0;
171 >  have_zConstraints   = 0;
172 >  have_zcons_tol = 0;
173 >  have_zcons_gap = 0;
174 >  have_zcons_fixtime = 0;
175 >  have_zcons_using_smd = 0;  
176 >  have_seed = 0;
177 >  have_ljrcut = 0;
178 >  have_minimizer = 0;
179 >  have_minimizer_maxiteration = 0;
180 >  have_minimizer_writefrq = 0;
181 >  have_minimizer_stepsize = 0;
182 >  have_minimizer_ftol = 0;
183 >  have_minimizer_gtol = 0;
184 >  have_minimizer_ls_tol = 0;
185 >  have_minimizer_ls_maxiteration = 0;
186  
187 +
188 + }
189 +
190   Globals::~Globals(){
191    int i;
192  
# Line 179 | Line 259 | int Globals::componentStartIndex( event* the_event ){
259    return 0;
260   }
261  
262 < int Globals::componentStartIndex( event* the_event ){
262 > int Globals::componentEnd( event* the_event ){
263  
264 <  current_component->startIndex( the_event->evt.si.array,
265 <                                 the_event->evt.si.n_elements );
264 >  the_event->err_msg = current_component->checkMe();
265 >  if( the_event->err_msg != NULL ) return 0;
266 >
267    return 1;
268   }
269  
270 < int Globals::componentEnd( event* the_event ){
270 > int Globals::newZconstraint( event* the_event ){
271 >  
272  
273 <  the_event->err_msg = current_component->checkMe();
273 >  int index = the_event->evt.blk_index;
274 >  char err[200];
275 >  current_zConstraint = new ZconStamp( index );
276 >  
277 >  have_zConstraints = 1;
278 >
279 >  if( have_n_zConstraints && index < n_zConstraints )
280 >    zConstraints[index] = current_zConstraint;
281 >  else{
282 >    if( have_n_zConstraints ){
283 >      sprintf( err, "Globals error, %d out of nZconstraints range",
284 >               index );
285 >      the_event->err_msg = strdup( err );
286 >      return 0;
287 >    }
288 >    else{
289 >      the_event->err_msg = strdup("Globals error, nZconstraints"
290 >                                  " not given before"
291 >                                  " first zConstraint declaration." );
292 >      return 0;
293 >    }
294 >  }  
295 >
296 >  return 1;
297 > }
298 >
299 >
300 >
301 > int Globals::zConstraintAssign( event* the_event ){
302 >
303 >  switch( the_event->evt.asmt.asmt_type ){
304 >    
305 >  case STRING:
306 >    return current_zConstraint->assignString( the_event->evt.asmt.lhs,
307 >                                              the_event->evt.asmt.rhs.sval,
308 >                                              &(the_event->err_msg));
309 >    break;
310 >    
311 >  case DOUBLE:
312 >    return current_zConstraint->assignDouble( the_event->evt.asmt.lhs,
313 >                                              the_event->evt.asmt.rhs.dval,
314 >                                              &(the_event->err_msg));
315 >    break;
316 >    
317 >  case INT:
318 >    return current_zConstraint->assignInt( the_event->evt.asmt.lhs,
319 >                                           the_event->evt.asmt.rhs.ival,
320 >                                           &(the_event->err_msg));
321 >    break;
322 >    
323 >  default:
324 >    the_event->err_msg = strdup( "Globals error. Invalid zConstraint"
325 >                                 " assignment type" );
326 >    return 0;
327 >    break;
328 >  }
329 >  return 0;
330 > }
331 >
332 > int Globals::zConstraintEnd( event* the_event ){
333 >
334 >  the_event->err_msg = current_zConstraint->checkMe();
335    if( the_event->err_msg != NULL ) return 0;
336  
337    return 1;
# Line 243 | Line 386 | int Globals::globalAssign( event* the_event ){
386          return 1;
387        }
388        break;
389 +
390 +    case G_NZCONSTRAINTS:
391 +      if( the_type == STRING ){
392 +        the_event->err_msg =
393 +          strdup("Global error. nZconstraints is not a double or an int.\n" );
394 +        return 0;
395 +      }
396        
397 +      else if( the_type == DOUBLE ){
398 +        n_zConstraints = (int)the_event->evt.asmt.rhs.dval;
399 +        zConstraints = new ZconStamp*[n_zConstraints];
400 +        have_n_zConstraints = 1;
401 +        return 1;
402 +      }
403 +      
404 +      else{
405 +        n_zConstraints = the_event->evt.asmt.rhs.ival;
406 +        zConstraints = new ZconStamp*[n_zConstraints];
407 +        have_n_zConstraints = 1;
408 +        return 1;
409 +      }
410 +      break;
411 +      
412      case G_TARGETTEMP:
413        switch( the_type ){
414          
# Line 268 | Line 433 | int Globals::globalAssign( event* the_event ){
433        default:
434          the_event->err_msg =
435            strdup( "Global error. targetTemp unrecognized.\n" );
436 +        return 0;
437 +        break;
438 +      }
439 +      break;
440 +
441 +    case G_ORTHOBOXTOLERANCE:
442 +      switch( the_type ){
443 +        
444 +      case STRING:
445 +        the_event->err_msg =
446 +          strdup( "Global error. orthoBoxTolerance is not a double or int.\n" );
447 +        return 0;
448 +        break;
449 +        
450 +      case DOUBLE:
451 +        orthoBoxTolerance = the_event->evt.asmt.rhs.dval;
452 +        have_target_temp = 1;
453 +        return 1;
454 +        break;
455 +        
456 +      case INT:
457 +        orthoBoxTolerance = (double)the_event->evt.asmt.rhs.ival;
458 +        have_target_temp = 1;
459 +        return 1;
460 +        break;
461 +        
462 +      default:
463 +        the_event->err_msg =
464 +          strdup( "Global error.orthoBoxTolerance unrecognized.\n" );
465          return 0;
466          break;
467        }
# Line 610 | Line 804 | int Globals::globalAssign( event* the_event ){
804        }
805        break;
806  
807 <   case G_THERMALTIME:
807 >    case G_RESETTIME:
808        switch( the_type ){
809          
810        case STRING:
811          the_event->err_msg =
812 +          strdup( "Global error. resetTime is not a double or int.\n" );
813 +        return 0;
814 +        break;
815 +        
816 +      case DOUBLE:
817 +        resetTime = the_event->evt.asmt.rhs.dval;
818 +        have_reset_time = 1;
819 +        return 1;
820 +        break;
821 +        
822 +      case INT:
823 +        resetTime = (double)the_event->evt.asmt.rhs.ival;
824 +        have_reset_time = 1;
825 +        return 1;
826 +        break;
827 +        
828 +      default:
829 +        the_event->err_msg =
830 +          strdup( "Global error. resetTime unrecognized.\n" );
831 +        return 0;
832 +        break;
833 +      }
834 +      break;
835 +
836 +    case G_THERMALTIME:
837 +      switch( the_type ){
838 +        
839 +      case STRING:
840 +        the_event->err_msg =
841            strdup( "Global error. thermalTime is not a double or int.\n" );
842          return 0;
843          break;
# Line 634 | Line 857 | int Globals::globalAssign( event* the_event ){
857        default:
858          the_event->err_msg =
859            strdup( "Global error. thermalTime unrecognized.\n" );
860 +        return 0;
861 +        break;
862 +      }
863 +      break;
864 +
865 +    case G_LJRCUT:
866 +      switch( the_type ){
867 +        
868 +      case STRING:
869 +        the_event->err_msg =
870 +          strdup( "Global error. LJrcut is not a double or int.\n" );
871          return 0;
872          break;
873 +        
874 +      case DOUBLE:
875 +        LJrcut = the_event->evt.asmt.rhs.dval;
876 +        have_ljrcut = 1;
877 +        return 1;
878 +        break;
879 +        
880 +      case INT:
881 +        LJrcut = (double)the_event->evt.asmt.rhs.ival;
882 +        have_ljrcut = 1;
883 +        return 1;
884 +        break;
885 +        
886 +      default:
887 +        the_event->err_msg =
888 +          strdup( "Global error. LJrcut unrecognized.\n" );
889 +        return 0;
890 +        break;
891        }
892        break;
893        
894 <    case G_RRF:
894 >    case G_ECR:
895        switch( the_type ){
896          
897        case STRING:
898          the_event->err_msg =
899 <          strdup( "Global error. rRF is not a double or int.\n" );
899 >          strdup( "Global error. electrostaticCutoffRadius is not a double or int.\n" );
900          return 0;
901          break;
902          
903        case DOUBLE:
904 <        rRF = the_event->evt.asmt.rhs.dval;
905 <        have_rrf = 1;
904 >        ecr = the_event->evt.asmt.rhs.dval;
905 >        have_ecr = 1;
906          return 1;
907          break;
908          
909        case INT:
910 <        rRF = (double)the_event->evt.asmt.rhs.ival;
911 <        have_rrf = 1;
910 >        ecr = (double)the_event->evt.asmt.rhs.ival;
911 >        have_ecr = 1;
912          return 1;
913          break;
914          
915        default:
916          the_event->err_msg =
917 <          strdup( "Global error. rRF unrecognized.\n" );
917 >          strdup( "Global error. electrostaticCutoffRadius unrecognized.\n" );
918          return 0;
919          break;
920        }
921        break;
922 +
923 +    case G_EST:
924 +      switch( the_type ){
925 +        
926 +      case STRING:
927 +        the_event->err_msg =
928 +          strdup( "Global error. electrostaticSkinThickness is not a double or int.\n" );
929 +        return 0;
930 +        break;
931 +        
932 +      case DOUBLE:
933 +        est = the_event->evt.asmt.rhs.dval;
934 +        have_est = 1;
935 +        return 1;
936 +        break;
937 +        
938 +      case INT:
939 +        est = (double)the_event->evt.asmt.rhs.ival;
940 +        have_est = 1;
941 +        return 1;
942 +        break;
943 +        
944 +      default:
945 +        the_event->err_msg =
946 +          strdup( "Global error. electrostaticSkinThickness unrecognized.\n" );
947 +        return 0;
948 +        break;
949 +      }
950 +      break;
951        
952      case G_DIELECTRIC:
953        switch( the_type ){
# Line 700 | Line 981 | int Globals::globalAssign( event* the_event ){
981      case G_TEMPSET:
982        if( the_type == STRING ){
983          
984 <        if( !strcmp( "true", the_event->evt.asmt.rhs.sval )) tempSet = 1;
985 <        else if( !strcmp( "false", the_event->evt.asmt.rhs.sval )) tempSet = 0;
984 >        if( !strcasecmp( "true", the_event->evt.asmt.rhs.sval )) tempSet = 1;
985 >        else if( !strcasecmp( "false", the_event->evt.asmt.rhs.sval )) tempSet = 0;
986          else{
987            the_event->err_msg =
988              strdup( "Global error. tempSet was not \"true\" or \"false\".\n" );
# Line 715 | Line 996 | int Globals::globalAssign( event* the_event ){
996          strdup( "Global error. tempSet was not \"true\" or \"false\".\n" );
997        return 0;
998        break;
999 +
1000 +    case G_USEINITTIME:
1001 +      if( the_type == STRING ){
1002 +        
1003 +        if( !strcasecmp( "true", the_event->evt.asmt.rhs.sval )) useInitTime = 1;
1004 +        else if( !strcasecmp( "false", the_event->evt.asmt.rhs.sval )) useInitTime = 0;
1005 +        else{
1006 +          the_event->err_msg =
1007 +            strdup( "Global error. useInitTime was not \"true\" or \"false\".\n" );
1008 +          return 0;
1009 +        }
1010 +        return 1;
1011 +      }
1012        
1013 +      the_event->err_msg =
1014 +        strdup( "Global error. useInitTime was not \"true\" or \"false\".\n" );
1015 +      return 0;
1016 +      break;
1017 +
1018 +    case G_USEINIT_XS_STATE:
1019 +      if( the_type == STRING ){
1020 +        
1021 +        if( !strcasecmp( "true", the_event->evt.asmt.rhs.sval ))
1022 +          useInitXSstate = 1;
1023 +        else if( !strcasecmp( "false", the_event->evt.asmt.rhs.sval ))
1024 +          useInitXSstate = 0;
1025 +        else{
1026 +          the_event->err_msg =
1027 +            strdup( "Global error. useInitExtendedSystemState was not \"true\" or \"false\".\n" );
1028 +          return 0;
1029 +        }
1030 +        return 1;
1031 +      }
1032 +      
1033 +      the_event->err_msg =
1034 +        strdup( "Global error. useInitExtendedSystemState was not \"true\" or \"false\".\n" );
1035 +      return 0;
1036 +      break;
1037 +      
1038      case G_USEPBC:
1039        if( the_type == STRING ){
1040          
1041 <        if( !strcmp( "true", the_event->evt.asmt.rhs.sval )) usePBC = 1;
1042 <        else if( !strcmp( "false", the_event->evt.asmt.rhs.sval )) usePBC = 0;
1041 >        if( !strcasecmp( "true", the_event->evt.asmt.rhs.sval )) usePBC = 1;
1042 >        else if( !strcasecmp( "false", the_event->evt.asmt.rhs.sval )) usePBC = 0;
1043          else{
1044            the_event->err_msg =
1045 <            strdup( "Global error. periodicBoundryConditions was not \"true\" or \"false\".\n" );
1045 >            strdup( "Global error. usePeriodicBoundaryConditions was not \"true\" or \"false\".\n" );
1046            return 0;
1047          }
1048          return 1;
1049        }
1050        
1051        the_event->err_msg =
1052 <        strdup( "Global error. tempSet was not \"true\" or \"false\".\n" );
1052 >        strdup( "Global error. usePeriodicBoundaryConditions was not \"true\" or \"false\".\n" );
1053        return 0;
1054        break;
1055 +
1056 +    case G_USERF:
1057 +      if( the_type == STRING ){
1058 +        
1059 +        if( !strcasecmp( "true", the_event->evt.asmt.rhs.sval )) useRF = 1;
1060 +        else if( !strcasecmp( "false", the_event->evt.asmt.rhs.sval )) useRF = 0;
1061 +        else{
1062 +          the_event->err_msg =
1063 +            strdup( "Global error. useReactionField was not \"true\" or \"false\".\n" );
1064 +          return 0;
1065 +        }
1066 +        return 1;
1067 +      }
1068 +      
1069 +      the_event->err_msg =
1070 +        strdup( "Global error. useReactionField was not \"true\" or \"false\".\n" );
1071 +      return 0;
1072 +      break;
1073 +
1074 +    case G_TARGETPRESSURE:
1075 +      switch( the_type ){
1076 +        
1077 +      case STRING:
1078 +        the_event->err_msg =
1079 +          strdup( "Global error. targetPressure is not a double or int.\n" );
1080 +        return 0;
1081 +        break;
1082 +        
1083 +      case DOUBLE:
1084 +        target_pressure = the_event->evt.asmt.rhs.dval;
1085 +        have_target_pressure = 1;
1086 +        return 1;
1087 +        break;
1088 +        
1089 +      case INT:
1090 +        target_pressure = (double)the_event->evt.asmt.rhs.ival;
1091 +        have_target_pressure = 1;
1092 +        return 1;
1093 +        break;
1094 +        
1095 +      default:
1096 +        the_event->err_msg =
1097 +          strdup( "Global error. targetPressure unrecognized.\n" );
1098 +        return 0;
1099 +        break;
1100 +      }
1101 +      break;
1102 +
1103 +    case G_TAUTHERMOSTAT:
1104 +      switch( the_type ){
1105 +        
1106 +      case STRING:
1107 +        the_event->err_msg =
1108 +          strdup( "Global error. tauThermostat is not a double or int.\n" );
1109 +        return 0;
1110 +        break;
1111 +        
1112 +      case DOUBLE:
1113 +        tau_thermostat = the_event->evt.asmt.rhs.dval;
1114 +        have_tau_thermostat = 1;
1115 +        return 1;
1116 +        break;
1117 +        
1118 +      case INT:
1119 +        tau_thermostat = (double)the_event->evt.asmt.rhs.ival;
1120 +        have_tau_thermostat = 1;
1121 +        return 1;
1122 +        break;
1123 +        
1124 +      default:
1125 +        the_event->err_msg =
1126 +          strdup( "Global error. tauThermostat unrecognized.\n" );
1127 +        return 0;
1128 +        break;
1129 +      }
1130 +      break;
1131 +
1132 +    case G_TAUBAROSTAT:
1133 +      switch( the_type ){
1134 +        
1135 +      case STRING:
1136 +        the_event->err_msg =
1137 +          strdup( "Global error. tauBarostat is not a double or int.\n" );
1138 +        return 0;
1139 +        break;
1140 +        
1141 +      case DOUBLE:
1142 +        tau_barostat = the_event->evt.asmt.rhs.dval;
1143 +        have_tau_barostat = 1;
1144 +        return 1;
1145 +        break;
1146 +        
1147 +      case INT:
1148 +        tau_barostat = (double)the_event->evt.asmt.rhs.ival;
1149 +        have_tau_barostat = 1;
1150 +        return 1;
1151 +        break;
1152 +        
1153 +      default:
1154 +        the_event->err_msg =
1155 +          strdup( "Global error. tauBarostat unrecognized.\n" );
1156 +        return 0;
1157 +        break;
1158 +      }
1159 +      break;
1160 +      
1161 +    case G_ZCONSTIME:
1162 +      switch( the_type ){
1163 +        
1164 +      case STRING:
1165 +        the_event->err_msg =
1166 +          strdup( "Global error. zcons_time is not a double or int.\n" );
1167 +        return 0;
1168 +        break;
1169 +        
1170 +      case DOUBLE:
1171 +        zcons_time = the_event->evt.asmt.rhs.dval;
1172 +        have_zcons_time = 1;
1173 +        return 1;
1174 +        break;
1175 +        
1176 +      case INT:
1177 +        zcons_time = (double)the_event->evt.asmt.rhs.ival;
1178 +        have_zcons_time = 1;
1179 +        return 1;
1180 +        break;
1181 +        
1182 +      default:
1183 +        the_event->err_msg =
1184 +          strdup( "Global error. zcons_time unrecognized.\n" );
1185 +        return 0;
1186 +        break;
1187 +      }
1188 +      break;
1189 +
1190 +    case G_ZCONSTOL:
1191 +      switch( the_type ){
1192 +        
1193 +      case STRING:
1194 +        the_event->err_msg =
1195 +          strdup( "Global error. zcons_tol is not a double or int.\n" );
1196 +        return 0;
1197 +        break;
1198 +        
1199 +      case DOUBLE:
1200 +        zcons_tol = the_event->evt.asmt.rhs.dval;
1201 +        have_zcons_tol = 1;
1202 +        return 1;
1203 +        break;
1204 +        
1205 +      case INT:
1206 +        zcons_tol = (double)the_event->evt.asmt.rhs.ival;
1207 +        have_zcons_tol = 1;
1208 +        return 1;
1209 +        break;
1210 +        
1211 +      default:
1212 +        the_event->err_msg =
1213 +          strdup( "Global error. zcons_ol unrecognized.\n" );
1214 +        return 0;
1215 +        break;
1216 +      }
1217 +      break;
1218 +  
1219 +    case G_ZCONSFORCEPOLICY:
1220 +      switch( the_type ){
1221 +        
1222 +      case STRING:
1223 +   strcpy(zconsForcePolicy, the_event->evt.asmt.rhs.sval);
1224 +
1225 +   for(int i = 0; zconsForcePolicy[i] != '\0'; i++)
1226 +        {
1227 +      zconsForcePolicy[i] = toupper(zconsForcePolicy[i]);
1228 +   }
1229 +        have_zcons_force_policy = 1;
1230 +   return 1;
1231 +        break;
1232 +        
1233 +      case DOUBLE:
1234 +        the_event->err_msg =
1235 +          strdup( "Global error. zconsForcePolicy is not a double or int.\n" );
1236 +        return 0;
1237 +        break;
1238 +        
1239 +      case INT:
1240 +        the_event->err_msg =
1241 +          strdup( "Global error. zconsForcePolicy is not a double or int.\n" );
1242 +        return 0;
1243 +        break;
1244 +        
1245 +      default:
1246 +        the_event->err_msg =
1247 +          strdup( "Global error. zconsForcePolicy unrecognized.\n" );
1248 +        return 0;
1249 +        break;
1250 +      }
1251 +      break;
1252 +      
1253 +    case G_ZCONSGAP:
1254 +      switch( the_type ){
1255 +  
1256 +      case STRING:
1257 +        the_event->err_msg =
1258 +          strdup( "Global error. zcons_gap is not a double or int.\n" );
1259 +        return 0;
1260 +        break;
1261 +  
1262 +      case DOUBLE:
1263 +        zcons_gap = the_event->evt.asmt.rhs.dval;
1264 +        have_zcons_gap= 1;
1265 +        return 1;
1266 +        break;
1267 +  
1268 +      case INT:
1269 +        zcons_gap= (double)the_event->evt.asmt.rhs.ival;
1270 +        have_zcons_gap= 1;
1271 +        return 1;
1272 +        break;
1273 +  
1274 +      default:
1275 +        the_event->err_msg =
1276 +          strdup( "Global error. zcons_gap unrecognized.\n" );
1277 +        return 0;
1278 +        break;
1279 +      }
1280 +      break;
1281 +
1282 +    case G_ZCONSFIXTIME:
1283 +      switch( the_type ){
1284 +  
1285 +      case STRING:
1286 +        the_event->err_msg =
1287 +          strdup( "Global error. zcons_fixtime is not a double or int.\n" );
1288 +        return 0;
1289 +        break;
1290 +  
1291 +      case DOUBLE:
1292 +        zcons_fixtime= the_event->evt.asmt.rhs.dval;
1293 +        have_zcons_fixtime= 1;
1294 +        return 1;
1295 +        break;
1296 +  
1297 +      case INT:
1298 +        zcons_fixtime= (double)the_event->evt.asmt.rhs.ival;
1299 +        have_zcons_fixtime= 1;
1300 +        return 1;
1301 +        break;
1302 +  
1303 +      default:
1304 +        the_event->err_msg =
1305 +          strdup( "Global error. zcons_fixtime unrecognized.\n" );
1306 +        return 0;
1307 +        break;
1308 +      }
1309 +      break;
1310 +
1311 +    case G_ZCONSUSINGSMD:
1312 +      switch( the_type ){
1313 +  
1314 +      case STRING:
1315 +        the_event->err_msg =
1316 +          strdup( "Global error. zcons_fixtime is not an  int.\n" );
1317 +        return 0;
1318 +        break;
1319 +  
1320 +      case DOUBLE:
1321 +        the_event->err_msg =
1322 +          strdup( "Global error. zcons_fixtime is not an  int.\n" );
1323 +        return 0;
1324 +        break;
1325 +  
1326 +      case INT:
1327 +        zcons_using_smd= the_event->evt.asmt.rhs.ival;
1328 +        have_zcons_using_smd= 1;
1329 +        return 1;
1330 +        break;
1331 +  
1332 +      default:
1333 +        the_event->err_msg =
1334 +          strdup( "Global error. zcons_usingsmd unrecognized.\n" );
1335 +        return 0;
1336 +        break;
1337 +      }
1338 +      break;
1339 +      
1340 +    case G_MINIMIZER:
1341 +      switch( the_type ){
1342 +
1343 +      case STRING:
1344 +        strcpy(minimizer_name, the_event->evt.asmt.rhs.sval);
1345 +
1346 +        for(int i = 0; zconsForcePolicy[i] != '\0'; i++){
1347 +          zconsForcePolicy[i] = toupper(zconsForcePolicy[i]);
1348 +        }
1349 +        have_minimizer= 1;
1350 +        return 1;
1351 +        break;
1352 +        
1353 +      case DOUBLE:
1354 +        the_event->err_msg =
1355 +          strdup( "Global error. minimizer_name is not a double or int.\n" );
1356 +        return 0;
1357 +        break;
1358 +        
1359 +      case INT:
1360 +        the_event->err_msg =
1361 +          strdup( "Global error. minimizer_name is not a double or int.\n" );
1362 +        return 0;
1363 +        break;
1364 +        
1365 +      default:
1366 +        the_event->err_msg =
1367 +          strdup( "Global error. minimizer_name unrecognized.\n" );
1368 +        return 0;
1369 +        break;
1370 +      }
1371 +      break;
1372 +
1373 +    case G_MIN_MAXITER:
1374 +      switch( the_type ){
1375 +
1376 +      case STRING:
1377 +        the_event->err_msg =
1378 +          strdup( "Global error. minimizer_maxiteration is not a double or int.\n" );
1379 +        return 1;
1380 +        break;
1381 +        
1382 +      case DOUBLE:
1383 +        minimizer_maxiteration = the_event->evt.asmt.rhs.dval;
1384 +        have_minimizer_maxiteration = 1;
1385 +        return 1;
1386 +        break;
1387 +        
1388 +      case INT:
1389 +        minimizer_maxiteration = the_event->evt.asmt.rhs.ival;
1390 +        have_minimizer_maxiteration = 1;
1391 +        return 1;
1392 +        break;
1393 +        
1394 +      default:
1395 +        the_event->err_msg =
1396 +          strdup( "Global error. minimizer_maxiteration unrecognized.\n" );
1397 +        return 0;
1398 +        break;
1399 +      }
1400 +      break;
1401 +      
1402 +    case G_MIN_WRITEFRQ:
1403 +      switch( the_type ){
1404 +
1405 +      case STRING:
1406 +        the_event->err_msg =
1407 +          strdup( "Global error. minimizer_writefrq is not a double or int.\n" );
1408 +        return 1;
1409 +        break;
1410 +        
1411 +      case DOUBLE:
1412 +        minimizer_writefrq= the_event->evt.asmt.rhs.dval;
1413 +        have_minimizer_writefrq = 1;
1414 +        return 1;
1415 +        break;
1416 +        
1417 +      case INT:
1418 +        minimizer_writefrq= the_event->evt.asmt.rhs.ival;
1419 +        have_minimizer_writefrq = 1;
1420 +        return 1;
1421 +        break;
1422 +        
1423 +      default:
1424 +        the_event->err_msg =
1425 +          strdup( "Global error. minimizer_writefrq unrecognized.\n" );
1426 +        return 0;
1427 +        break;
1428 +      }
1429 +      break;
1430 +
1431 +    case G_MIN_STEPSIZE:
1432 +      switch( the_type ){
1433 +
1434 +      case STRING:
1435 +        the_event->err_msg =
1436 +          strdup( "Global error. minimizer_resetfrq is not a double or int.\n" );
1437 +        return 1;
1438 +        break;
1439 +        
1440 +      case DOUBLE:
1441 +        minimizer_stepsize= the_event->evt.asmt.rhs.dval;
1442 +        have_minimizer_stepsize = 1;
1443 +        return 1;
1444 +        break;
1445 +        
1446 +      case INT:
1447 +        minimizer_stepsize= the_event->evt.asmt.rhs.ival;
1448 +        have_minimizer_stepsize = 1;
1449 +        return 1;
1450 +        break;
1451 +        
1452 +      default:
1453 +        the_event->err_msg =
1454 +          strdup( "Global error. minimizer_resetfrq unrecognized.\n" );
1455 +        return 0;
1456 +        break;
1457 +      }
1458 +      break;      
1459 +
1460 +    case G_MIN_FTOL:
1461 +      switch( the_type ){
1462 +
1463 +      case STRING:
1464 +        the_event->err_msg =
1465 +          strdup( "Global error. minimizer_ftol is not a double or int.\n" );
1466 +        return 1;
1467 +        break;
1468 +        
1469 +      case DOUBLE:
1470 +        minimizer_ftol= the_event->evt.asmt.rhs.dval;
1471 +        have_minimizer_ftol = 1;
1472 +        return 1;
1473 +        break;
1474 +        
1475 +      case INT:
1476 +        minimizer_ftol= the_event->evt.asmt.rhs.ival;
1477 +        have_minimizer_ftol = 1;
1478 +        return 1;
1479 +        break;
1480 +        
1481 +      default:
1482 +        the_event->err_msg =
1483 +          strdup( "Global error. minimizer_ftol unrecognized.\n" );
1484 +        return 0;
1485 +        break;
1486 +      }
1487 +      break;
1488 +      
1489 +    case G_MIN_GTOL:
1490 +      switch( the_type ){
1491 +
1492 +      case STRING:
1493 +        the_event->err_msg =
1494 +          strdup( "Global error. minimizer_gtol is not a double or int.\n" );
1495 +        return 1;
1496 +        break;
1497 +        
1498 +      case DOUBLE:
1499 +        minimizer_gtol= the_event->evt.asmt.rhs.dval;
1500 +        have_minimizer_gtol = 1;
1501 +        return 1;
1502 +        break;
1503 +        
1504 +      case INT:
1505 +        minimizer_gtol= the_event->evt.asmt.rhs.ival;
1506 +        have_minimizer_gtol = 1;
1507 +        return 1;
1508 +        break;
1509 +        
1510 +      default:
1511 +        the_event->err_msg =
1512 +          strdup( "Global error. minimizer_gtol unrecognized.\n" );
1513 +        return 0;
1514 +        break;
1515 +      }
1516 +      break;
1517 +      
1518 +    case G_MIN_LSMAXITER:
1519 +      switch( the_type ){
1520 +
1521 +      case STRING:
1522 +        the_event->err_msg =
1523 +          strdup( "Global error. minimizer_ls_maxiteration is not a double or int.\n" );
1524 +        return 1;
1525 +        break;
1526 +        
1527 +      case DOUBLE:
1528 +        minimizer_ls_maxiteration = the_event->evt.asmt.rhs.dval;
1529 +        have_minimizer_ls_maxiteration = 1;
1530 +        return 1;
1531 +        break;
1532 +        
1533 +      case INT:
1534 +        minimizer_ls_maxiteration = the_event->evt.asmt.rhs.ival;
1535 +        have_minimizer_ls_maxiteration = 1;
1536 +        return 1;
1537 +        break;
1538 +        
1539 +      default:
1540 +        the_event->err_msg =
1541 +          strdup( "Global error. minimizer_ls_maxiteration unrecognized.\n" );
1542 +        return 0;
1543 +        break;
1544 +      }
1545 +      break;      
1546 +
1547 +    case G_MIN_LSTOL:
1548 +      switch( the_type ){
1549 +
1550 +      case STRING:
1551 +        the_event->err_msg =
1552 +          strdup( "Global error. minimizer_ls_tol is not a double or int.\n" );
1553 +        return 1;
1554 +        break;
1555 +        
1556 +      case DOUBLE:
1557 +        minimizer_ls_tol= the_event->evt.asmt.rhs.dval;
1558 +        have_minimizer_ls_tol = 1;
1559 +        return 1;
1560 +        break;
1561 +        
1562 +      case INT:
1563 +        minimizer_ls_tol= the_event->evt.asmt.rhs.ival;
1564 +        have_minimizer_ls_tol = 1;
1565 +        return 1;
1566 +        break;
1567 +        
1568 +      default:
1569 +        the_event->err_msg =
1570 +          strdup( "Global error. minimizer_ls_tol unrecognized.\n" );
1571 +        return 0;
1572 +        break;
1573 +      }
1574 +      break;
1575 +      
1576 +      // add more token cases here.
1577 +    case G_SEED:
1578 +      switch( the_type ){
1579 +        
1580 +      case STRING:
1581 +   the_event->err_msg =
1582 +          strdup( "Global error. seed is not a string.\n" );
1583 +        return 0;
1584 +   return 0;
1585 +        break;
1586 +        
1587 +      case DOUBLE:
1588 +   have_seed = 1;
1589 +   seed = (int)the_event->evt.asmt.rhs.dval;
1590 +        return 1;
1591 +        break;
1592 +        
1593 +      case INT:
1594 +   have_seed = 1;
1595 +   seed =  the_event->evt.asmt.rhs.ival ;
1596 +        return 1;
1597 +        break;
1598 +        
1599 +      default:
1600 +        the_event->err_msg =
1601 +          strdup( "Global error. seed unrecognized.\n" );
1602 +        return 0;
1603 +        break;
1604 +      }
1605 +      break;
1606 +      // add more token cases here.
1607 +
1608      }
1609    }
1610    
# Line 793 | Line 1665 | char* Globals::checkMe( void ){
1665      have_err= 1;
1666    }
1667    
1668 <  if( !have_ensemble ){
1669 <    strcat( err, "\t->ensemble\n" );
1670 <    have_err= 1;
1671 <  }
1668 >  if(!have_minimizer)
1669 >    if( !have_ensemble ){
1670 >      strcat( err, "\t->ensemble\n" );
1671 >      have_err= 1;
1672 >    }
1673    
1674    if( !have_dt ){
1675      strcat( err, "\t->dt\n" );

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines