00001 #ifndef _CML_noble_varghese_kohl_noble_1998_basic_with_sac_ 00002 #define _CML_noble_varghese_kohl_noble_1998_basic_with_sac_ 00003 00004 00006 00017 #include "ChasteSerialization.hpp" 00018 #include <boost/serialization/base_object.hpp> 00019 00020 #include <cmath> 00021 #include <cassert> 00022 #include "AbstractCardiacCell.hpp" 00023 #include "Exception.hpp" 00024 #include "AbstractStimulusFunction.hpp" 00025 #include "OdeSystemInformation.hpp" 00026 00027 00033 class CML_noble_varghese_kohl_noble_1998_basic_with_sac : public AbstractCardiacCell 00034 { 00035 friend class boost::serialization::access; 00036 template<class Archive> 00037 void serialize(Archive & archive, const unsigned int version) 00038 { 00039 archive & mStretch; 00040 archive & boost::serialization::base_object<AbstractCardiacCell>(*this); 00041 } 00042 private: 00043 00045 double mStretch; 00046 00047 public: 00048 CML_noble_varghese_kohl_noble_1998_basic_with_sac(boost::shared_ptr<AbstractIvpOdeSolver> pSolver, 00049 boost::shared_ptr<AbstractStimulusFunction> pIntracellularStimulus); 00050 00051 ~CML_noble_varghese_kohl_noble_1998_basic_with_sac(void); 00052 00053 double GetIIonic(); 00054 00055 void EvaluateYDerivatives ( 00056 double var_environment__time, 00057 const std::vector<double> &rY, 00058 std::vector<double> &rDY); 00059 00064 void SetStretch(double stretch) 00065 { 00066 assert(stretch > 0.0); 00067 mStretch = stretch; 00068 } 00069 00073 double GetStretch() 00074 { 00075 return mStretch; 00076 } 00077 00083 double GetIntracellularCalciumConcentration() 00084 { 00085 return mStateVariables[16]; 00086 } 00087 }; 00088 00089 00090 #include "SerializationExportWrapper.hpp" 00091 CHASTE_CLASS_EXPORT(CML_noble_varghese_kohl_noble_1998_basic_with_sac) 00092 namespace boost 00093 { 00094 namespace serialization 00095 { 00096 template<class Archive> 00097 inline void save_construct_data( 00098 Archive & ar, const CML_noble_varghese_kohl_noble_1998_basic_with_sac * t, const unsigned int fileVersion) 00099 { 00100 const boost::shared_ptr<AbstractIvpOdeSolver> p_solver = t->GetSolver(); 00101 const boost::shared_ptr<AbstractStimulusFunction> p_stimulus = t->GetStimulusFunction(); 00102 ar << p_solver; 00103 ar << p_stimulus; 00104 } 00105 00106 template<class Archive> 00107 inline void load_construct_data( 00108 Archive & ar, CML_noble_varghese_kohl_noble_1998_basic_with_sac * t, const unsigned int fileVersion) 00109 { 00110 boost::shared_ptr<AbstractIvpOdeSolver> p_solver; 00111 boost::shared_ptr<AbstractStimulusFunction> p_stimulus; 00112 ar >> p_solver; 00113 ar >> p_stimulus; 00114 ::new(t)CML_noble_varghese_kohl_noble_1998_basic_with_sac(p_solver, p_stimulus); 00115 } 00116 00117 } 00118 00119 } 00120 00121 #endif