BackwardEulerNobleVargheseKohlNoble1998.hpp

Go to the documentation of this file.
00001 #ifndef _CML_noble_varghese_kohl_noble_1998_basic_backward_
00002 #define _CML_noble_varghese_kohl_noble_1998_basic_backward_
00003 
00015 #include "ChasteSerialization.hpp"
00016 #include <boost/serialization/base_object.hpp>
00017 #include "AbstractBackwardEulerCardiacCell.hpp"
00018 #include "AbstractStimulusFunction.hpp"
00019 
00020 class BackwardEulerNobleVargheseKohlNoble1998 : public AbstractBackwardEulerCardiacCell<12>
00021 {
00022     friend class TestFastSlowBackwardEulerNoble98; // Friend class for the purposes of testing
00023 
00024 private:
00026     friend class boost::serialization::access;
00033     template<class Archive>
00034     void serialize(Archive & archive, const unsigned int version)
00035     {
00036         // This calls serialize on the base class.
00037         archive & boost::serialization::base_object<AbstractBackwardEulerCardiacCell<12> >(*this);
00038     }
00039 
00040 public:
00041     BackwardEulerNobleVargheseKohlNoble1998(boost::shared_ptr<AbstractIvpOdeSolver> /* unused */,
00042                                             boost::shared_ptr<AbstractStimulusFunction> pIntracellularStimulus);
00043 
00044     BackwardEulerNobleVargheseKohlNoble1998(boost::shared_ptr<AbstractStimulusFunction> pIntracellularStimulus);
00045 
00046 private:
00047     void MakeVars();
00048 
00049 public:
00050     ~BackwardEulerNobleVargheseKohlNoble1998(void)
00051     {
00052     }
00053 
00054     void VerifyGatingVariables();
00055 
00056     void VerifyStateVariables();
00057 
00058     double GetIIonic();
00059 
00060     void ComputeResidual(double var_environment__time, const double rCurrentGuess[12], double rResidual[12]);
00061 
00062     void ComputeJacobian(double var_environment__time, const double rCurrentGuess[12], double rJacobian[12][12]);
00063 
00064 protected:
00065     void UpdateTransmembranePotential(double var_environment__time);
00066 
00067     void ComputeOneStepExceptVoltage(double var_environment__time);
00068 
00069 };
00070 
00071 
00072 #include "SerializationExportWrapper.hpp"
00073 CHASTE_CLASS_EXPORT(BackwardEulerNobleVargheseKohlNoble1998)
00074 
00075 namespace boost
00076 {
00077 namespace serialization
00078 {
00083 template<class Archive>
00084 inline void save_construct_data(
00085     Archive & ar, const BackwardEulerNobleVargheseKohlNoble1998 * t, const unsigned int file_version)
00086 {
00087     const boost::shared_ptr<AbstractIvpOdeSolver> p_solver = t->GetSolver();
00088     const boost::shared_ptr<AbstractStimulusFunction> p_stimulus = t->GetStimulusFunction();
00089     ar << p_solver;
00090     ar << p_stimulus;
00091 }
00092 
00097 template<class Archive>
00098 inline void load_construct_data(
00099     Archive & ar, BackwardEulerNobleVargheseKohlNoble1998 * t, const unsigned int file_version)
00100 {
00101     boost::shared_ptr<AbstractIvpOdeSolver> p_solver;
00102     boost::shared_ptr<AbstractStimulusFunction> p_stimulus;
00103     ar >> p_solver;
00104     ar >> p_stimulus;
00105     ::new(t)BackwardEulerNobleVargheseKohlNoble1998(p_solver, p_stimulus);
00106 }
00107 }
00108 } // namespace ...
00109 
00110 
00111 #endif

Generated by  doxygen 1.6.2