Maleckar2009OdeSystem.hpp

Go to the documentation of this file.
00001 #ifndef _MALECKAR2009ODESYSTEM_
00002 #define _MALECKAR2009ODESYSTEM_
00003 
00015 
00016 #include "ChasteSerialization.hpp"
00017 #include <boost/serialization/base_object.hpp>
00018 #include "AbstractCardiacCell.hpp"
00019 #include "AbstractStimulusFunction.hpp"
00020 #include "AbstractIvpOdeSolver.hpp"
00021 
00031 class Maleckar2009OdeSystem : public AbstractCardiacCell
00032 {
00033 
00034 private:
00036     double mScaleFactorGks;
00038     double mScaleFactorIto;
00040     double mScaleFactorGkr;
00042     double mScaleFactorGna;
00044     double mScaleFactorAch;
00046     double mScaleFactorGNaK;
00048     double mScaleFactorGNaCa;
00050     double mScaleFactorGCaL;
00052     double mScaleFactorGKur;
00054     double mScaleFactorGK1;
00056     double mScaleFactorAZD;
00057 
00065     void VerifyStateVariables();
00066 
00068     friend class boost::serialization::access;
00069 
00076     template<class Archive>
00077     void serialize(Archive & archive, const unsigned int version)
00078     {
00079         archive & boost::serialization::base_object<AbstractCardiacCell>(*this);
00080     }
00081 
00082 public:
00083 
00090     Maleckar2009OdeSystem(boost::shared_ptr<AbstractIvpOdeSolver> pSolver,
00091                  boost::shared_ptr<AbstractStimulusFunction> pIntracellularStimulus);
00092 
00096     ~Maleckar2009OdeSystem(void);
00097 
00102     void SetScaleFactorGks(double sfgks);
00103 
00108     void SetScaleFactorIto(double sfito);
00109 
00114     void SetScaleFactorGkr(double sfgkr);
00115 
00120     void SetScaleFactorGna(double sfgna);
00121 
00126     void SetScaleFactorAch(double sfach);
00127 
00132     void SetScaleFactorGNaK(double sfgnak);
00133 
00138     void SetScaleFactorGNaCa(double sfgnaca);
00139 
00144     void SetScaleFactorGCaL(double sfgcal);
00145 
00150     void SetScaleFactorGKur(double sfgkur);
00151 
00156     void SetScaleFactorGK1(double sfgk1);
00157 
00162     void SetScaleFactorAZD(double sfazd);
00163 
00169     double GetIIonic();
00170 
00180     void EvaluateYDerivatives(
00181             double var_environment__time,
00182             const std::vector<double> &rY,
00183             std::vector<double> &rDY);
00184 
00185 };
00186 
00187 // Needs to be included last
00188 #include "SerializationExportWrapper.hpp"
00189 CHASTE_CLASS_EXPORT(Maleckar2009OdeSystem)
00190 
00191 namespace boost
00192 {
00193     namespace serialization
00194     {
00195         template<class Archive>
00196         inline void save_construct_data(
00197             Archive & ar, const Maleckar2009OdeSystem * t, const unsigned int fileVersion)
00198         {
00199             const boost::shared_ptr<AbstractIvpOdeSolver> p_solver = t->GetSolver();
00200             const boost::shared_ptr<AbstractStimulusFunction> p_stimulus = t->GetStimulusFunction();
00201             ar << p_solver;
00202             ar << p_stimulus;
00203         }
00204 
00205         template<class Archive>
00206         inline void load_construct_data(
00207             Archive & ar, Maleckar2009OdeSystem * t, const unsigned int fileVersion)
00208         {
00209             boost::shared_ptr<AbstractIvpOdeSolver> p_solver;
00210             boost::shared_ptr<AbstractStimulusFunction> p_stimulus;
00211             ar >> p_solver;
00212             ar >> p_stimulus;
00213             ::new(t)Maleckar2009OdeSystem(p_solver, p_stimulus);
00214         }
00215 
00216     }
00217 
00218 }
00219 
00220 #endif

Generated by  doxygen 1.6.2