AbstractParameterisedSystem.hpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef ABSTRACTPARAMETERISEDSYSTEM_HPP_
00037 #define ABSTRACTPARAMETERISEDSYSTEM_HPP_
00038
00039 #include <vector>
00040 #include <string>
00041 #include <boost/shared_ptr.hpp>
00042
00043 #include "AbstractUntemplatedParameterisedSystem.hpp"
00044
00045
00054 template<typename VECTOR>
00055 class AbstractParameterisedSystem : public AbstractUntemplatedParameterisedSystem
00056 {
00057 friend class TestAbstractCvodeSystem;
00058
00059 private:
00067 std::string GetStateMessage(const std::string& message, VECTOR Y);
00068
00069 protected:
00071 VECTOR mStateVariables;
00072
00074 VECTOR mParameters;
00075
00084 std::string DumpState(const std::string& rMessage);
00085
00095 std::string DumpState(const std::string& rMessage,
00096 VECTOR Y);
00097
00109 std::string DumpState(const std::string& rMessage,
00110 VECTOR Y,
00111 double time);
00112
00122 void CheckParametersOnLoad(const std::vector<double>& rParameters,
00123 const std::vector<std::string>& rParameterNames);
00124
00125 public:
00131 AbstractParameterisedSystem(unsigned numberOfStateVariables);
00132
00133
00134
00135
00136
00140 VECTOR& rGetStateVariables();
00141
00146 VECTOR GetStateVariables();
00147
00154 void SetStateVariables(const VECTOR& rStateVariables);
00155
00161 double GetStateVariable(unsigned index) const;
00162
00168 double GetStateVariable(const std::string& rName) const;
00169
00176 void SetStateVariable(unsigned index, double newValue);
00177
00184 void SetStateVariable(const std::string& rName, double newValue);
00185
00198 virtual void VerifyStateVariables()
00199 {}
00200
00201
00202
00203
00204
00214 void SetDefaultInitialConditions(const VECTOR& rInitialConditions);
00215
00226 void SetDefaultInitialCondition(unsigned index, double initialCondition);
00227
00233 VECTOR GetInitialConditions() const;
00234
00238 void ResetToInitialConditions();
00239
00240
00241
00242
00243
00249 double GetParameter(unsigned index) const;
00250
00256 double GetParameter(const std::string& rName) const;
00257
00264 void SetParameter(const std::string& rName, double value);
00265
00272 void SetParameter(unsigned index, double value);
00273
00274
00275
00276
00277
00291 double GetAnyVariable(unsigned index, double time=0.0,
00292 VECTOR* pDerivedQuantities=NULL);
00293
00307 double GetAnyVariable(const std::string& rName, double time=0.0,
00308 VECTOR* pDerivedQuantities=NULL);
00309
00317 void SetAnyVariable(unsigned index, double value);
00318
00326 void SetAnyVariable(const std::string& rName, double value);
00327
00328
00329
00330
00331
00340 virtual VECTOR ComputeDerivedQuantities(double time,
00341 const VECTOR& rState);
00342
00349 VECTOR ComputeDerivedQuantitiesFromCurrentState(double time);
00350 };
00351
00352
00353
00354 #endif