ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/src/applications/openmd/openmd.cpp
(Generate patch)

Comparing branches/development/src/applications/openmd/openmd.cpp (file contents):
Revision 1695 by gezelter, Fri Mar 16 15:15:46 2012 UTC vs.
Revision 1747 by gezelter, Wed Jun 6 15:52:25 2012 UTC

# Line 38 | Line 38
38   * [3]  Sun, Lin & Gezelter, J. Chem. Phys. 128, 24107 (2008).          
39   * [4]  Kuang & Gezelter,  J. Chem. Phys. 133, 164101 (2010).
40   * [5]  Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011).
41 + * [6]  Kuang & Gezelter, Mol. Phys., 110, 691-701 (2012).
42   */
43  
44   #ifdef IS_MPI
# Line 54 | Line 55
55   #include "restraints/RestraintForceManager.hpp"
56   #include "integrators/IntegratorFactory.hpp"
57   #include "integrators/Integrator.hpp"
58 < #include "minimizers/MinimizerFactory.hpp"
59 < #include "minimizers/Minimizer.hpp"
58 > #include "optimization/OptimizationFactory.hpp"
59 > #include "optimization/Method.hpp"
60 > #include "optimization/Constraint.hpp"
61 > #include "optimization/Problem.hpp"
62 > #include "optimization/PotentialEnergyObjectiveFunction.hpp"
63   #include "restraints/ThermoIntegrationForceManager.hpp"
64  
65   using namespace OpenMD;
66 + using namespace QuantLib;
67  
68   int main(int argc,char* argv[]){
69    
# Line 111 | Line 116 | int main(int argc,char* argv[]){
116        "  | [3] Sun, Lin & Gezelter, J. Chem. Phys. 128, 24107 (2008).               |\n"<<
117        "  | [4] Kuang & Gezelter,  J. Chem. Phys. 133, 164101 (2010).                |\n"<<
118        "  | [5] Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011). |\n"<<
119 <      "  | [6] Kuang & Gezelter, Mol. Phys., in press (2012).                       |\n"<<
119 >      "  | [6] Kuang & Gezelter, Mol. Phys., 110, 691-701 (2012).                   |\n"<<
120        "  +--------------------------------------------------------------------------+\n"<<
121        "\n";
122      
# Line 135 | Line 140 | int main(int argc,char* argv[]){
140    SimInfo* info = creator.createSim(argv[1]);
141  
142    Globals* simParams = info->getSimParams();
143 +  MinimizerParameters* miniPars = simParams->getMinimizerParameters();
144  
145 <  if (simParams->haveMinimizer() && simParams->haveEnsemble()) {
146 <    sprintf(painCave.errMsg, "Minimizer keyword and Ensemble keyword can not exist together\n");
145 >  if (miniPars->getUseMinimizer() && simParams->haveEnsemble()) {
146 >    sprintf(painCave.errMsg, "Ensemble keyword can not co-exist with useMinimizer = \"true\" in the minimizer block\n");
147      painCave.isFatal = 1;
148      simError();        
149    }
144  
150  
151 <  if (simParams->haveMinimizer()) {
151 >  if (miniPars->getUseMinimizer()) {
152      //create minimizer
153 <    Minimizer* myMinimizer = MinimizerFactory::getInstance()->createMinimizer(toUpperCopy(simParams->getMinimizer()), info);
153 >    OptimizationMethod* myMinimizer =OptimizationFactory::getInstance()->createOptimization(toUpperCopy(miniPars->getMethod()), info);
154  
155      if (myMinimizer == NULL) {
156 <      sprintf(painCave.errMsg, "Minimizer Factory can not create %s Minimizer\n",
157 <              simParams->getMinimizer().c_str());
156 >      sprintf(painCave.errMsg, "Optimization Factory can not create %s OptimizationMethod\n",
157 >              miniPars->getMethod().c_str());
158        painCave.isFatal = 1;
159        simError();
160      }
161  
162 <    myMinimizer->minimize();
162 >    ForceManager* fman = new ForceManager(info);      
163 >    fman->initialize();
164 >
165 >    PotentialEnergyObjectiveFunction potObjf(info, fman);
166 >    DumpStatusFunction dsf(info);
167 >    DynamicVector<RealType> initCoords = potObjf.setInitialCoords();
168 >    Problem problem(potObjf, *(new NoConstraint()), dsf, initCoords);
169 >
170 >
171 >    int maxIter = miniPars->getMaxIterations();
172 >    int mssIter = miniPars->getMaxStationaryStateIterations();
173 >    RealType rEps = miniPars->getRootEpsilon();
174 >    RealType fEps = miniPars->getFunctionEpsilon();
175 >    RealType gnEps = miniPars->getGradientNormEpsilon();
176 >
177 >    EndCriteria endCriteria(maxIter, mssIter, rEps, fEps, gnEps);
178 >
179 >    myMinimizer->minimize(problem, endCriteria);
180 >
181      delete myMinimizer;
182    } else if (simParams->haveEnsemble()) {
183      //create Integrator

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines