00001 /*************************************************************************************************** 00002 ***** Copyright (C) 2005 John Schneiderman <JohnMS@member.fsf.org> ***** 00003 ***** ***** 00004 ***** This program is free software; you can redistribute it and/or modify ***** 00005 ***** it under the terms of the GNU General Public License as published by ***** 00006 ***** the Free Software Foundation; either version 2 of the License, or ***** 00007 ***** (at your option) any later version. ***** 00008 ***** ***** 00009 ***** This program is distributed in the hope that it will be useful, ***** 00010 ***** but WITHOUT ANY WARRANTY; without even the implied warranty of ***** 00011 ***** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ***** 00012 ***** GNU General Public License for more details. ***** 00013 ***** ***** 00014 ***** You should have received a copy of the GNU General Public License ***** 00015 ***** along with this program; if not, write to the Free Software ***** 00016 ***** Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ***** 00017 ***************************************************************************************************/ 00018 #ifndef _BASE_SIMULATION_H_ 00019 #define _BASE_SIMULATION_H_ 00020 00021 #include "kineticenergyhist.h" 00022 #include "potentialenergyhist.h" 00023 #include "radialdistribution.h" 00024 #include "radialdensityhist.h" 00025 00026 class Cluster; 00027 class ConfigurationDatabase; 00028 00029 #include <string> 00030 using std::string; 00031 00037 class BaseSimulation 00038 { 00039 public: 00044 BaseSimulation(const ConfigurationDatabase &conf); 00049 int runSteps() const; 00054 int printInterval() const; 00059 double changeInStep() const; 00064 void setRunSteps(int steps); 00069 void setPrintInterval(int interval); 00074 void setChangeInStep(double change); 00084 virtual void run(Cluster& cluster, string currentRun, string previousRun)=0; 00088 void clear(); 00089 00090 protected: 00094 int m_runSteps; 00098 int m_printInterval; 00103 double m_stepStart; 00107 double m_changeInStep; 00111 KineticEnergyHistogram m_kineticEnergyHistogram; 00115 PotentialEnergyHistogram m_potentialEnergyHistogram; 00119 RadialDistributionFunction m_radialDistributionFunction; 00123 RadialDensityHistogram m_radialDensityHistogram; 00124 00130 virtual double findLastStep(string previousRun) const=0; 00131 }; 00132 #endif