00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef FAKEBATHCELL_HPP_
00029 #define FAKEBATHCELL_HPP_
00030
00031 #include "ChasteSerialization.hpp"
00032 #include <boost/serialization/base_object.hpp>
00033
00034 #include "AbstractCardiacCell.hpp"
00035 #include "AbstractStimulusFunction.hpp"
00036 #include <vector>
00037
00045 class FakeBathCell : public AbstractCardiacCell
00046 {
00047 private:
00049 friend class boost::serialization::access;
00056 template<class Archive>
00057 void serialize(Archive & archive, const unsigned int version)
00058 {
00059 archive & boost::serialization::base_object<AbstractCardiacCell>(*this);
00060
00061 this->mNumberOfStateVariables = 1;
00062 }
00063
00064 public:
00071 FakeBathCell(boost::shared_ptr<AbstractIvpOdeSolver> pSolver,
00072 boost::shared_ptr<AbstractStimulusFunction> pIntracellularStimulus);
00073
00077 ~FakeBathCell();
00078
00087 void EvaluateYDerivatives(double time, const std::vector<double> &rY, std::vector<double> &rDY);
00088
00094 double GetIIonic(const std::vector<double>* pStateVariables=NULL);
00095
00102 void ComputeExceptVoltage(double tStart, double tEnd);
00103 };
00104
00105
00106 #include "SerializationExportWrapper.hpp"
00107 CHASTE_CLASS_EXPORT(FakeBathCell)
00108
00109 namespace boost
00110 {
00111 namespace serialization
00112 {
00116 template<class Archive>
00117 inline void save_construct_data(
00118 Archive & ar, const FakeBathCell * t, const unsigned int file_version)
00119 {
00120 const boost::shared_ptr<AbstractIvpOdeSolver> p_solver = t->GetSolver();
00121 const boost::shared_ptr<AbstractStimulusFunction> p_stimulus = t->GetStimulusFunction();
00122 ar << p_solver;
00123 ar << p_stimulus;
00124 }
00125
00130 template<class Archive>
00131 inline void load_construct_data(
00132 Archive & ar, FakeBathCell * t, const unsigned int file_version)
00133 {
00134
00135 boost::shared_ptr<AbstractIvpOdeSolver> p_solver;
00136 boost::shared_ptr<AbstractStimulusFunction> p_stimulus;
00137 ar >> p_solver;
00138 ar >> p_stimulus;
00139 ::new(t)FakeBathCell(p_solver, p_stimulus);
00140 }
00141 }
00142 }
00143
00144
00145 #endif