--- trunk/OOPSE/libmdtools/SimSetup.cpp 2004/01/30 15:01:09 999 +++ trunk/OOPSE/libmdtools/SimSetup.cpp 2004/02/24 15:44:45 1064 @@ -9,6 +9,8 @@ #include "parse_me.h" #include "Integrator.hpp" #include "simError.h" +//#include "ConjugateMinimizer.hpp" +#include "OOPSEMinimizer.hpp" #ifdef IS_MPI #include "mpiBASS.h" @@ -27,7 +29,7 @@ #define FF_DUFF 0 #define FF_LJ 1 #define FF_EAM 2 -#define FF_H2O 3 +#define FF_H2O 3 using namespace std; @@ -145,10 +147,13 @@ void SimSetup::createSim(void){ makeOutNames(); - // make the integrator - - makeIntegrator(); - + if (globals->haveMinimizer()) + // make minimizer + makeMinimizer(); + else + // make the integrator + makeIntegrator(); + #ifdef IS_MPI mpiSim->mpiRefresh(); #endif @@ -841,7 +846,7 @@ void SimSetup::gatherInfo(void){ for (int i = 0; i < nInfo; i++){ info[i].setSeed(seedValue); } - + #ifdef IS_MPI strcpy(checkPointMsg, "Successfully gathered all information from Bass\n"); MPIcheckPoint(); @@ -1706,3 +1711,67 @@ void SimSetup::setupZConstraint(SimInfo& theInfo){ //push data into siminfo, therefore, we can retrieve later theInfo.addProperty(zconsParaData); } + +void SimSetup::makeMinimizer(){ + + OOPSEMinimizer* myOOPSEMinimizer; + MinimizerParameterSet* param; + char minimizerName[100]; + + for (int i = 0; i < nInfo; i++){ + + //prepare parameter set for minimizer + param = new MinimizerParameterSet(); + param->setDefaultParameter(); + + if (globals->haveMinimizer()){ + param->setFTol(globals->getMinFTol()); + } + + if (globals->haveMinGTol()){ + param->setGTol(globals->getMinGTol()); + } + + if (globals->haveMinMaxIter()){ + param->setMaxIteration(globals->getMinMaxIter()); + } + + if (globals->haveMinWriteFrq()){ + param->setMaxIteration(globals->getMinMaxIter()); + } + + if (globals->haveMinWriteFrq()){ + param->setWriteFrq(globals->getMinWriteFrq()); + } + + if (globals->haveMinStepSize()){ + param->setStepSize(globals->getMinStepSize()); + } + + if (globals->haveMinLSMaxIter()){ + param->setLineSearchMaxIteration(globals->getMinLSMaxIter()); + } + + if (globals->haveMinLSTol()){ + param->setLineSearchTol(globals->getMinLSTol()); + } + + strcpy(ensemble, globals->getMinimizer()); + + if (!strcasecmp(minimizerName, "CG")){ + myOOPSEMinimizer = new PRCGMinimizer(&(info[i]), the_ff, param); + } + else if (!strcasecmp(minimizerName, "SD")){ + //myOOPSEMinimizer = MinimizerFactory.creatMinimizer("", &(info[i]), the_ff, param); + myOOPSEMinimizer = new SDMinimizer(&(info[i]), the_ff, param); + } + else{ + info[i].the_integrator = myOOPSEMinimizer; + } + + //store the minimizer into simInfo + info[i].the_minimizer = myOOPSEMinimizer; + info[i].has_minimizer = true; + } + +}