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

Comparing trunk/OOPSE-2.0/src/io/Globals.cpp (file contents):
Revision 2238 by tim, Sun May 22 21:05:15 2005 UTC vs.
Revision 2365 by chrisfen, Fri Oct 14 14:18:02 2005 UTC

# Line 42 | Line 42
42   #include <stdlib.h>
43   #include <stdio.h>
44   #include <string.h>
45 + #include <string>
46  
47   #include "io/Globals.hpp"
48   #include "utils/simError.h"
# Line 49 | Line 50
50   #include "io/mpiBASS.h"
51   #endif // is_mpi
52  
52 /*
53 * The following section lists all of the defined tokens for the
54 * global assignment statements. All are prefixed with a G_ to avoid
55 * stepping on any previously defined enumerations.
56 *
57 * NOTE: tokens start at 1, 0 is a resrved token number
58 */
53  
54 < //required parameters
55 < #define G_FORCEFIELD         1
56 < #define G_NCOMPONENTS        2
63 < #define G_TARGETTEMP         3
64 < #define G_ENSEMBLE           4
65 < #define G_DT                 5
66 < #define G_RUNTIME            6
54 > #define DefineParameter(NAME,KEYWORD)                              \
55 >  NAME.setKeyword(KEYWORD);                  \
56 >  parameters_.insert(std::make_pair(std::string(KEYWORD),  &NAME));
57  
58 < //optional parameters
59 < #define G_INITIALCONFIG      7
60 < #define G_FINALCONFIG        8
71 < #define G_NMOL               9
72 < #define G_DENSITY           10
73 < #define G_BOX               11
74 < #define G_BOXX              12
75 < #define G_BOXY              13
76 < #define G_BOXZ              14
77 < #define G_SAMPLETIME        15
78 < #define G_STATUSTIME        16
79 < #define G_RCUT              17
80 < #define G_RSW               18
81 < #define G_DIELECTRIC        19
82 < #define G_TEMPSET           20
83 < #define G_THERMALTIME       21
84 < #define G_USEPBC            22
85 < #define G_MIXINGRULE        23
86 < #define G_USERF             24
87 < #define G_TARGETPRESSURE    25
88 < #define G_TAUTHERMOSTAT     26
89 < #define G_TAUBAROSTAT       27
90 < #define G_ZCONSTIME         28
91 < #define G_NZCONSTRAINTS     29
92 < #define G_ZCONSTOL          30
93 < #define G_ZCONSFORCEPOLICY  31
94 < #define G_SEED              32
95 < #define G_RESETTIME         33
96 < #define G_USEINITTIME       34
97 < #define G_USEINIT_XS_STATE  35
98 < #define G_ORTHOBOXTOLERANCE 36
99 < #define G_MINIMIZER         37
100 < #define G_MIN_MAXITER       38
101 < #define G_MIN_WRITEFRQ      39
102 < #define G_MIN_STEPSIZE      40
103 < #define G_MIN_FTOL          41
104 < #define G_MIN_GTOL          42
105 < #define G_MIN_LSTOL         43
106 < #define G_MIN_LSMAXITER     44
107 < #define G_ZCONSGAP          45
108 < #define G_ZCONSFIXTIME      46
109 < #define G_ZCONSUSINGSMD     47
110 < #define G_USE_SOLID_THERM_INT     48
111 < #define G_USE_LIQUID_THERM_INT    49
112 < #define G_THERM_INT_LAMBDA  50
113 < #define G_THERM_INT_K       51
114 < #define G_FORCEFIELD_VARIANT 52
115 < #define G_FORCEFIELD_FILENAME 53
116 < #define G_THERM_INT_DIST_SPRING  54
117 < #define G_THERM_INT_THETA_SPRING 55
118 < #define G_THERM_INT_OMEGA_SPRING 56
119 < #define G_SURFACETENSION 57
120 < #define G_PRINTPREESURETENSOR   58
58 > #define DefineOptionalParameter(NAME,KEYWORD)                              \
59 >  NAME.setKeyword(KEYWORD); NAME.setOptional(true);                    \
60 >  parameters_.insert(std::make_pair(std::string(KEYWORD),  &NAME));
61  
62 + #define DefineOptionalParameterWithDefaultValue(NAME,KEYWORD, DEFAULTVALUE)                              \
63 +  NAME.setKeyword(KEYWORD); NAME.setOptional(true); NAME.setDefaultValue(DEFAULTVALUE);                      \
64 +  parameters_.insert(std::make_pair(std::string(KEYWORD),  &NAME));
65 +
66   Globals::Globals(){
67 <  initalize();
67 >
68 >  DefineParameter(ForceField, "forceField")
69 >  DefineParameter(NComponents, "nComponents")
70 >
71 >  DefineOptionalParameter(TargetTemp, "targetTemp");
72 >  DefineOptionalParameter(Ensemble, "ensemble");
73 >  DefineOptionalParameter(Dt, "dt");
74 >  DefineOptionalParameter(RunTime, "runTime");
75 >  DefineOptionalParameter(InitialConfig, "initialConfig");
76 >  DefineOptionalParameter(FinalConfig, "finalConfig");
77 >  DefineOptionalParameter(NMol, "nMol");
78 >  DefineOptionalParameter(Density, "density");
79 >  DefineOptionalParameter(Box, "box");
80 >  DefineOptionalParameter(BoxX, "boxX");
81 >  DefineOptionalParameter(BoxY, "boxY");
82 >  DefineOptionalParameter(BoxZ, "boxZ");
83 >  DefineOptionalParameter(SampleTime, "sampleTime");
84 >  DefineOptionalParameter(ResetTime, "resetTime");
85 >  DefineOptionalParameter(StatusTime, "statusTime");
86 >  DefineOptionalParameter(CutoffRadius, "cutoffRadius");
87 >  DefineOptionalParameter(SwitchingRadius, "switchingRadius");
88 >  DefineOptionalParameter(Dielectric, "dielectric");
89 >  DefineOptionalParameter(TempSet, "tempSet");
90 >  DefineOptionalParameter(ThermalTime, "thermalTime");
91 >  DefineOptionalParameter(TargetPressure, "targetPressure");
92 >  DefineOptionalParameter(TauThermostat, "tauThermostat");
93 >  DefineOptionalParameter(TauBarostat, "tauBarostat");
94 >  DefineOptionalParameter(ZconsTime, "zconsTime");
95 >  DefineOptionalParameter(NZconstraints, "nZconstraints");  
96 >  DefineOptionalParameter(ZconsTol, "zconsTol");
97 >  DefineOptionalParameter(ZconsForcePolicy, "zconsForcePolicy");
98 >  DefineOptionalParameter(Seed, "seed");
99 >  DefineOptionalParameter(Minimizer, "minimizer");
100 >  DefineOptionalParameter(MinimizerMaxIter,"minimizerMaxIter");
101 >  DefineOptionalParameter(MinimizerWriteFrq, "minimizerWriteFrq");
102 >  DefineOptionalParameter(MinimizerStepSize, "minimizerStepSize");
103 >  DefineOptionalParameter(MinimizerFTol, "minimizerFTol");
104 >  DefineOptionalParameter(MinimizerGTol, "minimizerGTol");
105 >  DefineOptionalParameter(MinimizerLSTol, "minimizerLSTol");
106 >  DefineOptionalParameter(MinimizerLSMaxIter, "minimizerLSMaxIter");
107 >  DefineOptionalParameter(ZconsGap, "zconsGap");
108 >  DefineOptionalParameter(ZconsFixtime, "zconsFixtime");
109 >  DefineOptionalParameter(ZconsUsingSMD, "zconsUsingSMD");
110 >  DefineOptionalParameter(ThermodynamicIntegrationLambda, "thermodynamicIntegrationLambda");
111 >  DefineOptionalParameter(ThermodynamicIntegrationK, "thermodynamicIntegrationK");
112 >  DefineOptionalParameter(ForceFieldVariant, "forceFieldVariant");
113 >  DefineOptionalParameter(ForceFieldFileName, "forceFieldFileName");
114 >  DefineOptionalParameter(ThermIntDistSpringConst, "thermIntDistSpringConst");
115 >  DefineOptionalParameter(ThermIntThetaSpringConst, "thermIntThetaSpringConst");
116 >  DefineOptionalParameter(ThermIntOmegaSpringConst, "thermIntOmegaSpringConst");
117 >  DefineOptionalParameter(SurfaceTension, "surfaceTension");
118 >  DefineOptionalParameter(PrintPressureTensor, "printPressureTensor");
119 >  DefineOptionalParameter(ElectrostaticSummationMethod, "electrostaticSummationMethod");
120 >  DefineOptionalParameter(CutoffPolicy, "cutoffPolicy");
121 >  DefineOptionalParameter(StatFileFormat, "statFileFormat");    
122 >  
123 >  DefineOptionalParameterWithDefaultValue(MixingRule, "mixingRule", "standard");
124 >  DefineOptionalParameterWithDefaultValue(UsePeriodicBoundaryConditions, "usePeriodicBoundaryConditions", true);
125 >  DefineOptionalParameterWithDefaultValue(UseInitalTime, "useInitialTime", false);
126 >  DefineOptionalParameterWithDefaultValue(UseIntialExtendedSystemState, "useInitialExtendedSystemState", false);
127 >  DefineOptionalParameterWithDefaultValue(OrthoBoxTolerance, "orthoBoxTolerance", 1E-6);  
128 >  DefineOptionalParameterWithDefaultValue(UseSolidThermInt, "useSolidThermInt", false);
129 >  DefineOptionalParameterWithDefaultValue(UseLiquidThermInt, "useLiquidThermInt", false);
130 >  DefineOptionalParameterWithDefaultValue(ThermIntDistSpringConst, "thermIntDistSpringConst", 6.0);
131 >  DefineOptionalParameterWithDefaultValue(ThermIntThetaSpringConst, "thermIntThetaSpringConst", 7.5);
132 >  DefineOptionalParameterWithDefaultValue(ThermIntOmegaSpringConst, "thermIntOmegaSpringConst", 13.5);
133 >  DefineOptionalParameterWithDefaultValue(DampingAlpha, "dampingAlpha", 1.5);
134 >  DefineOptionalParameterWithDefaultValue(CompressDumpFile, "compressDumpFile", 0);
135 >  DefineOptionalParameterWithDefaultValue(SkinThickness, "skinThickness", 1.0);
136 >  
137   }
138  
139 < Globals::~Globals(){
127 <  int i;
128 <  if( components != NULL ){
129 <    for( i=0; i<n_components; i++ ) delete components[i];
130 <    delete[] components;
131 <  }
132 < }
133 <
134 < void Globals::initalize(){
135 <  int i;
139 > int Globals::globalAssign( event* the_event ){
140    
141 <  components = NULL;
142 <  
143 <  command_table.insert(CommandMapType::value_type("forceField", G_FORCEFIELD));
144 <  command_table.insert(CommandMapType::value_type("nComponents", G_NCOMPONENTS));
145 <  command_table.insert(CommandMapType::value_type("targetTemp", G_TARGETTEMP));
142 <  command_table.insert(CommandMapType::value_type("ensemble", G_ENSEMBLE));
143 <  command_table.insert(CommandMapType::value_type("dt", G_DT));
144 <  command_table.insert(CommandMapType::value_type("runTime", G_RUNTIME));
145 <  command_table.insert(CommandMapType::value_type("initialConfig", G_INITIALCONFIG));
146 <  command_table.insert(CommandMapType::value_type("finalConfig", G_FINALCONFIG));
147 <  command_table.insert(CommandMapType::value_type("nMol", G_NMOL));
148 <  command_table.insert(CommandMapType::value_type("density", G_DENSITY));
149 <  command_table.insert(CommandMapType::value_type("box", G_BOX));
150 <  command_table.insert(CommandMapType::value_type("boxX", G_BOXX));
151 <  command_table.insert(CommandMapType::value_type("boxY", G_BOXY));
152 <  command_table.insert(CommandMapType::value_type("boxZ", G_BOXZ));
153 <  command_table.insert(CommandMapType::value_type("sampleTime", G_SAMPLETIME));
154 <  command_table.insert(CommandMapType::value_type("resetTime", G_RESETTIME));
155 <  command_table.insert(CommandMapType::value_type("statusTime", G_STATUSTIME));
156 <  command_table.insert(CommandMapType::value_type("cutoffRadius", G_RCUT));
157 <  command_table.insert(CommandMapType::value_type("switchingRadius", G_RSW));
158 <  command_table.insert(CommandMapType::value_type("dielectric", G_DIELECTRIC));
159 <  command_table.insert(CommandMapType::value_type("tempSet", G_TEMPSET));
160 <  command_table.insert(CommandMapType::value_type("thermalTime", G_THERMALTIME));
161 <  command_table.insert(CommandMapType::value_type("mixingRule", G_MIXINGRULE));
162 <  command_table.insert(CommandMapType::value_type("usePeriodicBoundaryConditions", G_USEPBC));
163 <  command_table.insert(CommandMapType::value_type("useReactionField", G_USERF));
164 <  command_table.insert(CommandMapType::value_type("targetPressure", G_TARGETPRESSURE));
165 <  command_table.insert(CommandMapType::value_type("tauThermostat", G_TAUTHERMOSTAT));
166 <  command_table.insert(CommandMapType::value_type("tauBarostat", G_TAUBAROSTAT));
167 <  command_table.insert(CommandMapType::value_type("zconsTime", G_ZCONSTIME));
168 <  command_table.insert(CommandMapType::value_type("nZconstraints", G_NZCONSTRAINTS));
169 <  command_table.insert(CommandMapType::value_type("zconsTol", G_ZCONSTOL));
170 <  command_table.insert(CommandMapType::value_type("zconsForcePolicy", G_ZCONSFORCEPOLICY));
171 <  command_table.insert(CommandMapType::value_type("seed", G_SEED));
172 <  command_table.insert(CommandMapType::value_type("useInitialTime", G_USEINITTIME));
173 <  command_table.insert(CommandMapType::value_type("useInitialExtendedSystemState", G_USEINIT_XS_STATE));
174 <  command_table.insert(CommandMapType::value_type("orthoBoxTolerance", G_ORTHOBOXTOLERANCE));
175 <  command_table.insert(CommandMapType::value_type("minimizer", G_MINIMIZER));
176 <  command_table.insert(CommandMapType::value_type("minimizerMaxIter", G_MIN_MAXITER));
177 <  command_table.insert(CommandMapType::value_type("minimizerWriteFrq", G_MIN_WRITEFRQ));
178 <  command_table.insert(CommandMapType::value_type("minimizerStepSize", G_MIN_STEPSIZE));
179 <  command_table.insert(CommandMapType::value_type("minimizerFTol", G_MIN_FTOL));
180 <  command_table.insert(CommandMapType::value_type("minimizerGTol", G_MIN_GTOL));
181 <  command_table.insert(CommandMapType::value_type("minimizerLSTol", G_MIN_LSTOL));
182 <  command_table.insert(CommandMapType::value_type("minimizerLSMaxIter", G_MIN_LSMAXITER));
183 <  command_table.insert(CommandMapType::value_type("zconsGap", G_ZCONSGAP));
184 <  command_table.insert(CommandMapType::value_type("zconsFixtime", G_ZCONSFIXTIME));
185 <  command_table.insert(CommandMapType::value_type("zconsUsingSMD", G_ZCONSUSINGSMD));
186 <  command_table.insert(CommandMapType::value_type("useSolidThermInt", G_USE_SOLID_THERM_INT));
187 <  command_table.insert(CommandMapType::value_type("useLiquidThermInt", G_USE_LIQUID_THERM_INT));
188 <  command_table.insert(CommandMapType::value_type("thermodynamicIntegrationLambda", G_THERM_INT_LAMBDA));
189 <  command_table.insert(CommandMapType::value_type("thermodynamicIntegrationK", G_THERM_INT_K));
190 <  command_table.insert(CommandMapType::value_type("forceFieldVariant", G_FORCEFIELD_VARIANT));
191 <  command_table.insert(CommandMapType::value_type("forceFieldFileName", G_FORCEFIELD_FILENAME));
192 <  command_table.insert(CommandMapType::value_type("thermIntDistSpringConst", G_THERM_INT_DIST_SPRING));
193 <  command_table.insert(CommandMapType::value_type("thermIntThetaSpringConst", G_THERM_INT_THETA_SPRING));
194 <  command_table.insert(CommandMapType::value_type("thermIntOmegaSpringConst", G_THERM_INT_OMEGA_SPRING));
195 <  command_table.insert(CommandMapType::value_type("surfaceTension", G_SURFACETENSION));
196 <  command_table.insert(CommandMapType::value_type("printPressureTensor", G_PRINTPREESURETENSOR));
141 >  int key;
142 >  int token;
143 >  interface_assign_type the_type =  the_event->evt.asmt.asmt_type;
144 >  char* lhs = the_event->evt.asmt.lhs;
145 >  std::string keyword(lhs);
146  
147 +  bool result;
148  
199  strcpy( mixingRule,"standard");  //default mixing rules to standard.
200  usePBC = 1; //default  periodic boundry conditions to on
201  useRF  = 0;
202  useInitTime = 0; // default to pull init time from the init file
203  useInitXSstate = 0; // default to pull the extended state from the init file
204  orthoBoxTolerance = 1E-6;
205  useSolidThermInt = 0; // default solid-state thermodynamic integration to off
206  useLiquidThermInt = 0; // default liquid thermodynamic integration to off
149  
150 <  have_force_field =  0;
151 <  have_n_components = 0;
152 <  have_target_temp =  0;
153 <  have_ensemble =     0;
154 <  have_dt =           0;
155 <  have_run_time =     0;
150 >  ParamMap::iterator i =parameters_.find(keyword);
151 >  if (i != parameters_.end()) {
152 >    if( the_type == STRING ){
153 >       result = i->second->setData(std::string(the_event->evt.asmt.rhs.sval));
154 >       if (!result ) {
155 >            sprintf(the_event->err_msg, "Error in parsing meta-data file!\n\t%s must be a string.\n", keyword.c_str() );
156 >       }
157 >    } else if( the_type == DOUBLE ){
158 >      result = i->second->setData(the_event->evt.asmt.rhs.dval);
159 >       if (!result )
160 >         sprintf(the_event->err_msg, "Error in parsing meta-data file!\n\t%s must be a double.\n", keyword.c_str() );
161 >    }      
162 >    else if (the_type == INT ){
163 >      result = i->second->setData(the_event->evt.asmt.rhs.ival);
164 >       if (!result )
165 >         sprintf(the_event->err_msg,  "Error in parsing meta-data file!\n\t%s must be an int.\n", keyword.c_str() );
166 >      
167 >    } else {
168 >    
169 >    }
170 >  }
171 >
172 >  if (keyword == "nComponents" && getNComponents() > 0) {
173 >    components = new Component*[getNComponents()];
174 >  }else if (keyword == "nZconstraints" && getNZconstraints() > 0) {
175 >    zConstraints = new ZconStamp*[getNZconstraints()];
176 >  }
177    
178 <  have_initial_config = 0;
216 <  have_final_config =   0;
217 <  have_n_mol =          0;
218 <  have_density =        0;
219 <  have_box =            0;
220 <  have_box_x =          0;
221 <  have_box_y =          0;
222 <  have_box_y =          0;
223 <  have_box_z =          0;
224 <  have_sample_time =    0;
225 <  have_status_time =    0;
226 <  have_reset_time =     0;
227 <  have_thermal_time =   0;
228 <  have_rcut =           0;
229 <  have_rsw =            0;
230 <  have_dielectric =     0;
231 <  have_tempSet =        0;
232 <  have_target_pressure =0;
233 <  have_q_mass =         0;
234 <  have_tau_thermostat = 0;
235 <  have_tau_barostat   = 0;
236 <  have_zcons_time     = 0;
237 <  have_n_zConstraints = 0;
238 <  have_zConstraints   = 0;
239 <  have_zcons_tol = 0;
240 <  have_zcons_gap = 0;
241 <  have_zcons_fixtime = 0;
242 <  have_zcons_using_smd = 0;  
243 <  have_seed = 0;
244 <  have_minimizer = 0;
245 <  have_minimizer_maxiteration = 0;
246 <  have_minimizer_writefrq = 0;
247 <  have_minimizer_stepsize = 0;
248 <  have_minimizer_ftol = 0;
249 <  have_minimizer_gtol = 0;
250 <  have_minimizer_ls_tol = 0;
251 <  have_minimizer_ls_maxiteration = 0;
252 <  have_thermodynamic_integration_lambda = 0;
253 <  have_thermodynamic_integration_k = 0;
254 <  have_forcefield_variant = 0;
255 <  have_forcefield_filename = 0;
256 <  have_dist_spring_constant =  0;
257 <  have_theta_spring_constant = 0;
258 <  have_omega_spring_constant = 0;
259 <  have_surface_tension = 0;
260 <  have_print_pressure_tensor = 0;
178 >  return result;
179   }
180  
181   int Globals::newComponent( event* the_event ){
# Line 266 | Line 184 | int Globals::newComponent( event* the_event ){
184    int index = the_event->evt.blk_index;
185    char err[200];
186    
187 <  if( have_n_components && index < n_components )
187 >  if( haveNComponents() && index < getNComponents() )
188      components[index] = current_component;
189    else{
190 <    if( have_n_components ){
190 >    if( haveNComponents()  ){
191        sprintf( err, "meta-data parsing error: %d out of nComponents range",
192                 index );
193        the_event->err_msg = strdup( err );
# Line 333 | Line 251 | int Globals::newZconstraint( event* the_event ){
251    char err[200];
252    current_zConstraint = new ZconStamp( index );
253    
254 <  have_zConstraints = 1;
337 <
338 <  if( have_n_zConstraints && index < n_zConstraints )
254 >  if( haveNZconstraints() && index < getNZconstraints() )
255      zConstraints[index] = current_zConstraint;
256    else{
257 <    if( have_n_zConstraints ){
257 >    if( haveNZconstraints() ){
258        sprintf( err, "meta-data parsing error: %d out of nZconstraints range",
259                 index );
260        the_event->err_msg = strdup( err );
# Line 351 | Line 267 | int Globals::newZconstraint( event* the_event ){
267        return 0;
268      }
269    }  
270 <
270 >
271    return 1;
272   }
273  
# Line 396 | Line 312 | int Globals::globalAssign( event* the_event ){
312    return 1;
313   }
314  
315 < int Globals::globalAssign( event* the_event ){
400 <  
401 <  int key;
402 <  int token;
403 <  interface_assign_type the_type =  the_event->evt.asmt.asmt_type;
404 <  char* lhs = the_event->evt.asmt.lhs;
405 <  char err[300];
406 <  
407 <  token = 0;
315 > char* Globals::checkMe( void ){
316  
409  CommandMapType::iterator iter;
410  std::string keyword(lhs);
411  iter = command_table.find(keyword);
412  if (iter != command_table.end()) {
413    token = iter->second;
414  }
415  
416  if( token ){
417    
418    switch( token ){
419      
420    case G_FORCEFIELD:
421      if( the_type == STRING ){
422        strcpy( force_field, the_event->evt.asmt.rhs.sval );
423        have_force_field = 1;
424        return 1;
425      }
426      
427      the_event->err_msg =
428        strdup( "Error in parsing meta-data file!\n\tforceField was not a string assignment.\n" );
429      return 0;
430      break;
431      
432    case G_NCOMPONENTS:
433      if( the_type == STRING ){
434        the_event->err_msg =
435          strdup("Error in parsing meta-data file!\n\tnComponents is not a double or an int.\n" );
436        return 0;
437      }
438      
439      else if( the_type == DOUBLE ){
440        n_components = (int)the_event->evt.asmt.rhs.dval;
441        components = new Component*[n_components];
442        have_n_components = 1;
443        return 1;
444      }
445      
446      else{
447        n_components = the_event->evt.asmt.rhs.ival;
448        components = new Component*[n_components];
449        have_n_components = 1;
450        return 1;
451      }
452      break;
317  
318 <    case G_NZCONSTRAINTS:
319 <      if( the_type == STRING ){
456 <        the_event->err_msg =
457 <          strdup("Error in parsing meta-data file!\n\tnZconstraints is not a double or an int.\n" );
458 <        return 0;
459 <      }
460 <      
461 <      else if( the_type == DOUBLE ){
462 <        n_zConstraints = (int)the_event->evt.asmt.rhs.dval;
463 <        zConstraints = new ZconStamp*[n_zConstraints];
464 <        have_n_zConstraints = 1;
465 <        return 1;
466 <      }
467 <      
468 <      else{
469 <        n_zConstraints = the_event->evt.asmt.rhs.ival;
470 <        zConstraints = new ZconStamp*[n_zConstraints];
471 <        have_n_zConstraints = 1;
472 <        return 1;
473 <      }
474 <      break;
475 <      
476 <    case G_TARGETTEMP:
477 <      switch( the_type ){
478 <        
479 <      case STRING:
480 <        the_event->err_msg =
481 <          strdup( "Error in parsing meta-data file!\n\ttargetTemp is not a double or int.\n" );
482 <        return 0;
483 <        break;
484 <        
485 <      case DOUBLE:
486 <        target_temp = the_event->evt.asmt.rhs.dval;
487 <        have_target_temp = 1;
488 <        return 1;
489 <        break;
490 <        
491 <      case INT:
492 <        target_temp = (double)the_event->evt.asmt.rhs.ival;
493 <        have_target_temp = 1;
494 <        return 1;
495 <        break;
496 <        
497 <      default:
498 <        the_event->err_msg =
499 <          strdup( "Error in parsing meta-data file!\n\ttargetTemp unrecognized.\n" );
500 <        return 0;
501 <        break;
502 <      }
503 <      break;
504 <
505 <    case G_ORTHOBOXTOLERANCE:
506 <      switch( the_type ){
507 <        
508 <      case STRING:
509 <        the_event->err_msg =
510 <          strdup( "Error in parsing meta-data file!\n\torthoBoxTolerance is not a double or int.\n" );
511 <        return 0;
512 <        break;
513 <        
514 <      case DOUBLE:
515 <        orthoBoxTolerance = the_event->evt.asmt.rhs.dval;
516 <        have_target_temp = 1;
517 <        return 1;
518 <        break;
519 <        
520 <      case INT:
521 <        orthoBoxTolerance = (double)the_event->evt.asmt.rhs.ival;
522 <        have_target_temp = 1;
523 <        return 1;
524 <        break;
525 <        
526 <      default:
527 <        the_event->err_msg =
528 <          strdup( "Global error.orthoBoxTolerance unrecognized.\n" );
529 <        return 0;
530 <        break;
531 <      }
532 <      break;
533 <      
534 <    case G_ENSEMBLE:
535 <      if( the_type == STRING ){
536 <        strcpy( ensemble, the_event->evt.asmt.rhs.sval );
537 <        have_ensemble = 1;
538 <        return 1;
539 <      }
540 <      
541 <      the_event->err_msg =
542 <        strdup( "Error in parsing meta-data file!\n\tensemble was not assigned to a string\n" );
543 <      return 0;
544 <      break;      
545 <
546 <    case G_MIXINGRULE:
547 <      if( the_type == STRING ){
548 <        strcpy( mixingRule, the_event->evt.asmt.rhs.sval );
549 <        return 1;
550 <      }
551 <      
552 <      the_event->err_msg =
553 <        strdup( "Error in parsing meta-data file!\n\tmixing rule was not assigned to a string\n" );
554 <      return 0;
555 <      break;      
556 <      
557 <    case G_DT:
558 <      switch( the_type ){
559 <        
560 <      case STRING:
561 <        the_event->err_msg =
562 <          strdup( "Error in parsing meta-data file!\n\tdt is not a double or int.\n" );
563 <        return 0;
564 <        break;
565 <        
566 <      case DOUBLE:
567 <        dt = the_event->evt.asmt.rhs.dval;
568 <        have_dt = 1;
569 <        return 1;
570 <        break;
571 <        
572 <      case INT:
573 <        dt = (double)the_event->evt.asmt.rhs.ival;
574 <        have_dt = 1;
575 <        return 1;
576 <        break;
577 <        
578 <      default:
579 <        the_event->err_msg =
580 <          strdup( "Error in parsing meta-data file!\n\tdt unrecognized.\n" );
581 <        return 0;
582 <        break;
583 <      }
584 <      break;
585 <      
586 <    case G_RUNTIME:
587 <      switch( the_type ){
588 <        
589 <      case STRING:
590 <        the_event->err_msg =
591 <          strdup( "Error in parsing meta-data file!\n\trunTime is not a double or int.\n" );
592 <        return 0;
593 <        break;
594 <        
595 <      case DOUBLE:
596 <        run_time = the_event->evt.asmt.rhs.dval;
597 <        have_run_time = 1;
598 <        return 1;
599 <        break;
600 <        
601 <      case INT:
602 <        run_time = (double)the_event->evt.asmt.rhs.ival;
603 <        have_run_time = 1;
604 <        return 1;
605 <        break;
606 <        
607 <      default:
608 <        the_event->err_msg =
609 <          strdup( "Error in parsing meta-data file!\n\trunTime unrecognized.\n" );
610 <        return 0;
611 <        break;
612 <      }
613 <      break;
614 <      
615 <    case G_INITIALCONFIG:
616 <      if( the_type == STRING ){
617 <        strcpy( initial_config, the_event->evt.asmt.rhs.sval );
618 <        have_initial_config = 1;
619 <        return 1;
620 <      }
621 <      
622 <      the_event->err_msg =
623 <        strdup( "Error in parsing meta-data file!\n\tinitialConfig was not a string assignment.\n" );
624 <      return 0;
625 <      break;
626 <      
627 <    case G_FINALCONFIG:
628 <      if( the_type == STRING ){
629 <        strcpy( final_config, the_event->evt.asmt.rhs.sval );
630 <        have_final_config = 1;
631 <        return 1;
632 <      }
633 <      
634 <      the_event->err_msg =
635 <        strdup( "Error in parsing meta-data file!\n\tfinalConfig was not a string assignment.\n" );
636 <      return 0;
637 <      break;
638 <      
639 <    case G_NMOL:
640 <      switch( the_type ){
641 <        
642 <      case STRING:
643 <        the_event->err_msg =
644 <          strdup( "Error in parsing meta-data file!\n\tnMol is not a double or int.\n" );
645 <        return 0;
646 <        break;
647 <        
648 <      case DOUBLE:
649 <        n_mol = (int)the_event->evt.asmt.rhs.dval;
650 <        have_n_mol = 1;
651 <        return 1;
652 <        break;
653 <        
654 <      case INT:
655 <        n_mol = the_event->evt.asmt.rhs.ival;
656 <        have_n_mol = 1;
657 <        return 1;
658 <        break;
659 <        
660 <      default:
661 <        the_event->err_msg =
662 <          strdup( "Error in parsing meta-data file!\n\tnMol unrecognized.\n" );
663 <        return 0;
664 <        break;
665 <      }
666 <      break;
667 <      
668 <    case G_DENSITY:
669 <      switch( the_type ){
670 <        
671 <      case STRING:
672 <        the_event->err_msg =
673 <          strdup( "Error in parsing meta-data file!\n\tdensity is not a double or int.\n" );
674 <        return 0;
675 <        break;
676 <        
677 <      case DOUBLE:
678 <        density = the_event->evt.asmt.rhs.dval;
679 <        have_density = 1;
680 <        return 1;
681 <        break;
682 <        
683 <      case INT:
684 <        density = (double)the_event->evt.asmt.rhs.ival;
685 <        have_density = 1;
686 <        return 1;
687 <        break;
688 <        
689 <      default:
690 <        the_event->err_msg =
691 <          strdup( "Error in parsing meta-data file!\n\tdensity unrecognized.\n" );
692 <        return 0;
693 <        break;
694 <      }
695 <      break;
696 <      
697 <    case G_BOX:
698 <      switch( the_type ){
699 <        
700 <      case STRING:
701 <        the_event->err_msg =
702 <          strdup( "Error in parsing meta-data file!\n\tbox is not a double or int.\n" );
703 <        return 0;
704 <        break;
705 <        
706 <      case DOUBLE:
707 <        box = the_event->evt.asmt.rhs.dval;
708 <        have_box = 1;
709 <        return 1;
710 <        break;
711 <        
712 <      case INT:
713 <        box = (double)the_event->evt.asmt.rhs.ival;
714 <        have_box = 1;
715 <        return 1;
716 <        break;
717 <        
718 <      default:
719 <        the_event->err_msg =
720 <          strdup( "Error in parsing meta-data file!\n\tbox unrecognized.\n" );
721 <        return 0;
722 <        break;
723 <      }
724 <      break;
725 <      
726 <    case G_BOXX:
727 <      switch( the_type ){
728 <        
729 <      case STRING:
730 <        the_event->err_msg =
731 <          strdup( "Error in parsing meta-data file!\n\tboxX is not a double or int.\n" );
732 <        return 0;
733 <        break;
734 <        
735 <      case DOUBLE:
736 <        box_x = the_event->evt.asmt.rhs.dval;
737 <        have_box_x = 1;
738 <        return 1;
739 <        break;
740 <        
741 <      case INT:
742 <        box_x = (double)the_event->evt.asmt.rhs.ival;
743 <        have_box_x = 1;
744 <        return 1;
745 <        break;
746 <        
747 <      default:
748 <        the_event->err_msg =
749 <          strdup( "Error in parsing meta-data file!\n\tboxX unrecognized.\n" );
750 <        return 0;
751 <        break;
752 <      }
753 <      break;
754 <      
755 <    case G_BOXY:
756 <      switch( the_type ){
757 <        
758 <      case STRING:
759 <        the_event->err_msg =
760 <          strdup( "Error in parsing meta-data file!\n\tboxY is not a double or int.\n" );
761 <        return 0;
762 <        break;
763 <        
764 <      case DOUBLE:
765 <        box_y = the_event->evt.asmt.rhs.dval;
766 <        have_box_y = 1;
767 <        return 1;
768 <        break;
769 <        
770 <      case INT:
771 <        box_y = (double)the_event->evt.asmt.rhs.ival;
772 <        have_box_y = 1;
773 <        return 1;
774 <        break;
775 <        
776 <      default:
777 <        the_event->err_msg =
778 <          strdup( "Error in parsing meta-data file!\n\tboxY unrecognized.\n" );
779 <        return 0;
780 <        break;
781 <      }
782 <      break;
783 <      
784 <    case G_BOXZ:
785 <      switch( the_type ){
786 <        
787 <      case STRING:
788 <        the_event->err_msg =
789 <          strdup( "Error in parsing meta-data file!\n\tboxZ is not a double or int.\n" );
790 <        return 0;
791 <        break;
792 <        
793 <      case DOUBLE:
794 <        box_z = the_event->evt.asmt.rhs.dval;
795 <        have_box_z = 1;
796 <        return 1;
797 <        break;
798 <        
799 <      case INT:
800 <        box_z = (double)the_event->evt.asmt.rhs.ival;
801 <        have_box_z = 1;
802 <        return 1;
803 <        break;
804 <        
805 <      default:
806 <        the_event->err_msg =
807 <          strdup( "Error in parsing meta-data file!\n\tboxZ unrecognized.\n" );
808 <        return 0;
809 <        break;
810 <      }
811 <      break;
812 <      
813 <    case G_SAMPLETIME:
814 <      switch( the_type ){
815 <        
816 <      case STRING:
817 <        the_event->err_msg =
818 <          strdup( "Error in parsing meta-data file!\n\tsampleTime is not a double or int.\n" );
819 <        return 0;
820 <        break;
821 <        
822 <      case DOUBLE:
823 <        sample_time = the_event->evt.asmt.rhs.dval;
824 <        have_sample_time = 1;
825 <        return 1;
826 <        break;
827 <        
828 <      case INT:
829 <        sample_time = (double)the_event->evt.asmt.rhs.ival;
830 <        have_sample_time = 1;
831 <        return 1;
832 <        break;
833 <        
834 <      default:
835 <        the_event->err_msg =
836 <          strdup( "Error in parsing meta-data file!\n\tsampleTime unrecognized.\n" );
837 <        return 0;
838 <        break;
839 <      }
840 <      break;
841 <      
842 <    case G_STATUSTIME:
843 <      switch( the_type ){
844 <        
845 <      case STRING:
846 <        the_event->err_msg =
847 <          strdup( "Error in parsing meta-data file!\n\tstatusTime is not a double or int.\n" );
848 <        return 0;
849 <        break;
850 <        
851 <      case DOUBLE:
852 <        status_time = the_event->evt.asmt.rhs.dval;
853 <        have_status_time = 1;
854 <        return 1;
855 <        break;
856 <        
857 <      case INT:
858 <        status_time = (double)the_event->evt.asmt.rhs.ival;
859 <        have_status_time = 1;
860 <        return 1;
861 <        break;
862 <        
863 <      default:
864 <        the_event->err_msg =
865 <          strdup( "Error in parsing meta-data file!\n\tstatusTime unrecognized.\n" );
866 <        return 0;
867 <        break;
868 <      }
869 <      break;
318 >  std::string err("The following required keywords are missing:\n");
319 >  short int have_err = 0;
320  
321 <    case G_RESETTIME:
322 <      switch( the_type ){
323 <        
324 <      case STRING:
875 <        the_event->err_msg =
876 <          strdup( "Error in parsing meta-data file!\n\tresetTime is not a double or int.\n" );
877 <        return 0;
878 <        break;
879 <        
880 <      case DOUBLE:
881 <        resetTime = the_event->evt.asmt.rhs.dval;
882 <        have_reset_time = 1;
883 <        return 1;
884 <        break;
885 <        
886 <      case INT:
887 <        resetTime = (double)the_event->evt.asmt.rhs.ival;
888 <        have_reset_time = 1;
889 <        return 1;
890 <        break;
891 <        
892 <      default:
893 <        the_event->err_msg =
894 <          strdup( "Error in parsing meta-data file!\n\tresetTime unrecognized.\n" );
895 <        return 0;
896 <        break;
897 <      }
898 <      break;
899 <
900 <    case G_THERMALTIME:
901 <      switch( the_type ){
902 <        
903 <      case STRING:
904 <        the_event->err_msg =
905 <          strdup( "Error in parsing meta-data file!\n\tthermalTime is not a double or int.\n" );
906 <        return 0;
907 <        break;
908 <        
909 <      case DOUBLE:
910 <        thermal_time = the_event->evt.asmt.rhs.dval;
911 <        have_thermal_time = 1;
912 <        return 1;
913 <        break;
914 <        
915 <      case INT:
916 <        thermal_time = (double)the_event->evt.asmt.rhs.ival;
917 <        have_thermal_time = 1;
918 <        return 1;
919 <        break;
920 <        
921 <      default:
922 <        the_event->err_msg =
923 <          strdup( "Error in parsing meta-data file!\n\tthermalTime unrecognized.\n" );
924 <        return 0;
925 <        break;
926 <      }
927 <      break;
928 <      
929 <    case G_RCUT:
930 <      switch( the_type ){
931 <        
932 <      case STRING:
933 <        the_event->err_msg =
934 <          strdup( "Error in parsing meta-data file!\n\tcutoffRadius is not a double or int.\n" );
935 <        return 0;
936 <        break;
937 <        
938 <      case DOUBLE:
939 <        rcut = the_event->evt.asmt.rhs.dval;
940 <        have_rcut = 1;
941 <        return 1;
942 <        break;
943 <        
944 <      case INT:
945 <        rcut = (double)the_event->evt.asmt.rhs.ival;
946 <        have_rcut = 1;
947 <        return 1;
948 <        break;
949 <        
950 <      default:
951 <        the_event->err_msg =
952 <          strdup( "Error in parsing meta-data file!\n\tcutoffRadius unrecognized.\n" );
953 <        return 0;
954 <        break;
955 <      }
956 <      break;
957 <
958 <    case G_RSW:
959 <      switch( the_type ){
960 <        
961 <      case STRING:
962 <        the_event->err_msg =
963 <          strdup( "Error in parsing meta-data file!\n\tswitchingRadius is not a double or int.\n" );
964 <        return 0;
965 <        break;
966 <        
967 <      case DOUBLE:
968 <        rsw = the_event->evt.asmt.rhs.dval;
969 <        have_rsw = 1;
970 <        return 1;
971 <        break;
972 <        
973 <      case INT:
974 <        rsw = (double)the_event->evt.asmt.rhs.ival;
975 <        have_rsw = 1;
976 <        return 1;
977 <        break;
978 <        
979 <      default:
980 <        the_event->err_msg =
981 <          strdup( "Error in parsing meta-data file!\n\tswitchingRadius unrecognized.\n" );
982 <        return 0;
983 <        break;
984 <      }
985 <      break;
986 <      
987 <    case G_DIELECTRIC:
988 <      switch( the_type ){
989 <        
990 <      case STRING:
991 <        the_event->err_msg =
992 <          strdup( "Error in parsing meta-data file!\n\tdielectric is not a double or int.\n" );
993 <        return 0;
994 <        break;
995 <        
996 <      case DOUBLE:
997 <        dielectric = the_event->evt.asmt.rhs.dval;
998 <        have_dielectric = 1;
999 <        return 1;
1000 <        break;
1001 <        
1002 <      case INT:
1003 <        dielectric = (double)the_event->evt.asmt.rhs.ival;
1004 <        have_dielectric = 1;
1005 <        return 1;
1006 <        break;
1007 <        
1008 <      default:
1009 <        the_event->err_msg =
1010 <          strdup( "Error in parsing meta-data file!\n\tdielectric unrecognized.\n" );
1011 <        return 0;
1012 <        break;
1013 <      }
1014 <      break;
1015 <      
1016 <    case G_TEMPSET:
1017 <      if( the_type == STRING ){
1018 <        
1019 <        if( !strcasecmp( "true", the_event->evt.asmt.rhs.sval )) tempSet = 1;
1020 <        else if( !strcasecmp( "false", the_event->evt.asmt.rhs.sval )) tempSet = 0;
1021 <        else{
1022 <          the_event->err_msg =
1023 <            strdup( "Error in parsing meta-data file!\n\ttempSet was not \"true\" or \"false\".\n" );
1024 <          return 0;
1025 <        }
1026 <        have_tempSet = 1;
1027 <        return 1;
1028 <      }
1029 <      
1030 <      the_event->err_msg =
1031 <        strdup( "Error in parsing meta-data file!\n\ttempSet was not \"true\" or \"false\".\n" );
1032 <      return 0;
1033 <      break;
1034 <
1035 <    case G_USEINITTIME:
1036 <      if( the_type == STRING ){
1037 <        
1038 <        if( !strcasecmp( "true", the_event->evt.asmt.rhs.sval )) useInitTime = 1;
1039 <        else if( !strcasecmp( "false", the_event->evt.asmt.rhs.sval )) useInitTime = 0;
1040 <        else{
1041 <          the_event->err_msg =
1042 <            strdup( "Error in parsing meta-data file!\n\tuseInitTime was not \"true\" or \"false\".\n" );
1043 <          return 0;
1044 <        }
1045 <        return 1;
1046 <      }
1047 <      
1048 <      the_event->err_msg =
1049 <        strdup( "Error in parsing meta-data file!\n\tuseInitTime was not \"true\" or \"false\".\n" );
1050 <      return 0;
1051 <      break;
1052 <
1053 <    case G_USEINIT_XS_STATE:
1054 <      if( the_type == STRING ){
1055 <        
1056 <        if( !strcasecmp( "true", the_event->evt.asmt.rhs.sval ))
1057 <          useInitXSstate = 1;
1058 <        else if( !strcasecmp( "false", the_event->evt.asmt.rhs.sval ))
1059 <          useInitXSstate = 0;
1060 <        else{
1061 <          the_event->err_msg =
1062 <            strdup( "Error in parsing meta-data file!\n\tuseInitExtendedSystemState was not \"true\" or \"false\".\n" );
1063 <          return 0;
1064 <        }
1065 <        return 1;
1066 <      }
1067 <      
1068 <      the_event->err_msg =
1069 <        strdup( "Error in parsing meta-data file!\n\tuseInitExtendedSystemState was not \"true\" or \"false\".\n" );
1070 <      return 0;
1071 <      break;
1072 <      
1073 <    case G_USEPBC:
1074 <      if( the_type == STRING ){
1075 <        
1076 <        if( !strcasecmp( "true", the_event->evt.asmt.rhs.sval )) usePBC = 1;
1077 <        else if( !strcasecmp( "false", the_event->evt.asmt.rhs.sval )) usePBC = 0;
1078 <        else{
1079 <          the_event->err_msg =
1080 <            strdup( "Error in parsing meta-data file!\n\tusePeriodicBoundaryConditions was not \"true\" or \"false\".\n" );
1081 <          return 0;
1082 <        }
1083 <        return 1;
1084 <      }
1085 <      
1086 <      the_event->err_msg =
1087 <        strdup( "Error in parsing meta-data file!\n\tusePeriodicBoundaryConditions was not \"true\" or \"false\".\n" );
1088 <      return 0;
1089 <      break;
1090 <
1091 <    case G_USERF:
1092 <      if( the_type == STRING ){
1093 <        
1094 <        if( !strcasecmp( "true", the_event->evt.asmt.rhs.sval )) useRF = 1;
1095 <        else if( !strcasecmp( "false", the_event->evt.asmt.rhs.sval )) useRF = 0;
1096 <        else{
1097 <          the_event->err_msg =
1098 <            strdup( "Error in parsing meta-data file!\n\tuseReactionField was not \"true\" or \"false\".\n" );
1099 <          return 0;
1100 <        }
1101 <        return 1;
1102 <      }
1103 <      
1104 <      the_event->err_msg =
1105 <        strdup( "Error in parsing meta-data file!\n\tuseReactionField was not \"true\" or \"false\".\n" );
1106 <      return 0;
1107 <      break;
1108 <
1109 <    case G_TARGETPRESSURE:
1110 <      switch( the_type ){
1111 <        
1112 <      case STRING:
1113 <        the_event->err_msg =
1114 <          strdup( "Error in parsing meta-data file!\n\ttargetPressure is not a double or int.\n" );
1115 <        return 0;
1116 <        break;
1117 <        
1118 <      case DOUBLE:
1119 <        target_pressure = the_event->evt.asmt.rhs.dval;
1120 <        have_target_pressure = 1;
1121 <        return 1;
1122 <        break;
1123 <        
1124 <      case INT:
1125 <        target_pressure = (double)the_event->evt.asmt.rhs.ival;
1126 <        have_target_pressure = 1;
1127 <        return 1;
1128 <        break;
1129 <        
1130 <      default:
1131 <        the_event->err_msg =
1132 <          strdup( "Error in parsing meta-data file!\n\ttargetPressure unrecognized.\n" );
1133 <        return 0;
1134 <        break;
1135 <      }
1136 <      break;
1137 <
1138 <    case G_TAUTHERMOSTAT:
1139 <      switch( the_type ){
1140 <        
1141 <      case STRING:
1142 <        the_event->err_msg =
1143 <          strdup( "Error in parsing meta-data file!\n\ttauThermostat is not a double or int.\n" );
1144 <        return 0;
1145 <        break;
1146 <        
1147 <      case DOUBLE:
1148 <        tau_thermostat = the_event->evt.asmt.rhs.dval;
1149 <        have_tau_thermostat = 1;
1150 <        return 1;
1151 <        break;
1152 <        
1153 <      case INT:
1154 <        tau_thermostat = (double)the_event->evt.asmt.rhs.ival;
1155 <        have_tau_thermostat = 1;
1156 <        return 1;
1157 <        break;
1158 <        
1159 <      default:
1160 <        the_event->err_msg =
1161 <          strdup( "Error in parsing meta-data file!\n\ttauThermostat unrecognized.\n" );
1162 <        return 0;
1163 <        break;
1164 <      }
1165 <      break;
1166 <
1167 <    case G_TAUBAROSTAT:
1168 <      switch( the_type ){
1169 <        
1170 <      case STRING:
1171 <        the_event->err_msg =
1172 <          strdup( "Error in parsing meta-data file!\n\ttauBarostat is not a double or int.\n" );
1173 <        return 0;
1174 <        break;
1175 <        
1176 <      case DOUBLE:
1177 <        tau_barostat = the_event->evt.asmt.rhs.dval;
1178 <        have_tau_barostat = 1;
1179 <        return 1;
1180 <        break;
1181 <        
1182 <      case INT:
1183 <        tau_barostat = (double)the_event->evt.asmt.rhs.ival;
1184 <        have_tau_barostat = 1;
1185 <        return 1;
1186 <        break;
1187 <        
1188 <      default:
1189 <        the_event->err_msg =
1190 <          strdup( "Error in parsing meta-data file!\n\ttauBarostat unrecognized.\n" );
1191 <        return 0;
1192 <        break;
1193 <      }
1194 <      break;
1195 <      
1196 <    case G_ZCONSTIME:
1197 <      switch( the_type ){
1198 <        
1199 <      case STRING:
1200 <        the_event->err_msg =
1201 <          strdup( "Error in parsing meta-data file!\n\tzcons_time is not a double or int.\n" );
1202 <        return 0;
1203 <        break;
1204 <        
1205 <      case DOUBLE:
1206 <        zcons_time = the_event->evt.asmt.rhs.dval;
1207 <        have_zcons_time = 1;
1208 <        return 1;
1209 <        break;
1210 <        
1211 <      case INT:
1212 <        zcons_time = (double)the_event->evt.asmt.rhs.ival;
1213 <        have_zcons_time = 1;
1214 <        return 1;
1215 <        break;
1216 <        
1217 <      default:
1218 <        the_event->err_msg =
1219 <          strdup( "Error in parsing meta-data file!\n\tzcons_time unrecognized.\n" );
1220 <        return 0;
1221 <        break;
1222 <      }
1223 <      break;
1224 <
1225 <    case G_ZCONSTOL:
1226 <      switch( the_type ){
1227 <        
1228 <      case STRING:
1229 <        the_event->err_msg =
1230 <          strdup( "Error in parsing meta-data file!\n\tzcons_tol is not a double or int.\n" );
1231 <        return 0;
1232 <        break;
1233 <        
1234 <      case DOUBLE:
1235 <        zcons_tol = the_event->evt.asmt.rhs.dval;
1236 <        have_zcons_tol = 1;
1237 <        return 1;
1238 <        break;
1239 <        
1240 <      case INT:
1241 <        zcons_tol = (double)the_event->evt.asmt.rhs.ival;
1242 <        have_zcons_tol = 1;
1243 <        return 1;
1244 <        break;
1245 <        
1246 <      default:
1247 <        the_event->err_msg =
1248 <          strdup( "Error in parsing meta-data file!\n\tzcons_ol unrecognized.\n" );
1249 <        return 0;
1250 <        break;
1251 <      }
1252 <      break;
1253 <  
1254 <    case G_ZCONSFORCEPOLICY:
1255 <      switch( the_type ){
1256 <        
1257 <      case STRING:
1258 <        strcpy(zconsForcePolicy, the_event->evt.asmt.rhs.sval);
1259 <
1260 <        for(int i = 0; zconsForcePolicy[i] != '\0'; i++)
1261 <          {
1262 <            zconsForcePolicy[i] = toupper(zconsForcePolicy[i]);
1263 <          }
1264 <        have_zcons_force_policy = 1;
1265 <        return 1;
1266 <        break;
1267 <        
1268 <      case DOUBLE:
1269 <        the_event->err_msg =
1270 <          strdup( "Error in parsing meta-data file!\n\tzconsForcePolicy is not a double or int.\n" );
1271 <        return 0;
1272 <        break;
1273 <        
1274 <      case INT:
1275 <        the_event->err_msg =
1276 <          strdup( "Error in parsing meta-data file!\n\tzconsForcePolicy is not a double or int.\n" );
1277 <        return 0;
1278 <        break;
1279 <        
1280 <      default:
1281 <        the_event->err_msg =
1282 <          strdup( "Error in parsing meta-data file!\n\tzconsForcePolicy unrecognized.\n" );
1283 <        return 0;
1284 <        break;
1285 <      }
1286 <      break;
1287 <      
1288 <    case G_ZCONSGAP:
1289 <      switch( the_type ){
1290 <  
1291 <      case STRING:
1292 <        the_event->err_msg =
1293 <          strdup( "Error in parsing meta-data file!\n\tzcons_gap is not a double or int.\n" );
1294 <        return 0;
1295 <        break;
1296 <  
1297 <      case DOUBLE:
1298 <        zcons_gap = the_event->evt.asmt.rhs.dval;
1299 <        have_zcons_gap= 1;
1300 <        return 1;
1301 <        break;
1302 <  
1303 <      case INT:
1304 <        zcons_gap= (double)the_event->evt.asmt.rhs.ival;
1305 <        have_zcons_gap= 1;
1306 <        return 1;
1307 <        break;
1308 <  
1309 <      default:
1310 <        the_event->err_msg =
1311 <          strdup( "Error in parsing meta-data file!\n\tzcons_gap unrecognized.\n" );
1312 <        return 0;
1313 <        break;
1314 <      }
1315 <      break;
1316 <
1317 <    case G_ZCONSFIXTIME:
1318 <      switch( the_type ){
1319 <  
1320 <      case STRING:
1321 <        the_event->err_msg =
1322 <          strdup( "Error in parsing meta-data file!\n\tzcons_fixtime is not a double or int.\n" );
1323 <        return 0;
1324 <        break;
1325 <  
1326 <      case DOUBLE:
1327 <        zcons_fixtime= the_event->evt.asmt.rhs.dval;
1328 <        have_zcons_fixtime= 1;
1329 <        return 1;
1330 <        break;
1331 <  
1332 <      case INT:
1333 <        zcons_fixtime= (double)the_event->evt.asmt.rhs.ival;
1334 <        have_zcons_fixtime= 1;
1335 <        return 1;
1336 <        break;
1337 <  
1338 <      default:
1339 <        the_event->err_msg =
1340 <          strdup( "Error in parsing meta-data file!\n\tzcons_fixtime unrecognized.\n" );
1341 <        return 0;
1342 <        break;
1343 <      }
1344 <      break;
1345 <
1346 <    case G_ZCONSUSINGSMD:
1347 <      switch( the_type ){
1348 <  
1349 <      case STRING:
1350 <        the_event->err_msg =
1351 <          strdup( "Error in parsing meta-data file!\n\tzcons_fixtime is not an  int.\n" );
1352 <        return 0;
1353 <        break;
1354 <  
1355 <      case DOUBLE:
1356 <        the_event->err_msg =
1357 <          strdup( "Error in parsing meta-data file!\n\tzcons_fixtime is not an  int.\n" );
1358 <        return 0;
1359 <        break;
1360 <  
1361 <      case INT:
1362 <        zcons_using_smd= the_event->evt.asmt.rhs.ival;
1363 <        have_zcons_using_smd= 1;
1364 <        return 1;
1365 <        break;
1366 <  
1367 <      default:
1368 <        the_event->err_msg =
1369 <          strdup( "Error in parsing meta-data file!\n\tzcons_usingsmd unrecognized.\n" );
1370 <        return 0;
1371 <        break;
1372 <      }
1373 <      break;
1374 <      
1375 <    case G_MINIMIZER:
1376 <      switch( the_type ){
1377 <
1378 <      case STRING:
1379 <        strcpy(minimizer_name, the_event->evt.asmt.rhs.sval);
1380 <
1381 <        for(int i = 0; zconsForcePolicy[i] != '\0'; i++){
1382 <          zconsForcePolicy[i] = toupper(zconsForcePolicy[i]);
1383 <        }
1384 <        have_minimizer= 1;
1385 <        return 1;
1386 <        break;
1387 <        
1388 <      case DOUBLE:
1389 <        the_event->err_msg =
1390 <          strdup( "Error in parsing meta-data file!\n\tminimizer_name is not a double or int.\n" );
1391 <        return 0;
1392 <        break;
1393 <        
1394 <      case INT:
1395 <        the_event->err_msg =
1396 <          strdup( "Error in parsing meta-data file!\n\tminimizer_name is not a double or int.\n" );
1397 <        return 0;
1398 <        break;
1399 <        
1400 <      default:
1401 <        the_event->err_msg =
1402 <          strdup( "Error in parsing meta-data file!\n\tminimizer_name unrecognized.\n" );
1403 <        return 0;
1404 <        break;
1405 <      }
1406 <      break;
1407 <
1408 <    case G_MIN_MAXITER:
1409 <      switch( the_type ){
1410 <
1411 <      case STRING:
1412 <        the_event->err_msg =
1413 <          strdup( "Error in parsing meta-data file!\n\tminimizer_maxiteration is not a double or int.\n" );
1414 <        return 1;
1415 <        break;
1416 <        
1417 <      case DOUBLE:
1418 <        minimizer_maxiteration = (int)the_event->evt.asmt.rhs.dval;
1419 <        have_minimizer_maxiteration = 1;
1420 <        return 1;
1421 <        break;
1422 <        
1423 <      case INT:
1424 <        minimizer_maxiteration = the_event->evt.asmt.rhs.ival;
1425 <        have_minimizer_maxiteration = 1;
1426 <        return 1;
1427 <        break;
1428 <        
1429 <      default:
1430 <        the_event->err_msg =
1431 <          strdup( "Error in parsing meta-data file!\n\tminimizer_maxiteration unrecognized.\n" );
1432 <        return 0;
1433 <        break;
1434 <      }
1435 <      break;
1436 <      
1437 <    case G_MIN_WRITEFRQ:
1438 <      switch( the_type ){
1439 <
1440 <      case STRING:
1441 <        the_event->err_msg =
1442 <          strdup( "Error in parsing meta-data file!\n\tminimizer_writefrq is not an int.\n" );
1443 <        return 1;
1444 <        break;
1445 <        
1446 <      case DOUBLE:
1447 <        the_event->err_msg =
1448 <          strdup( "Error in parsing meta-data file!\n\tminimizer_writefrq is not an  int.\n" );
1449 <        return 1;
1450 <        break;
1451 <        
1452 <      case INT:
1453 <        minimizer_writefrq= the_event->evt.asmt.rhs.ival;
1454 <        have_minimizer_writefrq = 1;
1455 <        return 1;
1456 <        break;
1457 <        
1458 <      default:
1459 <        the_event->err_msg =
1460 <          strdup( "Error in parsing meta-data file!\n\tminimizer_writefrq unrecognized.\n" );
1461 <        return 0;
1462 <        break;
1463 <      }
1464 <      break;
1465 <
1466 <    case G_MIN_STEPSIZE:
1467 <      switch( the_type ){
1468 <
1469 <      case STRING:
1470 <        the_event->err_msg =
1471 <          strdup( "Error in parsing meta-data file!\n\tminimizer_resetfrq is not a double or int.\n" );
1472 <        return 1;
1473 <        break;
1474 <        
1475 <      case DOUBLE:
1476 <        minimizer_stepsize= the_event->evt.asmt.rhs.dval;
1477 <        have_minimizer_stepsize = 1;
1478 <        return 1;
1479 <        break;
1480 <        
1481 <      case INT:
1482 <        minimizer_stepsize= the_event->evt.asmt.rhs.ival;
1483 <        have_minimizer_stepsize = 1;
1484 <        return 1;
1485 <        break;
1486 <        
1487 <      default:
1488 <        the_event->err_msg =
1489 <          strdup( "Error in parsing meta-data file!\n\tminimizer_resetfrq unrecognized.\n" );
1490 <        return 0;
1491 <        break;
1492 <      }
1493 <      break;      
1494 <
1495 <    case G_MIN_FTOL:
1496 <      switch( the_type ){
1497 <
1498 <      case STRING:
1499 <        the_event->err_msg =
1500 <          strdup( "Error in parsing meta-data file!\n\tminimizer_ftol is not a double or int.\n" );
1501 <        return 1;
1502 <        break;
1503 <        
1504 <      case DOUBLE:
1505 <        minimizer_ftol= the_event->evt.asmt.rhs.dval;
1506 <        have_minimizer_ftol = 1;
1507 <        return 1;
1508 <        break;
1509 <        
1510 <      case INT:
1511 <        minimizer_ftol= the_event->evt.asmt.rhs.ival;
1512 <        have_minimizer_ftol = 1;
1513 <        return 1;
1514 <        break;
1515 <        
1516 <      default:
1517 <        the_event->err_msg =
1518 <          strdup( "Error in parsing meta-data file!\n\tminimizer_ftol unrecognized.\n" );
1519 <        return 0;
1520 <        break;
1521 <      }
1522 <      break;
1523 <      
1524 <    case G_MIN_GTOL:
1525 <      switch( the_type ){
1526 <
1527 <      case STRING:
1528 <        the_event->err_msg =
1529 <          strdup( "Error in parsing meta-data file!\n\tminimizer_gtol is not a double or int.\n" );
1530 <        return 1;
1531 <        break;
1532 <        
1533 <      case DOUBLE:
1534 <        minimizer_gtol= the_event->evt.asmt.rhs.dval;
1535 <        have_minimizer_gtol = 1;
1536 <        return 1;
1537 <        break;
1538 <        
1539 <      case INT:
1540 <        minimizer_gtol= the_event->evt.asmt.rhs.ival;
1541 <        have_minimizer_gtol = 1;
1542 <        return 1;
1543 <        break;
1544 <        
1545 <      default:
1546 <        the_event->err_msg =
1547 <          strdup( "Error in parsing meta-data file!\n\tminimizer_gtol unrecognized.\n" );
1548 <        return 0;
1549 <        break;
1550 <      }
1551 <      break;
1552 <      
1553 <    case G_MIN_LSMAXITER:
1554 <      switch( the_type ){
1555 <
1556 <      case STRING:
1557 <        the_event->err_msg =
1558 <          strdup( "Error in parsing meta-data file!\n\tminimizer_ls_maxiteration is not an int.\n" );
1559 <        return 1;
1560 <        break;
1561 <        
1562 <      case DOUBLE:
1563 <        the_event->err_msg =
1564 <          strdup( "Error in parsing meta-data file!\n\tminimizer_ls_maxiteration is not an int.\n" );
1565 <        return 1;
1566 <        break;
1567 <        
1568 <      case INT:
1569 <        minimizer_ls_maxiteration = the_event->evt.asmt.rhs.ival;
1570 <        have_minimizer_ls_maxiteration = 1;
1571 <        return 1;
1572 <        break;
1573 <        
1574 <      default:
1575 <        the_event->err_msg =
1576 <          strdup( "Error in parsing meta-data file!\n\tminimizer_ls_maxiteration unrecognized.\n" );
1577 <        return 0;
1578 <        break;
1579 <      }
1580 <      break;      
1581 <
1582 <    case G_MIN_LSTOL:
1583 <      switch( the_type ){
1584 <
1585 <      case STRING:
1586 <        the_event->err_msg =
1587 <          strdup( "Error in parsing meta-data file!\n\tminimizer_ls_tol is not a double or int.\n" );
1588 <        return 1;
1589 <        break;
1590 <        
1591 <      case DOUBLE:
1592 <        minimizer_ls_tol= the_event->evt.asmt.rhs.dval;
1593 <        have_minimizer_ls_tol = 1;
1594 <        return 1;
1595 <        break;
1596 <        
1597 <      case INT:
1598 <        minimizer_ls_tol= the_event->evt.asmt.rhs.ival;
1599 <        have_minimizer_ls_tol = 1;
1600 <        return 1;
1601 <        break;
1602 <        
1603 <      default:
1604 <        the_event->err_msg =
1605 <          strdup( "Error in parsing meta-data file!\n\tminimizer_ls_tol unrecognized.\n" );
1606 <        return 0;
1607 <        break;
1608 <      }
1609 <      break;
1610 <      
1611 <      // add more token cases here.
1612 <    case G_SEED:
1613 <      switch( the_type ){
1614 <        
1615 <      case STRING:
1616 <        the_event->err_msg =
1617 <          strdup( "Error in parsing meta-data file!\n\tseed is not a string.\n" );
1618 <        return 0;
1619 <        return 0;
1620 <        break;
1621 <        
1622 <      case DOUBLE:
1623 <        have_seed = 1;
1624 <        seed = (int)the_event->evt.asmt.rhs.dval;
1625 <        return 1;
1626 <        break;
1627 <        
1628 <      case INT:
1629 <        have_seed = 1;
1630 <        seed =  the_event->evt.asmt.rhs.ival ;
1631 <        return 1;
1632 <        break;
1633 <        
1634 <      default:
1635 <        the_event->err_msg =
1636 <          strdup( "Error in parsing meta-data file!\n\tseed unrecognized.\n" );
1637 <        return 0;
1638 <        break;
1639 <      }
1640 <      break;
1641 <
1642 <    case G_USE_SOLID_THERM_INT:
1643 <      if( the_type == STRING ){
1644 <        
1645 <        if( !strcasecmp( "true", the_event->evt.asmt.rhs.sval )) useSolidThermInt = 1;
1646 <        else if( !strcasecmp( "false", the_event->evt.asmt.rhs.sval )) useSolidThermInt = 0;
1647 <        else{
1648 <          the_event->err_msg =
1649 <            strdup( "Error in parsing meta-data file!\n\tuseSolidThermInt was not \"true\" or \"false\".\n" );
1650 <          return 0;
1651 <        }
1652 <        return 1;
1653 <      }
1654 <      
1655 <      the_event->err_msg =
1656 <        strdup( "Error in parsing meta-data file!\n\tuseSolidThermInt was not \"true\" or \"false\".\n" );
1657 <      return 0;
1658 <      break;
1659 <
1660 <    case G_USE_LIQUID_THERM_INT:
1661 <      if( the_type == STRING ){
1662 <        
1663 <        if( !strcasecmp( "true", the_event->evt.asmt.rhs.sval )) useLiquidThermInt = 1;
1664 <        else if( !strcasecmp( "false", the_event->evt.asmt.rhs.sval )) useLiquidThermInt = 0;
1665 <        else{
1666 <          the_event->err_msg =
1667 <            strdup( "Error in parsing meta-data file!\n\tuseLiquidThermInt was not \"true\" or \"false\".\n" );
1668 <          return 0;
1669 <        }
1670 <        return 1;
1671 <      }
1672 <      
1673 <      the_event->err_msg =
1674 <        strdup( "Error in parsing meta-data file!\n\tuseLiquidThermInt was not \"true\" or \"false\".\n" );
1675 <      return 0;
1676 <      break;
1677 <
1678 <    case G_THERM_INT_LAMBDA:
1679 <      switch( the_type ){
1680 <        
1681 <      case STRING:
1682 <        the_event->err_msg =
1683 <          strdup( "Error in parsing meta-data file!\n\tthermodynamicIntegrationLambda is not a double or int.\n" );
1684 <        return 1;
1685 <        break;
1686 <        
1687 <      case DOUBLE:
1688 <        thermodynamic_integration_lambda = the_event->evt.asmt.rhs.dval;
1689 <        have_thermodynamic_integration_lambda = 1;
1690 <        return 1;
1691 <        break;
1692 <        
1693 <      case INT:
1694 <        thermodynamic_integration_lambda = (double)the_event->evt.asmt.rhs.dval;
1695 <        have_thermodynamic_integration_lambda = 1;
1696 <        return 1;
1697 <        break;
1698 <        
1699 <      default:
1700 <        the_event->err_msg =
1701 <          strdup( "Error in parsing meta-data file!\n\tthermodynamicIntegrationLambda unrecognized.\n" );
1702 <        return 0;
1703 <        break;
1704 <      }
1705 <      break;      
1706 <
1707 <    case G_THERM_INT_K:
1708 <      switch( the_type ){
1709 <        
1710 <      case STRING:
1711 <        the_event->err_msg =
1712 <          strdup( "Error in parsing meta-data file!\n\tthermodynamicIntegrationK is not a double or int.\n" );
1713 <        return 1;
1714 <        break;
1715 <        
1716 <      case DOUBLE:
1717 <        thermodynamic_integration_k = the_event->evt.asmt.rhs.dval;
1718 <        have_thermodynamic_integration_k = 1;
1719 <        return 1;
1720 <        break;
1721 <        
1722 <      case INT:
1723 <        thermodynamic_integration_k = (double)the_event->evt.asmt.rhs.dval;
1724 <        have_thermodynamic_integration_k = 1;
1725 <        return 1;
1726 <        break;
1727 <        
1728 <      default:
1729 <        the_event->err_msg =
1730 <          strdup( "Error in parsing meta-data file!\n\tthermodynamicIntegrationK unrecognized.\n" );
1731 <        return 0;
1732 <        break;
1733 <      }
1734 <      break;  
1735 <  
1736 <    case G_FORCEFIELD_VARIANT:
1737 <      if( the_type == STRING ){
1738 <        strcpy( forcefield_variant, the_event->evt.asmt.rhs.sval );
1739 <        have_forcefield_variant = 1;
1740 <        return 1;
1741 <      }
1742 <      
1743 <      the_event->err_msg =
1744 <        strdup( "Error in parsing meta-data file!\n\tforceFieldVariant was not a string assignment.\n" );
1745 <      return 0;
1746 <      break;      
1747 <      // add more token cases here.      
1748 <
1749 <    case G_FORCEFIELD_FILENAME:
1750 <      if( the_type == STRING ){
1751 <        strcpy( forcefield_filename, the_event->evt.asmt.rhs.sval );
1752 <        have_forcefield_filename = 1;
1753 <        return 1;
1754 <      }
1755 <      
1756 <      the_event->err_msg =
1757 <        strdup( "Error in parsing meta-data file!\n\tforceFieldFileName was not a string assignment.\n" );
1758 <      return 0;
1759 <      break;      
1760 <
1761 <    case G_THERM_INT_DIST_SPRING:
1762 <      switch( the_type ){
1763 <        
1764 <      case STRING:
1765 <        the_event->err_msg =
1766 <          strdup( "Error in parsing meta-data file!\n\tthermIntDistSpringConst is not a double or int.\n" );
1767 <        return 1;
1768 <        break;
1769 <        
1770 <      case DOUBLE:
1771 <        therm_int_dist_spring = the_event->evt.asmt.rhs.dval;
1772 <        have_dist_spring_constant = 1;
1773 <        return 1;
1774 <        break;
1775 <        
1776 <      case INT:
1777 <        therm_int_dist_spring = (double)the_event->evt.asmt.rhs.dval;
1778 <        have_dist_spring_constant = 1;
1779 <        return 1;
1780 <        break;
1781 <        
1782 <      default:
1783 <        the_event->err_msg =
1784 <          strdup( "Error in parsing meta-data file!\n\tthermIntDistSpringConst unrecognized.\n" );
1785 <        return 0;
1786 <        break;
1787 <      }
1788 <      break;  
1789 <
1790 <    case G_THERM_INT_THETA_SPRING:
1791 <      switch( the_type ){
1792 <        
1793 <      case STRING:
1794 <        the_event->err_msg =
1795 <          strdup( "Error in parsing meta-data file!\n\tthermIntThetaSpringConst is not a double or int.\n" );
1796 <        return 1;
1797 <        break;
1798 <        
1799 <      case DOUBLE:
1800 <        therm_int_theta_spring = the_event->evt.asmt.rhs.dval;
1801 <        have_theta_spring_constant = 1;
1802 <        return 1;
1803 <        break;
1804 <        
1805 <      case INT:
1806 <        therm_int_theta_spring = (double)the_event->evt.asmt.rhs.dval;
1807 <        have_theta_spring_constant = 1;
1808 <        return 1;
1809 <        break;
1810 <        
1811 <      default:
1812 <        the_event->err_msg =
1813 <          strdup( "Error in parsing meta-data file!\n\tthermIntThetaSpringConst unrecognized.\n" );
1814 <        return 0;
1815 <        break;
1816 <      }
1817 <      break;
1818 <
1819 <    case G_THERM_INT_OMEGA_SPRING:
1820 <      switch( the_type ){
1821 <        
1822 <      case STRING:
1823 <        the_event->err_msg =
1824 <          strdup( "Error in parsing meta-data file!\n\tthermIntOmegaSpringConst is not a double or int.\n" );
1825 <        return 1;
1826 <        break;
1827 <        
1828 <      case DOUBLE:
1829 <        therm_int_omega_spring = the_event->evt.asmt.rhs.dval;
1830 <        have_omega_spring_constant = 1;
1831 <        return 1;
1832 <        break;
1833 <        
1834 <      case INT:
1835 <        therm_int_omega_spring = (double)the_event->evt.asmt.rhs.dval;
1836 <        have_omega_spring_constant = 1;
1837 <        return 1;
1838 <        break;
1839 <        
1840 <      default:
1841 <        the_event->err_msg =
1842 <          strdup( "Error in parsing meta-data file!\n\tthermIntOmegaSpringConst unrecognized.\n" );
1843 <        return 0;
1844 <        break;
1845 <      }
1846 <      break;  
1847 <
1848 <    case G_SURFACETENSION:
1849 <        switch( the_type ){
1850 <      
1851 <        case STRING:
1852 <          the_event->err_msg =
1853 <            strdup( "Error in parsing meta-data file!\n\tsurfaceTension is not a double or int.\n" );
1854 <          return 1;
1855 <          break;
1856 <          
1857 <        case DOUBLE:
1858 <          surface_tension= the_event->evt.asmt.rhs.dval;
1859 <          have_surface_tension = 1;
1860 <          return 1;
1861 <          break;
1862 <          
1863 <        case INT:
1864 <          surface_tension = (double)the_event->evt.asmt.rhs.dval;
1865 <          have_surface_tension = 1;
1866 <          return 1;
1867 <          break;
1868 <          
1869 <        default:
1870 <          the_event->err_msg =
1871 <            strdup( "Error in parsing meta-data file!\n\tsurfaceTension unrecognized.\n" );
1872 <          return 0;
1873 <          break;
1874 <        }
1875 <        break;
1876 <
1877 <    case G_PRINTPREESURETENSOR:
1878 <          if( the_type == STRING ){
1879 <        
1880 <        if( !strcasecmp( "true", the_event->evt.asmt.rhs.sval )) {
1881 <            have_print_pressure_tensor= 1;
1882 <            print_pressure_tensor = 1;
1883 <        } else if( !strcasecmp( "false", the_event->evt.asmt.rhs.sval )) {
1884 <            have_print_pressure_tensor= 1;
1885 <            print_pressure_tensor = 0;
1886 <        } else{
1887 <          the_event->err_msg =
1888 <            strdup( "Error in parsing meta-data file!\n\tprintPressureTensor was not \"true\" or \"false\".\n" );
1889 <          return 0;
1890 <        }
1891 <        return 1;
1892 <          }
1893 <          
1894 <          the_event->err_msg =
1895 <        strdup( "Error in parsing meta-data file!\n\tprintPressureTensor was not \"true\" or \"false\".\n" );
1896 <          return 0;
1897 <          break;
1898 <
1899 <        
1900 <
1901 <      
1902 <      // add more token cases here.      
321 >  ParamMap::iterator i;
322 >  for (i = parameters_.begin(); i != parameters_.end(); ++i) {
323 >    if (!i->second->isOptional() && i->second->empty()) {
324 >        err +=  i->second->getKeyword() + "\n";
325      }
326    }
1905  
1906  switch( the_type ){
1907    
1908  case STRING:
1909    sprintf( err,
1910             "\tUnrecognized assignment:\n"
1911             "\t\t-> %s = %s\n",
1912             lhs, the_event->evt.asmt.rhs.sval );
1913    break;
1914    
1915  case DOUBLE:
1916    sprintf( err,
1917             "\tUnrecognized assignment:\n"
1918             "\t\t-> %s = %lf\n",
1919             lhs, the_event->evt.asmt.rhs.dval );
1920    break;
1921    
1922  case INT:
1923    sprintf( err,
1924             "\tUnrecognized assignment:\n"
1925             "\t\t-> %s = %d\n",
1926             lhs, the_event->evt.asmt.rhs.ival );
1927    break;
1928    
1929  default:
1930    sprintf( err,
1931             "\tUnrecognized assignment:\n"
1932             "\t\t-> %s = ?\n",
1933             lhs );
1934    break;
1935  }
1936  
1937  the_event->err_msg = strdup( err );
1938  return 0;
1939 }
327  
328 < char* Globals::checkMe( void ){
328 >  //@todo memory leak
329 >  if( have_err )
330 >    return strdup( err.c_str() );
331    
332 <  char err[300];
1944 <  short int have_err = 0;
332 >  return NULL;
333  
1946  strcpy( err, "The following required keywords are missing:\n" );
1947  
1948  if( !have_force_field ){
1949    strcat( err, "\t\t->forceField\n" );
1950    have_err= 1;
1951  }
334  
1953  if( !have_n_components ){
1954    strcat( err, "\t\t->nComponents\n" );
1955    have_err= 1;
1956  }
1957
1958  
1959  if ( !have_ensemble ) {
1960    // I'm not doing MD:
1961    if ( !have_minimizer ) {
1962      // I'm not doing MD or minimization:
1963      strcat( err, "\t\t->either ensemble or minimizer must be set!\n" );
1964      have_err = 1;      
1965    } else {
1966      // I'm a minimizer:
1967    }
1968  } else {
1969    // I *am* doing MD:
1970    if( !have_dt ){
1971      strcat( err, "\t\t->dt (timestep in fs)\n" );
1972      have_err= 1;
1973    }
1974    if( !have_run_time ){
1975      strcat( err, "\t\t->runTime (total run time in fs)\n" );
1976      have_err= 1;
1977    }    
1978  }
1979      
1980  if( have_err ) return strdup( err );
1981  
1982  return NULL;
335   }
336  
337   int Globals::globalEnd( event* the_event ){
# Line 1989 | Line 341 | int Globals::globalEnd( event* the_event ){
341  
342    return 1;
343   }
1992

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines