--- trunk/OOPSE/libmdtools/SimSetup.cpp 2004/02/05 22:54:57 1030 +++ trunk/OOPSE/libmdtools/SimSetup.cpp 2004/02/06 18:58:06 1031 @@ -9,6 +9,7 @@ #include "parse_me.h" #include "Integrator.hpp" #include "simError.h" +#include "ConjugateMinimizer.hpp" #ifdef IS_MPI #include "mpiBASS.h" @@ -145,10 +146,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 +845,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(); @@ -1705,4 +1709,78 @@ void SimSetup::setupZConstraint(SimInfo& theInfo){ //push data into siminfo, therefore, we can retrieve later theInfo.addProperty(zconsParaData); +} + +void SimSetup::makeMinimizer(){ +/* + OOPSEMinimizerBase* myOOPSEMinimizerBase; + ObjFunctor1 * objFunc; + OutputFunctor* outputFunc; + ConcreteNLModel1* nlp; + MinimizerParameterSet* param; + ConjugateMinimizerBase* minimizer; + int dim; + + 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(); + + 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->haveMinResetFrq()){ + param->setResetFrq(globals->getMinResetFrq()); + } + + if (globals->haveMinLSMaxIter()){ + param->setLineSearchMaxIteration(globals->getMinLSMaxIter()); + } + + if (globals->haveMinLSTol()){ + param->setLineSearchTol(globals->getMinLSTol()); + } + + //creat the minimizer + minimizer = new PRCGMinimizer(nlp, param); + minimizer->setLineSearchStrategy(nlp, GoldenSection); + minimizer->setOutputFunctor(outputFunc); + + //store the minimizer into simInfo + info[i].the_minimizer = minimizer; + info[i].has_minimizer = true; + } +*/ }