--- trunk/src/io/Globals.cpp 2005/11/11 15:22:11 726 +++ trunk/src/io/Globals.cpp 2005/11/21 22:59:36 765 @@ -52,21 +52,8 @@ #include "io/ParamConstraint.hpp" -#define DefineParameter(NAME,KEYWORD) \ - NAME.setKeyword(KEYWORD); \ - parameters_.insert(std::make_pair(std::string(KEYWORD), &NAME)); +using namespace oopse; -#define DefineOptionalParameter(NAME,KEYWORD) \ - NAME.setKeyword(KEYWORD); NAME.setOptional(true); \ - parameters_.insert(std::make_pair(std::string(KEYWORD), &NAME)); - -#define DefineOptionalParameterWithDefaultValue(NAME,KEYWORD, DEFAULTVALUE) \ - NAME.setKeyword(KEYWORD); NAME.setOptional(true); NAME.setDefaultValue(DEFAULTVALUE); \ - parameters_.insert(std::make_pair(std::string(KEYWORD), &NAME)); - -#define CheckParameter(NAME, CONSTRAINT) \ - if (!NAME.empty()) { if (!(CONSTRAINT)(NAME.getData())) { sprintf(painCave.errMsg,"Error in checking %s : should be %s\n",NAME.getKeyword().c_str(),(CONSTRAINT).getConstraintDescription().c_str()); painCave.isFatal = 1; painCave.severity = OOPSE_ERROR; simError();} } - Globals::Globals(){ DefineParameter(ForceField, "forceField") @@ -140,6 +127,20 @@ Globals::Globals(){ DefineOptionalParameterWithDefaultValue(SkinThickness, "skinThickness", 1.0); DefineOptionalParameterWithDefaultValue(StatFileFormat, "statFileFormat", "TIME|TOTAL_ENERGY|POTENTIAL_ENERGY|KINETIC_ENERGY|TEMPERATURE|PRESSURE|VOLUME|CONSERVED_QUANTITY"); + +} + +Globals::~Globals(){ + int i; + if( components != NULL ){ + for( i=0; i< getNComponents(); i++ ) delete components[i]; + delete[] components; + } + + if( zConstraints != NULL ){ + for( i=0; i< getNZconstraints(); i++ ) delete zConstraints[i]; + delete[] zConstraints; + } } @@ -341,11 +342,7 @@ char* Globals::checkMe( void ){ CheckParameter(ForceField, isNotEmpty()); CheckParameter(NComponents,isPositive()); CheckParameter(TargetTemp, isPositive()); - CheckParameter(Ensemble, isEqualIgnoreCase(std::string("NVE")) || - isEqualIgnoreCase(std::string("NVT")) || - isEqualIgnoreCase(std::string("NPTi")) || - isEqualIgnoreCase(std::string("NPTf")) || - isEqualIgnoreCase(std::string("NPTxyz")) ); + CheckParameter(Ensemble, isEqualIgnoreCase(std::string("NVE")) || isEqualIgnoreCase(std::string("NVT")) || isEqualIgnoreCase(std::string("NPTi")) || isEqualIgnoreCase(std::string("NPTf")) || isEqualIgnoreCase(std::string("NPTxyz")) ); CheckParameter(Dt, isPositive()); CheckParameter(RunTime, isPositive()); CheckParameter(InitialConfig, isNotEmpty()); @@ -371,8 +368,7 @@ char* Globals::checkMe( void ){ CheckParameter(ZconsTol, isPositive()); //CheckParameter(ZconsForcePolicy,); CheckParameter(Seed, isPositive()); - CheckParameter(Minimizer, isEqualIgnoreCase(std::string("SD")) || - isEqualIgnoreCase(std::string("CG"))); + CheckParameter(Minimizer, isEqualIgnoreCase(std::string("SD")) || isEqualIgnoreCase(std::string("CG"))); CheckParameter(MinimizerMaxIter, isPositive()); CheckParameter(MinimizerWriteFrq, isPositive()); CheckParameter(MinimizerStepSize, isPositive()); @@ -390,20 +386,10 @@ char* Globals::checkMe( void ){ CheckParameter(ThermIntThetaSpringConst, isPositive()); CheckParameter(ThermIntOmegaSpringConst, isPositive()); CheckParameter(SurfaceTension, isPositive()); - CheckParameter(ElectrostaticSummationMethod, - isEqualIgnoreCase(std::string("NONE")) || - isEqualIgnoreCase(std::string("SHIFTED_POTENTIAL")) || - isEqualIgnoreCase(std::string("SHIFTED_FORCE")) || - isEqualIgnoreCase(std::string("REACTION_FIELD"))); - CheckParameter(ElectrostaticScreeningMethod, - isEqualIgnoreCase(std::string("UNDAMPED")) || - isEqualIgnoreCase(std::string("DAMPED"))); - CheckParameter(CutoffPolicy, isEqualIgnoreCase(std::string("MIX")) || - isEqualIgnoreCase(std::string("MAX")) || - isEqualIgnoreCase(std::string("TRADITIONAL"))); - CheckParameter(SwitchingFunctionType, - isEqualIgnoreCase(std::string("CUBIC")) || - isEqualIgnoreCase(std::string("FIFTH_ORDER_POLYNOMIAL"))); + CheckParameter(ElectrostaticSummationMethod, isEqualIgnoreCase(std::string("NONE")) || isEqualIgnoreCase(std::string("SHIFTED_POTENTIAL")) || isEqualIgnoreCase(std::string("SHIFTED_FORCE")) || isEqualIgnoreCase(std::string("REACTION_FIELD"))); + CheckParameter(ElectrostaticScreeningMethod, isEqualIgnoreCase(std::string("UNDAMPED")) || isEqualIgnoreCase(std::string("DAMPED"))); + CheckParameter(CutoffPolicy, isEqualIgnoreCase(std::string("MIX")) || isEqualIgnoreCase(std::string("MAX")) || isEqualIgnoreCase(std::string("TRADITIONAL"))); + CheckParameter(SwitchingFunctionType, isEqualIgnoreCase(std::string("CUBIC")) || isEqualIgnoreCase(std::string("FIFTH_ORDER_POLYNOMIAL"))); //CheckParameter(StatFileFormat,); //CheckParameter(MixingRule,); CheckParameter(OrthoBoxTolerance, isPositive());