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 2064 by gezelter, Tue Mar 3 17:02:20 2015 UTC

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

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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines