VanLeeuwen2009WntSwatCellCycleOdeSystem.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 VANLEEUWEN2009WNTSWATCELLCYCLEODESYSTEM_HPP_
00037 #define VANLEEUWEN2009WNTSWATCELLCYCLEODESYSTEM_HPP_
00038
00039 #include "ChasteSerialization.hpp"
00040 #include <boost/serialization/base_object.hpp>
00041 #include <boost/serialization/shared_ptr.hpp>
00042
00043 #include <cmath>
00044 #include <iostream>
00045
00046 #include "AbstractOdeSystem.hpp"
00047 #include "AbstractCellMutationState.hpp"
00048 #include "MathsCustomFunctions.hpp"
00049
00081 class VanLeeuwen2009WntSwatCellCycleOdeSystem : public AbstractOdeSystem
00082 {
00083 private:
00084
00090 double mk2d;
00092 double mk3d;
00094 double mk34d;
00096 double mk43d;
00098 double mk23d;
00100 double mad;
00102 double mJ11d;
00104 double mJ12d;
00106 double mJ13d;
00108 double mJ61d;
00110 double mJ62d;
00112 double mJ63d;
00114 double mKm1d;
00116 double mkpd;
00118 double mphi_r;
00120 double mphi_i;
00122 double mphi_j;
00124 double mphi_p;
00126 double mk16d;
00128 double mk61d;
00130 double mPhiE2F1;
00131
00137 double mSa;
00139 double mSca;
00141 double mSc;
00143 double mSct;
00145 double mSd;
00147 double mSt;
00149 double mSx;
00151 double mSy;
00153 double mDa;
00155 double mDca;
00157 double mDc;
00159 double mDct;
00161 double mDd;
00163 double mDdx;
00165 double mDt;
00167 double mDu;
00169 double mDx;
00171 double mDy;
00173 double mKc;
00175 double mKd;
00177 double mKt;
00179 double mPc;
00181 double mPu;
00183 double mXiD;
00185 double mXiDx;
00187 double mXiX;
00189 double mXiC;
00190
00192 boost::shared_ptr<AbstractCellMutationState> mpMutationState;
00193
00199 unsigned mHypothesis;
00200
00202 double mWntLevel;
00203
00204 friend class boost::serialization::access;
00211 template<class Archive>
00212 void serialize(Archive & archive, const unsigned int version)
00213 {
00214 archive & boost::serialization::base_object<AbstractOdeSystem>(*this);
00215 }
00216
00217 public:
00218
00227 VanLeeuwen2009WntSwatCellCycleOdeSystem(unsigned hypothesis,
00228 double wntLevel = 0.0,
00229 boost::shared_ptr<AbstractCellMutationState> pMutationState=boost::shared_ptr<AbstractCellMutationState>(),
00230 std::vector<double> stateVariables=std::vector<double>());
00231
00235 ~VanLeeuwen2009WntSwatCellCycleOdeSystem();
00236
00240 void Init();
00241
00250 void SetMutationState(boost::shared_ptr<AbstractCellMutationState> pMutationState);
00251
00257 const boost::shared_ptr<AbstractCellMutationState> GetMutationState() const;
00258
00269 void EvaluateYDerivatives(double time, const std::vector<double>& rY, std::vector<double>& rDY);
00270
00279 bool CalculateStoppingEvent(double time, const std::vector<double>& rY);
00280
00290 double CalculateRootFunction(double time, const std::vector<double>& rY);
00291
00295 double GetWntLevel() const;
00296
00300 unsigned GetHypothesis() const;
00301 };
00302
00303
00304 #include "SerializationExportWrapper.hpp"
00305 CHASTE_CLASS_EXPORT(VanLeeuwen2009WntSwatCellCycleOdeSystem)
00306
00307 namespace boost
00308 {
00309 namespace serialization
00310 {
00314 template<class Archive>
00315 inline void save_construct_data(
00316 Archive & ar, const VanLeeuwen2009WntSwatCellCycleOdeSystem * t, const BOOST_PFTO unsigned int file_version)
00317 {
00318
00319 const unsigned hypothesis = t->GetHypothesis();
00320 ar & hypothesis;
00321
00322 const double wnt_level = t->GetWntLevel();
00323 ar & wnt_level;
00324
00325 const boost::shared_ptr<AbstractCellMutationState> p_mutation_state = t->GetMutationState();
00326 ar & p_mutation_state;
00327
00328 const std::vector<double> state_variables = t->rGetConstStateVariables();
00329 ar & state_variables;
00330 }
00331
00335 template<class Archive>
00336 inline void load_construct_data(
00337 Archive & ar, VanLeeuwen2009WntSwatCellCycleOdeSystem * t, const unsigned int file_version)
00338 {
00339
00340 unsigned hypothesis;
00341 ar & hypothesis;
00342
00343 double wnt_level;
00344 ar & wnt_level;
00345
00346 boost::shared_ptr<AbstractCellMutationState> p_mutation_state;
00347 ar & p_mutation_state;
00348
00349 std::vector<double> state_variables;
00350 ar & state_variables;
00351
00352
00353 ::new(t)VanLeeuwen2009WntSwatCellCycleOdeSystem(hypothesis, wnt_level, p_mutation_state, state_variables);
00354 }
00355 }
00356 }
00357
00358 #endif