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

Comparing trunk/src/applications/openmd/openmd.cpp (file contents):
Revision 1427 by gezelter, Tue Mar 30 15:21:22 2010 UTC vs.
Revision 1796 by gezelter, Mon Sep 10 18:38:44 2012 UTC

# Line 35 | Line 35
35   *                                                                      
36   * [1]  Meineke, et al., J. Comp. Chem. 26, 252-271 (2005).            
37   * [2]  Fennell & Gezelter, J. Chem. Phys. 124, 234104 (2006).          
38 < * [3]  Sun, Lin & Gezelter, J. Chem. Phys. 128, 234107 (2008).          
39 < * [4]  Vardeman & Gezelter, in progress (2010).                        
40 < * $Revision$
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 45 | Line 46
46   #endif
47  
48   #include <fstream>
49 + #include <iostream>
50 + #include <locale>
51   #include "utils/simError.h"
52   #include "utils/CaseConversion.hpp"
53   #include "brains/Register.hpp"
# Line 54 | Line 57
57   #include "restraints/RestraintForceManager.hpp"
58   #include "integrators/IntegratorFactory.hpp"
59   #include "integrators/Integrator.hpp"
60 < #include "minimizers/MinimizerFactory.hpp"
61 < #include "minimizers/Minimizer.hpp"
60 > #include "optimization/OptimizationFactory.hpp"
61 > #include "optimization/Method.hpp"
62 > #include "optimization/Constraint.hpp"
63 > #include "optimization/Problem.hpp"
64 > #include "optimization/PotentialEnergyObjectiveFunction.hpp"
65   #include "restraints/ThermoIntegrationForceManager.hpp"
66  
67   using namespace OpenMD;
68 + using namespace QuantLib;
69  
70 <
64 < int main(int argc,char* argv[]){
70 > int main(int argc, char* argv[]){
71    
72    // first things first, all of the initializations
73  
74   #ifdef IS_MPI
75 <  MPI_Init( &argc, &argv ); // the MPI communicators
75 >  MPI::Init( argc, argv ); // the MPI communicators
76   #endif
77    
78    initSimError();           // the error handler
79 <  srand48( 1337 );          // the random number generator.
80 <  
79 >  //srand48( 1337 );          // the random number generator.
80 >
81 >  std::string svnrev;
82 >  //convert a macro from compiler to a string in c++
83 >  STR_DEFINE(svnrev, SVN_REV );
84 >
85 >  std::string revision;
86 >
87 >  if (!svnrev.empty()) {
88 >     revision.assign("  Revision: " + svnrev);
89 >  }
90 >
91 >  revision.resize(19,' ');
92 >
93   #ifdef IS_MPI
94    if( worldRank == 0 ){
95   #endif
96      std::cerr <<
97 <      "  +-----------------------------------------------------------------------+\n"<<
98 <      "  |    ____                    __  ___ ____                               |\n"<<
99 <      "  |   / __ \\____  ___  ____   /  |/  // __ \\  The Open Molecular Dynamics |\n"<<
100 <      "  |  / / / / __ \\/ _ \\/ __ \\ / /|_/ // / / /  Engine (formerly OOPSE).    |\n"<<
101 <      "  | / /_/ / /_/ /  __/ / / // /  / // /_/ /                               |\n"<<
102 <      "  | \\____/ .___/\\___/_/ /_//_/  /_//_____/    Copyright 2004-2010 by the  |\n"<<
103 <      "  |     /_/                                   University of Notre Dame.   |\n"<<
104 <      "  |                                                                       |\n"<<
105 <      "  |                   version " <<
106 <      OPENMD_VERSION_MAJOR << "." << OPENMD_VERSION_MINOR << " Rev:" << __get_svn_version() <<
107 <      "           http://www.openmd.net       |\n"<<
108 <      "  |                                                                       |\n"<<
109 <      "  | OpenMD is an OpenScience project.  All source code is available for   |\n"<<
110 <      "  | any use whatsoever under a BSD-style license.                         |\n"<<
111 <      "  |                                                                       |\n"<<
112 <      "  | Support OpenScience!  If you use OpenMD or its source code in your    |\n"<<
113 <      "  | research, please cite the appropriate papers when you publish your    |\n"<<
114 <      "  | work.  Good starting points are:                                      |\n"<<
115 <      "  |                                                                       |\n"<<
116 <      "  | [1]  Meineke, et al., J. Comp. Chem. 26, 252-271 (2005).              |\n"<<
117 <      "  | [2]  Fennell & Gezelter, J. Chem. Phys. 124, 234104 (2006).           |\n"<<
118 <      "  | [3]  Sun, Lin & Gezelter, J. Chem. Phys. 128, 234107 (2008).          |\n"<<
119 <      "  | [4]  Vardeman & Gezelter, in progress (2010).                         |\n"<<
120 <      "  +-----------------------------------------------------------------------+\n"<<
97 >      "  +--------------------------------------------------------------------------+\n"<<
98 >      "  |    ____                    __  ___ ____                                  |\n"<<
99 >      "  |   / __ \\____  ___  ____   /  |/  // __ \\  The Open Molecular Dynamics    |\n"<<
100 >      "  |  / / / / __ \\/ _ \\/ __ \\ / /|_/ // / / /  Engine (formerly OOPSE).       |\n"<<
101 >      "  | / /_/ / /_/ /  __/ / / // /  / // /_/ /                                  |\n"<<
102 >      "  | \\____/ .___/\\___/_/ /_//_/  /_//_____/    Copyright 2004-2012 by the     |\n"<<
103 >      "  |     /_/                                   University of Notre Dame.      |\n"<<
104 >      "  |                                                                          |\n"<<
105 >      "  |        version " <<
106 >      OPENMD_VERSION_MAJOR << "." << OPENMD_VERSION_MINOR << revision <<
107 >      "     http://www.openmd.net          |\n"<<
108 >      "  |                                                                          |\n"<<
109 >      "  | OpenMD is an OpenScience project.  All source code is available for any  |\n"<<
110 >      "  | use whatsoever under a BSD-style license.                                |\n"<<
111 >      "  |                                                                          |\n"<<
112 >      "  | Support OpenScience!  If you use OpenMD or its source code in your       |\n"<<
113 >      "  | research, please cite the appropriate papers when you publish your work  |\n"<<
114 >      "  | Good starting points are:                                                |\n"<<
115 >      "  |                                                                          |\n"<<
116 >      "  | [1] Meineke, et al., J. Comp. Chem. 26, 252-271 (2005).                  |\n"<<
117 >      "  | [2] Fennell & Gezelter, J. Chem. Phys. 124, 234104 (2006).               |\n"<<
118 >      "  | [3] Sun, Lin & Gezelter, J. Chem. Phys. 128, 24107 (2008).               |\n"<<
119 >      "  | [4] Kuang & Gezelter,  J. Chem. Phys. 133, 164101 (2010).                |\n"<<
120 >      "  | [5] Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011). |\n"<<
121 >      "  | [6] Kuang & Gezelter, Mol. Phys., 110, 691-701 (2012).                   |\n"<<
122 >      "  +--------------------------------------------------------------------------+\n"<<
123        "\n";
124      
125      if( argc < 2 ){
# Line 120 | Line 140 | int main(int argc,char* argv[]){
140    //create simulation model
141    SimCreator creator;
142    SimInfo* info = creator.createSim(argv[1]);
143 +
144    Globals* simParams = info->getSimParams();
145 +  MinimizerParameters* miniPars = simParams->getMinimizerParameters();
146  
147 <  if (simParams->haveMinimizer() && simParams->haveEnsemble()) {
148 <    sprintf(painCave.errMsg, "Minimizer keyword and Ensemble keyword can not exist together\n");
147 >  if (miniPars->getUseMinimizer() && simParams->haveEnsemble()) {
148 >    sprintf(painCave.errMsg, "Ensemble keyword can not co-exist with useMinimizer = \"true\" in the minimizer block\n");
149      painCave.isFatal = 1;
150      simError();        
151    }
152 <    
153 <  if (simParams->haveMinimizer()) {
152 >
153 >  if (miniPars->getUseMinimizer()) {
154      //create minimizer
155 <    Minimizer* myMinimizer = MinimizerFactory::getInstance()->createMinimizer(toUpperCopy(simParams->getMinimizer()), info);
155 >    OptimizationMethod* myMinimizer =OptimizationFactory::getInstance()->createOptimization(toUpperCopy(miniPars->getMethod()), info);
156  
157      if (myMinimizer == NULL) {
158 <      sprintf(painCave.errMsg, "Minimizer Factory can not create %s Minimizer\n",
159 <              simParams->getMinimizer().c_str());
158 >      sprintf(painCave.errMsg, "Optimization Factory can not create %s OptimizationMethod\n",
159 >              miniPars->getMethod().c_str());
160        painCave.isFatal = 1;
161        simError();
162      }
163  
164 <    myMinimizer->minimize();
164 >    ForceManager* fman = new ForceManager(info);      
165 >    fman->initialize();
166 >
167 >    PotentialEnergyObjectiveFunction potObjf(info, fman);
168 >    DumpStatusFunction dsf(info);
169 >    DynamicVector<RealType> initCoords = potObjf.setInitialCoords();
170 >    Problem problem(potObjf, *(new NoConstraint()), dsf, initCoords);
171 >
172 >
173 >    int maxIter = miniPars->getMaxIterations();
174 >    int mssIter = miniPars->getMaxStationaryStateIterations();
175 >    RealType rEps = miniPars->getRootEpsilon();
176 >    RealType fEps = miniPars->getFunctionEpsilon();
177 >    RealType gnEps = miniPars->getGradientNormEpsilon();
178 >
179 >    EndCriteria endCriteria(maxIter, mssIter, rEps, fEps, gnEps);
180 >
181 >    myMinimizer->minimize(problem, endCriteria);
182 >
183      delete myMinimizer;
184    } else if (simParams->haveEnsemble()) {
185      //create Integrator
# Line 189 | Line 229 | int main(int argc,char* argv[]){
229    errorCheckPoint();
230  
231   #ifdef IS_MPI  
232 <  MPI_Finalize();
232 >  MPI::Finalize();
233   #endif
234  
235    return 0 ;
236   }
197
198 extern "C" {
199  
200  char svnVersionString[1024];
201  char* __get_svn_version(){
202    int howMuchToCopy=0;
203    char *theVersion="$Revision$";
204    howMuchToCopy=strlen(theVersion+11) - 2;
205    assert(howMuchToCopy>0);
206    memcpy(svnVersionString,  theVersion+11, howMuchToCopy);
207    svnVersionString[howMuchToCopy] = '\0';
208    return svnVersionString;
209  }
210  
211 }

Comparing trunk/src/applications/openmd/openmd.cpp (property svn:keywords):
Revision 1427 by gezelter, Tue Mar 30 15:21:22 2010 UTC vs.
Revision 1796 by gezelter, Mon Sep 10 18:38:44 2012 UTC

# Line 1 | Line 1
1 < $Revision$
1 > Revision

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines