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 1091 by tim, Tue Mar 16 19:22:56 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  
45
70   Globals::Globals(){
71    
72    int i;
73 +
74 +  hash_size = 23;
75 +  hash_shift = 4;
76    
77    components = NULL;
78    
# Line 69 | 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( "rRF",           G_RRF );
101 >  addHash( "electrostaticCutoffRadius",            G_ECR );
102    addHash( "dielectric",    G_DIELECTRIC );
103    addHash( "tempSet",       G_TEMPSET );
104    addHash( "thermalTime",   G_THERMALTIME );
105    addHash( "mixingRule",    G_MIXINGRULE);
106 <  addHash( "periodicBox",   G_USEPBC);
107 <  
108 <  // define some default values
106 >  addHash( "usePeriodicBoundaryConditions",        G_USEPBC);
107 >  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 >  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( "LJrcut",                               G_LJRCUT);
121 >  addHash( "minimizer", G_MINIMIZER);
122 >  addHash( "minMaxIter", G_MIN_MAXITER);
123 >  addHash( "minWriteFrq", G_MIN_WRITEFRQ);
124 >  addHash( "minStepSize", G_MIN_STEPSIZE);
125 >  addHash( "minFTol", G_MIN_FTOL);
126 >  addHash( "minGTol", G_MIN_GTOL);
127 >  addHash( "minLSTol", G_MIN_LSTOL);
128 >  addHash( "minLSMaxIter", G_MIN_LSMAXITER);
129 >  addHash( "zconsGap", G_ZCONSGAP);
130 >  addHash( "zconsFixtime", G_ZCONSFIXTIME);
131  
132    strcpy( mixingRule,"standard");  //default mixing rules to standard.
133    usePBC = 1; //default  periodic boundry conditions to on
134 <  
134 >  useRF  = 0;
135 >  useInitTime = 1; // default to pull init time from the init file
136 >  useInitXSstate = 1; // 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;
# Line 101 | 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_rrf =            0;
159 >  have_ecr =            0;
160    have_dielectric =     0;
161    have_tempSet =        0;
162 < }
162 >  have_est =            0;
163 >  have_target_pressure =0;
164 >  have_q_mass =         0;
165 >  have_tau_thermostat = 0;
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_seed = 0;
172 >  have_ljrcut = 0;
173  
174 + }
175 +
176   Globals::~Globals(){
177    int i;
178  
# Line 179 | Line 245 | int Globals::componentStartIndex( event* the_event ){
245    return 0;
246   }
247  
248 < int Globals::componentStartIndex( event* the_event ){
248 > int Globals::componentEnd( event* the_event ){
249  
250 <  current_component->startIndex( the_event->evt.si.array,
251 <                                 the_event->evt.si.n_elements );
250 >  the_event->err_msg = current_component->checkMe();
251 >  if( the_event->err_msg != NULL ) return 0;
252 >
253    return 1;
254   }
255  
256 < int Globals::componentEnd( event* the_event ){
256 > int Globals::newZconstraint( event* the_event ){
257 >  
258  
259 <  the_event->err_msg = current_component->checkMe();
259 >  int index = the_event->evt.blk_index;
260 >  char err[200];
261 >  current_zConstraint = new ZconStamp( index );
262 >  
263 >  have_zConstraints = 1;
264 >
265 >  if( have_n_zConstraints && index < n_zConstraints )
266 >    zConstraints[index] = current_zConstraint;
267 >  else{
268 >    if( have_n_zConstraints ){
269 >      sprintf( err, "Globals error, %d out of nZconstraints range",
270 >               index );
271 >      the_event->err_msg = strdup( err );
272 >      return 0;
273 >    }
274 >    else{
275 >      the_event->err_msg = strdup("Globals error, nZconstraints"
276 >                                  " not given before"
277 >                                  " first zConstraint declaration." );
278 >      return 0;
279 >    }
280 >  }  
281 >
282 >  return 1;
283 > }
284 >
285 >
286 >
287 > int Globals::zConstraintAssign( event* the_event ){
288 >
289 >  switch( the_event->evt.asmt.asmt_type ){
290 >    
291 >  case STRING:
292 >    return current_zConstraint->assignString( the_event->evt.asmt.lhs,
293 >                                              the_event->evt.asmt.rhs.sval,
294 >                                              &(the_event->err_msg));
295 >    break;
296 >    
297 >  case DOUBLE:
298 >    return current_zConstraint->assignDouble( the_event->evt.asmt.lhs,
299 >                                              the_event->evt.asmt.rhs.dval,
300 >                                              &(the_event->err_msg));
301 >    break;
302 >    
303 >  case INT:
304 >    return current_zConstraint->assignInt( the_event->evt.asmt.lhs,
305 >                                           the_event->evt.asmt.rhs.ival,
306 >                                           &(the_event->err_msg));
307 >    break;
308 >    
309 >  default:
310 >    the_event->err_msg = strdup( "Globals error. Invalid zConstraint"
311 >                                 " assignment type" );
312 >    return 0;
313 >    break;
314 >  }
315 >  return 0;
316 > }
317 >
318 > int Globals::zConstraintEnd( event* the_event ){
319 >
320 >  the_event->err_msg = current_zConstraint->checkMe();
321    if( the_event->err_msg != NULL ) return 0;
322  
323    return 1;
# Line 243 | Line 372 | int Globals::globalAssign( event* the_event ){
372          return 1;
373        }
374        break;
375 +
376 +    case G_NZCONSTRAINTS:
377 +      if( the_type == STRING ){
378 +        the_event->err_msg =
379 +          strdup("Global error. nZconstraints is not a double or an int.\n" );
380 +        return 0;
381 +      }
382        
383 +      else if( the_type == DOUBLE ){
384 +        n_zConstraints = (int)the_event->evt.asmt.rhs.dval;
385 +        zConstraints = new ZconStamp*[n_zConstraints];
386 +        have_n_zConstraints = 1;
387 +        return 1;
388 +      }
389 +      
390 +      else{
391 +        n_zConstraints = the_event->evt.asmt.rhs.ival;
392 +        zConstraints = new ZconStamp*[n_zConstraints];
393 +        have_n_zConstraints = 1;
394 +        return 1;
395 +      }
396 +      break;
397 +      
398      case G_TARGETTEMP:
399        switch( the_type ){
400          
# Line 272 | Line 423 | int Globals::globalAssign( event* the_event ){
423          break;
424        }
425        break;
426 +
427 +    case G_ORTHOBOXTOLERANCE:
428 +      switch( the_type ){
429 +        
430 +      case STRING:
431 +        the_event->err_msg =
432 +          strdup( "Global error. orthoBoxTolerance is not a double or int.\n" );
433 +        return 0;
434 +        break;
435 +        
436 +      case DOUBLE:
437 +        orthoBoxTolerance = the_event->evt.asmt.rhs.dval;
438 +        have_target_temp = 1;
439 +        return 1;
440 +        break;
441 +        
442 +      case INT:
443 +        orthoBoxTolerance = (double)the_event->evt.asmt.rhs.ival;
444 +        have_target_temp = 1;
445 +        return 1;
446 +        break;
447 +        
448 +      default:
449 +        the_event->err_msg =
450 +          strdup( "Global error.orthoBoxTolerance unrecognized.\n" );
451 +        return 0;
452 +        break;
453 +      }
454 +      break;
455        
456      case G_ENSEMBLE:
457        if( the_type == STRING ){
# Line 610 | Line 790 | int Globals::globalAssign( event* the_event ){
790        }
791        break;
792  
793 <   case G_THERMALTIME:
793 >    case G_RESETTIME:
794 >      switch( the_type ){
795 >        
796 >      case STRING:
797 >        the_event->err_msg =
798 >          strdup( "Global error. resetTime is not a double or int.\n" );
799 >        return 0;
800 >        break;
801 >        
802 >      case DOUBLE:
803 >        resetTime = the_event->evt.asmt.rhs.dval;
804 >        have_reset_time = 1;
805 >        return 1;
806 >        break;
807 >        
808 >      case INT:
809 >        resetTime = (double)the_event->evt.asmt.rhs.ival;
810 >        have_reset_time = 1;
811 >        return 1;
812 >        break;
813 >        
814 >      default:
815 >        the_event->err_msg =
816 >          strdup( "Global error. resetTime unrecognized.\n" );
817 >        return 0;
818 >        break;
819 >      }
820 >      break;
821 >
822 >    case G_THERMALTIME:
823        switch( the_type ){
824          
825        case STRING:
# Line 638 | Line 847 | int Globals::globalAssign( event* the_event ){
847          break;
848        }
849        break;
850 +
851 +    case G_LJRCUT:
852 +      switch( the_type ){
853 +        
854 +      case STRING:
855 +        the_event->err_msg =
856 +          strdup( "Global error. LJrcut is not a double or int.\n" );
857 +        return 0;
858 +        break;
859 +        
860 +      case DOUBLE:
861 +        LJrcut = the_event->evt.asmt.rhs.dval;
862 +        have_ljrcut = 1;
863 +        return 1;
864 +        break;
865 +        
866 +      case INT:
867 +        LJrcut = (double)the_event->evt.asmt.rhs.ival;
868 +        have_ljrcut = 1;
869 +        return 1;
870 +        break;
871 +        
872 +      default:
873 +        the_event->err_msg =
874 +          strdup( "Global error. LJrcut unrecognized.\n" );
875 +        return 0;
876 +        break;
877 +      }
878 +      break;
879        
880 <    case G_RRF:
880 >    case G_ECR:
881        switch( the_type ){
882          
883        case STRING:
884          the_event->err_msg =
885 <          strdup( "Global error. rRF is not a double or int.\n" );
885 >          strdup( "Global error. electrostaticCutoffRadius is not a double or int.\n" );
886          return 0;
887          break;
888          
889        case DOUBLE:
890 <        rRF = the_event->evt.asmt.rhs.dval;
891 <        have_rrf = 1;
890 >        ecr = the_event->evt.asmt.rhs.dval;
891 >        have_ecr = 1;
892          return 1;
893          break;
894          
895        case INT:
896 <        rRF = (double)the_event->evt.asmt.rhs.ival;
897 <        have_rrf = 1;
896 >        ecr = (double)the_event->evt.asmt.rhs.ival;
897 >        have_ecr = 1;
898          return 1;
899          break;
900          
901        default:
902          the_event->err_msg =
903 <          strdup( "Global error. rRF unrecognized.\n" );
903 >          strdup( "Global error. electrostaticCutoffRadius unrecognized.\n" );
904          return 0;
905          break;
906        }
907        break;
908 +
909 +    case G_EST:
910 +      switch( the_type ){
911 +        
912 +      case STRING:
913 +        the_event->err_msg =
914 +          strdup( "Global error. electrostaticSkinThickness is not a double or int.\n" );
915 +        return 0;
916 +        break;
917 +        
918 +      case DOUBLE:
919 +        est = the_event->evt.asmt.rhs.dval;
920 +        have_est = 1;
921 +        return 1;
922 +        break;
923 +        
924 +      case INT:
925 +        est = (double)the_event->evt.asmt.rhs.ival;
926 +        have_est = 1;
927 +        return 1;
928 +        break;
929 +        
930 +      default:
931 +        the_event->err_msg =
932 +          strdup( "Global error. electrostaticSkinThickness unrecognized.\n" );
933 +        return 0;
934 +        break;
935 +      }
936 +      break;
937        
938      case G_DIELECTRIC:
939        switch( the_type ){
# Line 700 | Line 967 | int Globals::globalAssign( event* the_event ){
967      case G_TEMPSET:
968        if( the_type == STRING ){
969          
970 <        if( !strcmp( "true", the_event->evt.asmt.rhs.sval )) tempSet = 1;
971 <        else if( !strcmp( "false", the_event->evt.asmt.rhs.sval )) tempSet = 0;
970 >        if( !strcasecmp( "true", the_event->evt.asmt.rhs.sval )) tempSet = 1;
971 >        else if( !strcasecmp( "false", the_event->evt.asmt.rhs.sval )) tempSet = 0;
972          else{
973            the_event->err_msg =
974              strdup( "Global error. tempSet was not \"true\" or \"false\".\n" );
# Line 715 | Line 982 | int Globals::globalAssign( event* the_event ){
982          strdup( "Global error. tempSet was not \"true\" or \"false\".\n" );
983        return 0;
984        break;
985 +
986 +    case G_USEINITTIME:
987 +      if( the_type == STRING ){
988 +        
989 +        if( !strcasecmp( "true", the_event->evt.asmt.rhs.sval )) useInitTime = 1;
990 +        else if( !strcasecmp( "false", the_event->evt.asmt.rhs.sval )) useInitTime = 0;
991 +        else{
992 +          the_event->err_msg =
993 +            strdup( "Global error. useInitTime was not \"true\" or \"false\".\n" );
994 +          return 0;
995 +        }
996 +        return 1;
997 +      }
998        
999 +      the_event->err_msg =
1000 +        strdup( "Global error. useInitTime was not \"true\" or \"false\".\n" );
1001 +      return 0;
1002 +      break;
1003 +
1004 +    case G_USEINIT_XS_STATE:
1005 +      if( the_type == STRING ){
1006 +        
1007 +        if( !strcasecmp( "true", the_event->evt.asmt.rhs.sval ))
1008 +          useInitXSstate = 1;
1009 +        else if( !strcasecmp( "false", the_event->evt.asmt.rhs.sval ))
1010 +          useInitXSstate = 0;
1011 +        else{
1012 +          the_event->err_msg =
1013 +            strdup( "Global error. useInitExtendedSystemState was not \"true\" or \"false\".\n" );
1014 +          return 0;
1015 +        }
1016 +        return 1;
1017 +      }
1018 +      
1019 +      the_event->err_msg =
1020 +        strdup( "Global error. useInitExtendedSystemState was not \"true\" or \"false\".\n" );
1021 +      return 0;
1022 +      break;
1023 +      
1024      case G_USEPBC:
1025        if( the_type == STRING ){
1026          
1027 <        if( !strcmp( "true", the_event->evt.asmt.rhs.sval )) usePBC = 1;
1028 <        else if( !strcmp( "false", the_event->evt.asmt.rhs.sval )) usePBC = 0;
1027 >        if( !strcasecmp( "true", the_event->evt.asmt.rhs.sval )) usePBC = 1;
1028 >        else if( !strcasecmp( "false", the_event->evt.asmt.rhs.sval )) usePBC = 0;
1029          else{
1030            the_event->err_msg =
1031 <            strdup( "Global error. periodicBoundryConditions was not \"true\" or \"false\".\n" );
1031 >            strdup( "Global error. usePeriodicBoundaryConditions was not \"true\" or \"false\".\n" );
1032            return 0;
1033          }
1034          return 1;
1035        }
1036        
1037        the_event->err_msg =
1038 <        strdup( "Global error. tempSet was not \"true\" or \"false\".\n" );
1038 >        strdup( "Global error. usePeriodicBoundaryConditions was not \"true\" or \"false\".\n" );
1039        return 0;
1040        break;
1041 +
1042 +    case G_USERF:
1043 +      if( the_type == STRING ){
1044 +        
1045 +        if( !strcasecmp( "true", the_event->evt.asmt.rhs.sval )) useRF = 1;
1046 +        else if( !strcasecmp( "false", the_event->evt.asmt.rhs.sval )) useRF = 0;
1047 +        else{
1048 +          the_event->err_msg =
1049 +            strdup( "Global error. useReactionField was not \"true\" or \"false\".\n" );
1050 +          return 0;
1051 +        }
1052 +        return 1;
1053 +      }
1054 +      
1055 +      the_event->err_msg =
1056 +        strdup( "Global error. useReactionField was not \"true\" or \"false\".\n" );
1057 +      return 0;
1058 +      break;
1059 +
1060 +    case G_TARGETPRESSURE:
1061 +      switch( the_type ){
1062 +        
1063 +      case STRING:
1064 +        the_event->err_msg =
1065 +          strdup( "Global error. targetPressure is not a double or int.\n" );
1066 +        return 0;
1067 +        break;
1068 +        
1069 +      case DOUBLE:
1070 +        target_pressure = the_event->evt.asmt.rhs.dval;
1071 +        have_target_pressure = 1;
1072 +        return 1;
1073 +        break;
1074 +        
1075 +      case INT:
1076 +        target_pressure = (double)the_event->evt.asmt.rhs.ival;
1077 +        have_target_pressure = 1;
1078 +        return 1;
1079 +        break;
1080 +        
1081 +      default:
1082 +        the_event->err_msg =
1083 +          strdup( "Global error. targetPressure unrecognized.\n" );
1084 +        return 0;
1085 +        break;
1086 +      }
1087 +      break;
1088 +
1089 +    case G_TAUTHERMOSTAT:
1090 +      switch( the_type ){
1091 +        
1092 +      case STRING:
1093 +        the_event->err_msg =
1094 +          strdup( "Global error. tauThermostat is not a double or int.\n" );
1095 +        return 0;
1096 +        break;
1097 +        
1098 +      case DOUBLE:
1099 +        tau_thermostat = the_event->evt.asmt.rhs.dval;
1100 +        have_tau_thermostat = 1;
1101 +        return 1;
1102 +        break;
1103 +        
1104 +      case INT:
1105 +        tau_thermostat = (double)the_event->evt.asmt.rhs.ival;
1106 +        have_tau_thermostat = 1;
1107 +        return 1;
1108 +        break;
1109 +        
1110 +      default:
1111 +        the_event->err_msg =
1112 +          strdup( "Global error. tauThermostat unrecognized.\n" );
1113 +        return 0;
1114 +        break;
1115 +      }
1116 +      break;
1117 +
1118 +    case G_TAUBAROSTAT:
1119 +      switch( the_type ){
1120 +        
1121 +      case STRING:
1122 +        the_event->err_msg =
1123 +          strdup( "Global error. tauBarostat is not a double or int.\n" );
1124 +        return 0;
1125 +        break;
1126 +        
1127 +      case DOUBLE:
1128 +        tau_barostat = the_event->evt.asmt.rhs.dval;
1129 +        have_tau_barostat = 1;
1130 +        return 1;
1131 +        break;
1132 +        
1133 +      case INT:
1134 +        tau_barostat = (double)the_event->evt.asmt.rhs.ival;
1135 +        have_tau_barostat = 1;
1136 +        return 1;
1137 +        break;
1138 +        
1139 +      default:
1140 +        the_event->err_msg =
1141 +          strdup( "Global error. tauBarostat unrecognized.\n" );
1142 +        return 0;
1143 +        break;
1144 +      }
1145 +      break;
1146 +      
1147 +    case G_ZCONSTIME:
1148 +      switch( the_type ){
1149 +        
1150 +      case STRING:
1151 +        the_event->err_msg =
1152 +          strdup( "Global error. zcons_time is not a double or int.\n" );
1153 +        return 0;
1154 +        break;
1155 +        
1156 +      case DOUBLE:
1157 +        zcons_time = the_event->evt.asmt.rhs.dval;
1158 +        have_zcons_time = 1;
1159 +        return 1;
1160 +        break;
1161 +        
1162 +      case INT:
1163 +        zcons_time = (double)the_event->evt.asmt.rhs.ival;
1164 +        have_zcons_time = 1;
1165 +        return 1;
1166 +        break;
1167 +        
1168 +      default:
1169 +        the_event->err_msg =
1170 +          strdup( "Global error. zcons_time unrecognized.\n" );
1171 +        return 0;
1172 +        break;
1173 +      }
1174 +      break;
1175 +
1176 +    case G_ZCONSTOL:
1177 +      switch( the_type ){
1178 +        
1179 +      case STRING:
1180 +        the_event->err_msg =
1181 +          strdup( "Global error. zcons_tol is not a double or int.\n" );
1182 +        return 0;
1183 +        break;
1184 +        
1185 +      case DOUBLE:
1186 +        zcons_tol = the_event->evt.asmt.rhs.dval;
1187 +        have_zcons_tol = 1;
1188 +        return 1;
1189 +        break;
1190 +        
1191 +      case INT:
1192 +        zcons_tol = (double)the_event->evt.asmt.rhs.ival;
1193 +        have_zcons_tol = 1;
1194 +        return 1;
1195 +        break;
1196 +        
1197 +      default:
1198 +        the_event->err_msg =
1199 +          strdup( "Global error. zcons_ol unrecognized.\n" );
1200 +        return 0;
1201 +        break;
1202 +      }
1203 +      break;
1204 +  
1205 +    case G_ZCONSFORCEPOLICY:
1206 +      switch( the_type ){
1207 +        
1208 +      case STRING:
1209 +   strcpy(zconsForcePolicy, the_event->evt.asmt.rhs.sval);
1210 +
1211 +   for(int i = 0; zconsForcePolicy[i] != '\0'; i++)
1212 +        {
1213 +      zconsForcePolicy[i] = toupper(zconsForcePolicy[i]);
1214 +   }
1215 +        have_zcons_force_policy = 1;
1216 +   return 1;
1217 +        break;
1218 +        
1219 +      case DOUBLE:
1220 +        the_event->err_msg =
1221 +          strdup( "Global error. zconsForcePolicy is not a double or int.\n" );
1222 +        return 0;
1223 +        break;
1224 +        
1225 +      case INT:
1226 +        the_event->err_msg =
1227 +          strdup( "Global error. zconsForcePolicy is not a double or int.\n" );
1228 +        return 0;
1229 +        break;
1230 +        
1231 +      default:
1232 +        the_event->err_msg =
1233 +          strdup( "Global error. zconsForcePolicy unrecognized.\n" );
1234 +        return 0;
1235 +        break;
1236 +      }
1237 +      break;
1238 +      
1239 +    case G_ZCONSGAP:
1240 +      switch( the_type ){
1241 +  
1242 +      case STRING:
1243 +        the_event->err_msg =
1244 +          strdup( "Global error. zcons_gap is not a double or int.\n" );
1245 +        return 0;
1246 +        break;
1247 +  
1248 +      case DOUBLE:
1249 +        zcons_gap = the_event->evt.asmt.rhs.dval;
1250 +        have_zcons_gap= 1;
1251 +        return 1;
1252 +        break;
1253 +  
1254 +      case INT:
1255 +        zcons_gap= (double)the_event->evt.asmt.rhs.ival;
1256 +        have_zcons_gap= 1;
1257 +        return 1;
1258 +        break;
1259 +  
1260 +      default:
1261 +        the_event->err_msg =
1262 +          strdup( "Global error. zcons_gap unrecognized.\n" );
1263 +        return 0;
1264 +        break;
1265 +      }
1266 +      break;
1267 +
1268 +    case G_ZCONSFIXTIME:
1269 +      switch( the_type ){
1270 +  
1271 +      case STRING:
1272 +        the_event->err_msg =
1273 +          strdup( "Global error. zcons_fixtime is not a double or int.\n" );
1274 +        return 0;
1275 +        break;
1276 +  
1277 +      case DOUBLE:
1278 +        zcons_fixtime= the_event->evt.asmt.rhs.dval;
1279 +        have_zcons_fixtime= 1;
1280 +        return 1;
1281 +        break;
1282 +  
1283 +      case INT:
1284 +        zcons_fixtime= (double)the_event->evt.asmt.rhs.ival;
1285 +        have_zcons_fixtime= 1;
1286 +        return 1;
1287 +        break;
1288 +  
1289 +      default:
1290 +        the_event->err_msg =
1291 +          strdup( "Global error. zcons_fixtime unrecognized.\n" );
1292 +        return 0;
1293 +        break;
1294 +      }
1295 +      break;
1296 +      
1297 +    case G_MINIMIZER:
1298 +      switch( the_type ){
1299 +
1300 +      case STRING:
1301 +        strcpy(minimizer_name, the_event->evt.asmt.rhs.sval);
1302 +
1303 +        for(int i = 0; zconsForcePolicy[i] != '\0'; i++){
1304 +          zconsForcePolicy[i] = toupper(zconsForcePolicy[i]);
1305 +        }
1306 +        have_minimizer= 1;
1307 +        return 1;
1308 +        break;
1309 +        
1310 +      case DOUBLE:
1311 +        the_event->err_msg =
1312 +          strdup( "Global error. minimizer_name is not a double or int.\n" );
1313 +        return 0;
1314 +        break;
1315 +        
1316 +      case INT:
1317 +        the_event->err_msg =
1318 +          strdup( "Global error. minimizer_name is not a double or int.\n" );
1319 +        return 0;
1320 +        break;
1321 +        
1322 +      default:
1323 +        the_event->err_msg =
1324 +          strdup( "Global error. minimizer_name unrecognized.\n" );
1325 +        return 0;
1326 +        break;
1327 +      }
1328 +      break;
1329 +
1330 +    case G_MIN_MAXITER:
1331 +      switch( the_type ){
1332 +
1333 +      case STRING:
1334 +        the_event->err_msg =
1335 +          strdup( "Global error. minimizer_maxiteration is not a double or int.\n" );
1336 +        return 1;
1337 +        break;
1338 +        
1339 +      case DOUBLE:
1340 +        minimizer_maxiteration = the_event->evt.asmt.rhs.dval;
1341 +        have_minimizer_maxiteration = 1;
1342 +        return 1;
1343 +        break;
1344 +        
1345 +      case INT:
1346 +        minimizer_maxiteration = the_event->evt.asmt.rhs.ival;
1347 +        have_minimizer_maxiteration = 1;
1348 +        return 1;
1349 +        break;
1350 +        
1351 +      default:
1352 +        the_event->err_msg =
1353 +          strdup( "Global error. minimizer_maxiteration unrecognized.\n" );
1354 +        return 0;
1355 +        break;
1356 +      }
1357 +      break;
1358 +      
1359 +    case G_MIN_WRITEFRQ:
1360 +      switch( the_type ){
1361 +
1362 +      case STRING:
1363 +        the_event->err_msg =
1364 +          strdup( "Global error. minimizer_writefrq is not a double or int.\n" );
1365 +        return 1;
1366 +        break;
1367 +        
1368 +      case DOUBLE:
1369 +        minimizer_writefrq= the_event->evt.asmt.rhs.dval;
1370 +        have_minimizer_writefrq = 1;
1371 +        return 1;
1372 +        break;
1373 +        
1374 +      case INT:
1375 +        minimizer_writefrq= the_event->evt.asmt.rhs.ival;
1376 +        have_minimizer_writefrq = 1;
1377 +        return 1;
1378 +        break;
1379 +        
1380 +      default:
1381 +        the_event->err_msg =
1382 +          strdup( "Global error. minimizer_writefrq unrecognized.\n" );
1383 +        return 0;
1384 +        break;
1385 +      }
1386 +      break;
1387 +
1388 +    case G_MIN_STEPSIZE:
1389 +      switch( the_type ){
1390 +
1391 +      case STRING:
1392 +        the_event->err_msg =
1393 +          strdup( "Global error. minimizer_resetfrq is not a double or int.\n" );
1394 +        return 1;
1395 +        break;
1396 +        
1397 +      case DOUBLE:
1398 +        minimizer_stepsize= the_event->evt.asmt.rhs.dval;
1399 +        have_minimizer_stepsize = 1;
1400 +        return 1;
1401 +        break;
1402 +        
1403 +      case INT:
1404 +        minimizer_stepsize= the_event->evt.asmt.rhs.ival;
1405 +        have_minimizer_stepsize = 1;
1406 +        return 1;
1407 +        break;
1408 +        
1409 +      default:
1410 +        the_event->err_msg =
1411 +          strdup( "Global error. minimizer_resetfrq unrecognized.\n" );
1412 +        return 0;
1413 +        break;
1414 +      }
1415 +      break;      
1416 +
1417 +    case G_MIN_FTOL:
1418 +      switch( the_type ){
1419 +
1420 +      case STRING:
1421 +        the_event->err_msg =
1422 +          strdup( "Global error. minimizer_ftol is not a double or int.\n" );
1423 +        return 1;
1424 +        break;
1425 +        
1426 +      case DOUBLE:
1427 +        minimizer_ftol= the_event->evt.asmt.rhs.dval;
1428 +        have_minimizer_ftol = 1;
1429 +        return 1;
1430 +        break;
1431 +        
1432 +      case INT:
1433 +        minimizer_ftol= the_event->evt.asmt.rhs.ival;
1434 +        have_minimizer_ftol = 1;
1435 +        return 1;
1436 +        break;
1437 +        
1438 +      default:
1439 +        the_event->err_msg =
1440 +          strdup( "Global error. minimizer_ftol unrecognized.\n" );
1441 +        return 0;
1442 +        break;
1443 +      }
1444 +      break;
1445 +      
1446 +    case G_MIN_GTOL:
1447 +      switch( the_type ){
1448 +
1449 +      case STRING:
1450 +        the_event->err_msg =
1451 +          strdup( "Global error. minimizer_gtol is not a double or int.\n" );
1452 +        return 1;
1453 +        break;
1454 +        
1455 +      case DOUBLE:
1456 +        minimizer_gtol= the_event->evt.asmt.rhs.dval;
1457 +        have_minimizer_gtol = 1;
1458 +        return 1;
1459 +        break;
1460 +        
1461 +      case INT:
1462 +        minimizer_gtol= the_event->evt.asmt.rhs.ival;
1463 +        have_minimizer_gtol = 1;
1464 +        return 1;
1465 +        break;
1466 +        
1467 +      default:
1468 +        the_event->err_msg =
1469 +          strdup( "Global error. minimizer_gtol unrecognized.\n" );
1470 +        return 0;
1471 +        break;
1472 +      }
1473 +      break;
1474 +      
1475 +    case G_MIN_LSMAXITER:
1476 +      switch( the_type ){
1477 +
1478 +      case STRING:
1479 +        the_event->err_msg =
1480 +          strdup( "Global error. minimizer_ls_maxiteration is not a double or int.\n" );
1481 +        return 1;
1482 +        break;
1483 +        
1484 +      case DOUBLE:
1485 +        minimizer_ls_maxiteration = the_event->evt.asmt.rhs.dval;
1486 +        have_minimizer_ls_maxiteration = 1;
1487 +        return 1;
1488 +        break;
1489 +        
1490 +      case INT:
1491 +        minimizer_ls_maxiteration = the_event->evt.asmt.rhs.ival;
1492 +        have_minimizer_ls_maxiteration = 1;
1493 +        return 1;
1494 +        break;
1495 +        
1496 +      default:
1497 +        the_event->err_msg =
1498 +          strdup( "Global error. minimizer_ls_maxiteration unrecognized.\n" );
1499 +        return 0;
1500 +        break;
1501 +      }
1502 +      break;      
1503 +
1504 +    case G_MIN_LSTOL:
1505 +      switch( the_type ){
1506 +
1507 +      case STRING:
1508 +        the_event->err_msg =
1509 +          strdup( "Global error. minimizer_ls_tol is not a double or int.\n" );
1510 +        return 1;
1511 +        break;
1512 +        
1513 +      case DOUBLE:
1514 +        minimizer_ls_tol= the_event->evt.asmt.rhs.dval;
1515 +        have_minimizer_ls_tol = 1;
1516 +        return 1;
1517 +        break;
1518 +        
1519 +      case INT:
1520 +        minimizer_ls_tol= the_event->evt.asmt.rhs.ival;
1521 +        have_minimizer_ls_tol = 1;
1522 +        return 1;
1523 +        break;
1524 +        
1525 +      default:
1526 +        the_event->err_msg =
1527 +          strdup( "Global error. minimizer_ls_tol unrecognized.\n" );
1528 +        return 0;
1529 +        break;
1530 +      }
1531 +      break;
1532 +      
1533 +      // add more token cases here.
1534 +    case G_SEED:
1535 +      switch( the_type ){
1536 +        
1537 +      case STRING:
1538 +   the_event->err_msg =
1539 +          strdup( "Global error. seed is not a string.\n" );
1540 +        return 0;
1541 +   return 0;
1542 +        break;
1543 +        
1544 +      case DOUBLE:
1545 +   have_seed = 1;
1546 +   seed = (int)the_event->evt.asmt.rhs.dval;
1547 +        return 1;
1548 +        break;
1549 +        
1550 +      case INT:
1551 +   have_seed = 1;
1552 +   seed =  the_event->evt.asmt.rhs.ival ;
1553 +        return 1;
1554 +        break;
1555 +        
1556 +      default:
1557 +        the_event->err_msg =
1558 +          strdup( "Global error. seed unrecognized.\n" );
1559 +        return 0;
1560 +        break;
1561 +      }
1562 +      break;
1563 +      // add more token cases here.
1564 +
1565      }
1566    }
1567    
# Line 792 | Line 1621 | char* Globals::checkMe( void ){
1621      strcat( err, "\t->targetTemp\n" );
1622      have_err= 1;
1623    }
1624 +
1625    
1626 <  if( !have_ensemble ){
1627 <    strcat( err, "\t->ensemble\n" );
1628 <    have_err= 1;
1629 <  }
1626 >  if(!have_minimizer)
1627 >    if( !have_ensemble ){
1628 >      strcat( err, "\t->ensemble\n" );
1629 >      have_err= 1;
1630 >    }
1631    
1632    if( !have_dt ){
1633      strcat( err, "\t->dt\n" );

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines