FaberRudy2000Version3.hpp
Go to the documentation of this file.00001 #ifndef _FaberRudy2000Version3_
00002 #define _FaberRudy2000Version3_
00003
00015 #include "ChasteSerialization.hpp"
00016 #include <boost/serialization/base_object.hpp>
00017 #include <cmath>
00018 #include <cassert>
00019 #include "AbstractCardiacCell.hpp"
00020 #include "Exception.hpp"
00021 #include "AbstractStimulusFunction.hpp"
00022 #include "OdeSystemInformation.hpp"
00023
00024 class FaberRudy2000Version3 : public AbstractCardiacCell
00025 {
00026 private:
00028 double mScaleFactorGks;
00030 double mScaleFactorIto;
00032 double mScaleFactorGkr;
00033
00035 friend class boost::serialization::access;
00042 template<class Archive>
00043 void serialize(Archive & archive, const unsigned int version)
00044 {
00045
00046 archive & boost::serialization::base_object<AbstractCardiacCell>(*this);
00047 }
00048
00049 public:
00056 FaberRudy2000Version3(boost::shared_ptr<AbstractIvpOdeSolver> pSolver,
00057 boost::shared_ptr<AbstractStimulusFunction> pIntracellularStimulus);
00058
00062 ~FaberRudy2000Version3(void);
00063
00068 void SetScaleFactorGks(double sfgks);
00069
00074 void SetScaleFactorIto(double sfito);
00075
00080 void SetScaleFactorGkr(double sfgkr);
00081
00087 double GetIIonic();
00088
00096 void EvaluateYDerivatives (
00097 double var_environment__time,
00098 const std::vector<double> &rY,
00099 std::vector<double> &rDY);
00100
00101
00102 };
00103
00104
00105 #include "SerializationExportWrapper.hpp"
00106 CHASTE_CLASS_EXPORT(FaberRudy2000Version3)
00107
00108 namespace boost
00109 {
00110 namespace serialization
00111 {
00115 template<class Archive>
00116 inline void save_construct_data(
00117 Archive & ar, const FaberRudy2000Version3 * t, const unsigned int file_version)
00118 {
00119 const boost::shared_ptr<AbstractIvpOdeSolver> p_solver = t->GetSolver();
00120 const boost::shared_ptr<AbstractStimulusFunction> p_stimulus = t->GetStimulusFunction();
00121 ar << p_solver;
00122 ar << p_stimulus;
00123 }
00124
00129 template<class Archive>
00130 inline void load_construct_data(
00131 Archive & ar, FaberRudy2000Version3 * t, const unsigned int file_version)
00132 {
00133 boost::shared_ptr<AbstractIvpOdeSolver> p_solver;
00134 boost::shared_ptr<AbstractStimulusFunction> p_stimulus;
00135 ar >> p_solver;
00136 ar >> p_stimulus;
00137 ::new(t)FaberRudy2000Version3(p_solver, p_stimulus);
00138 }
00139 }
00140 }
00141
00142
00143 #endif