Alarcon2004OxygenBasedCellCycleOdeSystem.hpp
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
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef _ALARCON2004OXYGENBASEDCELLCYCLEODESYSTEM_HPP_
00037 #define _ALARCON2004OXYGENBASEDCELLCYCLEODESYSTEM_HPP_
00038
00039 #include "ChasteSerialization.hpp"
00040 #include <boost/serialization/base_object.hpp>
00041
00042 #include <cmath>
00043
00044 #include "AbstractOdeSystem.hpp"
00045
00059 class Alarcon2004OxygenBasedCellCycleOdeSystem : public AbstractOdeSystem
00060 {
00061 private:
00062
00068 double ma1;
00070 double ma2;
00072 double ma3;
00074 double ma4;
00076 double mb3;
00078 double mb4;
00080 double mc1;
00082 double mc2;
00084 double md1;
00086 double md2;
00088 double mJ3;
00090 double mJ4;
00092 double mEta;
00094 double mMstar;
00096 double mB;
00098 double mxThreshold;
00100 double myThreshold;
00101
00103 double mOxygenConcentration;
00104
00106 bool mIsLabelled;
00107
00108 friend class boost::serialization::access;
00115 template<class Archive>
00116 void serialize(Archive & archive, const unsigned int version)
00117 {
00118 archive & boost::serialization::base_object<AbstractOdeSystem>(*this);
00119 }
00120
00121 public:
00122
00130 Alarcon2004OxygenBasedCellCycleOdeSystem(double oxygenConcentration,
00131 bool isLabelled,
00132 std::vector<double> stateVariables=std::vector<double>());
00133
00137 ~Alarcon2004OxygenBasedCellCycleOdeSystem();
00138
00142 void Init();
00143
00154 void EvaluateYDerivatives(double time, const std::vector<double>& rY, std::vector<double>& rDY);
00155
00164 bool CalculateStoppingEvent(double time, const std::vector<double>& rY);
00165
00171 void SetIsLabelled(bool isLabelled);
00172
00176 bool IsLabelled() const;
00177
00181 double GetOxygenConcentration() const;
00182 };
00183
00184
00185 #include "SerializationExportWrapper.hpp"
00186 CHASTE_CLASS_EXPORT(Alarcon2004OxygenBasedCellCycleOdeSystem)
00187
00188 namespace boost
00189 {
00190 namespace serialization
00191 {
00195 template<class Archive>
00196 inline void save_construct_data(
00197 Archive & ar, const Alarcon2004OxygenBasedCellCycleOdeSystem * t, const BOOST_PFTO unsigned int file_version)
00198 {
00199
00200 const double oxygen_concentration = t->GetOxygenConcentration();
00201 ar & oxygen_concentration;
00202
00203 const bool is_labelled = t->IsLabelled();
00204 ar & is_labelled;
00205
00206 const std::vector<double> state_variables = t->rGetConstStateVariables();
00207 ar & state_variables;
00208 }
00209
00213 template<class Archive>
00214 inline void load_construct_data(
00215 Archive & ar, Alarcon2004OxygenBasedCellCycleOdeSystem * t, const unsigned int file_version)
00216 {
00217
00218 double oxygen_concentration;
00219 ar & oxygen_concentration;
00220
00221 bool is_labelled;
00222 ar & is_labelled;
00223
00224 std::vector<double> state_variables;
00225 ar & state_variables;
00226
00227
00228 ::new(t)Alarcon2004OxygenBasedCellCycleOdeSystem(oxygen_concentration, is_labelled, state_variables);
00229 }
00230 }
00231 }
00232
00233 #endif