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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines