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         // This calls serialize on the base class.
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 // Must be last
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 } // namespace ...
00141 
00142 
00143 #endif

Generated by  doxygen 1.6.2