--- trunk/OOPSE/libmdtools/SimSetup.cpp 2004/02/06 18:58:06 1031 +++ trunk/OOPSE/libmdtools/SimSetup.cpp 2004/03/16 19:22:56 1091 @@ -9,7 +9,8 @@ #include "parse_me.h" #include "Integrator.hpp" #include "simError.h" -#include "ConjugateMinimizer.hpp" +//#include "ConjugateMinimizer.hpp" +#include "OOPSEMinimizer.hpp" #ifdef IS_MPI #include "mpiBASS.h" @@ -28,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; @@ -1663,6 +1664,25 @@ void SimSetup::setupZConstraint(SimInfo& theInfo){ theInfo.addProperty(zconsForcePolicy); + //set zcons gap + DoubleData* zconsGap = new DoubleData(); + zconsGap->setID(ZCONSGAP_ID); + + if (globals->haveZConsGap()){ + zconsGap->setData(globals->getZconsGap()); + theInfo.addProperty(zconsGap); + } + + //set zcons fixtime + DoubleData* zconsFixtime = new DoubleData(); + zconsFixtime->setID(ZCONSFIXTIME_ID); + + if (globals->haveZConsFixTime()){ + zconsFixtime->setData(globals->getZconsFixtime()); + theInfo.addProperty(zconsFixtime); + } + + //Determine the name of ouput file and add it into SimInfo's property list //Be careful, do not use inFileName, since it is a pointer which //point to a string at master node, and slave nodes do not contain that string @@ -1712,31 +1732,13 @@ void SimSetup::makeMinimizer(){ } void SimSetup::makeMinimizer(){ -/* - OOPSEMinimizerBase* myOOPSEMinimizerBase; - ObjFunctor1 * objFunc; - OutputFunctor* outputFunc; - ConcreteNLModel1* nlp; + + OOPSEMinimizer* myOOPSEMinimizer; MinimizerParameterSet* param; - ConjugateMinimizerBase* minimizer; - int dim; + char minimizerName[100]; for (int i = 0; i < nInfo; i++){ - //creat - myOOPSEMinimizerBase = new OOPSEMinimizerBase(&(info[i]), the_ff); - - //creat the object functor; - objFunc = (ObjFunctor1*) new ClassMemObjFunctor1 - (myOOPSEMinimizerBase, &OOPSEMinimizerBase::calcGradient); - - //creat output functor; - outputFunc = new ClassMemOutputFunctor - (myOOPSEMinimizerBase, &OOPSEMinimizerBase::output); - - //creat nonlinear model - dim = myOOPSEMinimizerBase->getDim(); - nlp = new ConcreteNLModel1(dim, objFunc); - + //prepare parameter set for minimizer param = new MinimizerParameterSet(); param->setDefaultParameter(); @@ -1761,8 +1763,8 @@ void SimSetup::makeMinimizer(){ param->setWriteFrq(globals->getMinWriteFrq()); } - if (globals->haveMinResetFrq()){ - param->setResetFrq(globals->getMinResetFrq()); + if (globals->haveMinStepSize()){ + param->setStepSize(globals->getMinStepSize()); } if (globals->haveMinLSMaxIter()){ @@ -1772,15 +1774,29 @@ void SimSetup::makeMinimizer(){ if (globals->haveMinLSTol()){ param->setLineSearchTol(globals->getMinLSTol()); } - - //creat the minimizer - minimizer = new PRCGMinimizer(nlp, param); - minimizer->setLineSearchStrategy(nlp, GoldenSection); - minimizer->setOutputFunctor(outputFunc); + strcpy(minimizerName, 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{ + sprintf(painCave.errMsg, + "SimSetup error: Unrecognized Minimizer, use Conjugate Gradient \n"); + painCave.isFatal = 0; + simError(); + + myOOPSEMinimizer = new PRCGMinimizer(&(info[i]), the_ff, param); + } + info[i].the_integrator = myOOPSEMinimizer; + //store the minimizer into simInfo - info[i].the_minimizer = minimizer; + info[i].the_minimizer = myOOPSEMinimizer; info[i].has_minimizer = true; } -*/ + }