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

Comparing trunk/src/applications/oopse/oopse.cpp (file contents):
Revision 367 by gezelter, Fri Feb 18 15:58:33 2005 UTC vs.
Revision 1360 by cli2, Mon Sep 7 16:31:51 2009 UTC

# Line 1 | Line 1
1 < /*
2 < * Copyright (c) 2005 The University of Notre Dame. All Rights Reserved.
1 > /*
2 > * Copyright (c) 2006 The University of Notre Dame. All Rights Reserved.
3   *
4   * The University of Notre Dame grants you ("Licensee") a
5   * non-exclusive, royalty free, license to use, modify and
# Line 43 | Line 43
43   #include <mpi.h>
44   #endif
45  
46 + #include <fstream>
47   #include "utils/simError.h"
48 + #include "utils/CaseConversion.hpp"
49   #include "brains/Register.hpp"
50   #include "brains/SimCreator.hpp"
51   #include "brains/SimInfo.hpp"
52   #include "constraints/ZconstraintForceManager.hpp"
53 + #include "restraints/RestraintForceManager.hpp"
54   #include "integrators/IntegratorFactory.hpp"
55   #include "integrators/Integrator.hpp"
56   #include "minimizers/MinimizerFactory.hpp"
57   #include "minimizers/Minimizer.hpp"
58 + #include "restraints/ThermoIntegrationForceManager.hpp"
59 +
60   using namespace oopse;
61  
62 +
63   int main(int argc,char* argv[]){
64 <  
64 >  
65    // first things first, all of the initializations
66  
67   #ifdef IS_MPI
# Line 73 | Line 79 | int main(int argc,char* argv[]){
79        "  |    ____  ____  ____  _____ ______  The OpenSource, Object-oriented   |\n" <<
80        "  |   / __ \\/ __ \\/ __ \\/ ___// ____/  Parallel Simulation Engine.       |\n" <<
81        "  |  / / / / / / / /_/ /\\__ \\/ __/                                       |\n" <<
82 <      "  | / /_/ / /_/ / ____/___/ / /___     Copyright 2004-2005 by the        |\n" <<
82 >      "  | / /_/ / /_/ / ____/___/ / /___     Copyright 2004-2008 by the        |\n" <<
83        "  | \\____/\\____/_/    /____/_____/     University of Notre Dame.         |\n" <<
78      "  |                                    http://www.oopse.org              |\n" <<
84        "  |                                                                      |\n" <<
85 +      "  |                     version " <<
86 +      OOPSE_VERSION_MAJOR << "." << OOPSE_VERSION_MINOR << "." << OOPSE_VERSION_TINY <<
87 +      "  http://www.oopse.org              |\n" <<
88 +      "  |                                                                      |\n" <<
89        "  | OOPSE is an OpenScience project.  All source code is available for   |\n" <<
90        "  | any use subject to only one condition:                               |\n" <<
91        "  |                                                                      |\n" <<
# Line 96 | Line 105 | int main(int argc,char* argv[]){
105    }
106   #endif
107    
99 #ifdef IS_MPI
108    strcpy( checkPointMsg, "Successful number of arguments" );
109 <  MPIcheckPoint();
102 < #endif
109 >  errorCheckPoint();
110  
111 +  //register forcefields, integrators and minimizers
112 +  registerAll();
113  
114 +  //create simulation model
115 +  SimCreator creator;
116 +  SimInfo* info = creator.createSim(argv[1]);
117 +  Globals* simParams = info->getSimParams();
118  
119 <    //register forcefields, integrators and minimizers
120 <    registerAll();
119 >  if (simParams->haveMinimizer() && simParams->haveEnsemble()) {
120 >    sprintf(painCave.errMsg, "Minimizer keyword and Ensemble keyword can not exist together\n");
121 >    painCave.isFatal = 1;
122 >    simError();        
123 >  }
124 >    
125 >  if (simParams->haveMinimizer()) {
126 >    //create minimizer
127 >    Minimizer* myMinimizer = MinimizerFactory::getInstance()->createMinimizer(toUpperCopy(simParams->getMinimizer()), info);
128  
129 <    //create simulation model
130 <    SimCreator creator;
131 <    SimInfo* info = creator.createSim(argv[1]);
132 <    Globals* simParams = info->getSimParams();
133 <
114 <    if (simParams->haveMinimizer() && simParams->haveEnsemble()) {
115 <        sprintf(painCave.errMsg, "Minimizer keyword and Ensemble keyword can not exist together\n");
116 <        painCave.isFatal = 1;
117 <        simError();        
129 >    if (myMinimizer == NULL) {
130 >      sprintf(painCave.errMsg, "Minimizer Factory can not create %s Minimizer\n",
131 >              simParams->getMinimizer().c_str());
132 >      painCave.isFatal = 1;
133 >      simError();
134      }
119    
120    if (simParams->haveMinimizer()) {
121        //create minimizer
122        Minimizer* myMinimizer = MinimizerFactory::getInstance()->createMinimizer(simParams->getMinimizer(), info);
135  
136 <        if (myMinimizer == NULL) {
137 <            sprintf(painCave.errMsg, "Minimizer Factory can not create %s Minimizer\n",
138 <                    simParams->getMinimizer());
139 <            painCave.isFatal = 1;
128 <            simError();
129 <        }
136 >    myMinimizer->minimize();
137 >    delete myMinimizer;
138 >  } else if (simParams->haveEnsemble()) {
139 >    //create Integrator
140  
141 <        myMinimizer->minimize();
142 <        delete myMinimizer;
143 <    } else if (simParams->haveEnsemble()) {
144 <        //create Integrator
145 <
146 <        Integrator* myIntegrator = IntegratorFactory::getInstance()->createIntegrator(simParams->getEnsemble(), info);
147 <
148 <        if (myIntegrator == NULL) {
139 <            sprintf(painCave.errMsg, "Integrator Factory can not create %s Integrator\n",
140 <                    simParams->getEnsemble());
141 <            painCave.isFatal = 1;
142 <            simError();
143 <        }
141 >    Integrator* myIntegrator = IntegratorFactory::getInstance()->createIntegrator(toUpperCopy(simParams->getEnsemble()), info);
142 >
143 >    if (myIntegrator == NULL) {
144 >      sprintf(painCave.errMsg, "Integrator Factory can not create %s Integrator\n",
145 >              simParams->getEnsemble().c_str());
146 >      painCave.isFatal = 1;
147 >      simError();
148 >    }
149                  
150 <        //Thermodynamic Integration Method
151 <        //ForceManager* fman = new ThermodynamicForceManager(info);
152 <       //myIntegrator->setForceManager(fman);
150 >    //Thermodynamic Integration Method
151 >    //set the force manager for thermodynamic integration if specified
152 >    if (simParams->getUseThermodynamicIntegration()){
153 >      ForceManager* fman = new ThermoIntegrationForceManager(info);
154 >      myIntegrator->setForceManager(fman);
155 >    }
156  
157 +    // Restraints
158 +    if (simParams->getUseRestraints() && !simParams->getUseThermodynamicIntegration()) {
159 +      ForceManager* fman = new RestraintForceManager(info);
160 +      myIntegrator->setForceManager(fman);
161 +    }
162  
163 <        //Zconstraint-Method
164 <        if (simParams->haveZconstraints()) {
165 <            info->setNZconstraint(simParams->getNzConstraints());
166 <            ForceManager* fman = new ZconstraintForceManager(info);
167 <            myIntegrator->setForceManager(fman);
155 <        }
156 <        
157 <        myIntegrator->integrate();
158 <        delete myIntegrator;
159 <    }else {
160 <            sprintf(painCave.errMsg, "Integrator Factory can not create %s Integrator\n",
161 <            simParams->getEnsemble());
162 <            painCave.isFatal = 1;
163 <            simError();
163 >    //Zconstraint-Method
164 >    if (simParams->getNZconsStamps() > 0) {
165 >      info->setNZconstraint(simParams->getNZconsStamps());
166 >      ForceManager* fman = new ZconstraintForceManager(info);
167 >      myIntegrator->setForceManager(fman);
168      }
169 +        
170 +    myIntegrator->integrate();
171 +    delete myIntegrator;
172 +  }else {
173 +    sprintf(painCave.errMsg, "Integrator Factory can not create %s Integrator\n",
174 +            simParams->getEnsemble().c_str());
175 +    painCave.isFatal = 1;
176 +    simError();
177 +  }
178 +    
179 +  delete info;
180  
181  
182 <    
183 <    delete info;
182 >  strcpy( checkPointMsg, "Great googly moogly!  It worked!" );
183 >  errorCheckPoint();
184  
185 < #ifdef IS_MPI
171 <  strcpy( checkPointMsg, "Oh what a lovely Tea Party!" );
172 <  MPIcheckPoint();
173 <  
185 > #ifdef IS_MPI  
186    MPI_Finalize();
187   #endif
188  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines