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
00050
00051 #include "ApcOneHitCellMutationState.hpp"
00052 #include "ApcTwoHitCellMutationState.hpp"
00053 #include "BetaCateninOneHitCellMutationState.hpp"
00054
00087 class VanLeeuwen2009WntSwatCellCycleOdeSystem : public AbstractOdeSystem
00088 {
00089 private:
00090
00096 double mk2d;
00098 double mk3d;
00100 double mk34d;
00102 double mk43d;
00104 double mk23d;
00106 double mad;
00108 double mJ11d;
00110 double mJ12d;
00112 double mJ13d;
00114 double mJ61d;
00116 double mJ62d;
00118 double mJ63d;
00120 double mKm1d;
00122 double mkpd;
00124 double mphi_r;
00126 double mphi_i;
00128 double mphi_j;
00130 double mphi_p;
00132 double mk16d;
00134 double mk61d;
00136 double mPhiE2F1;
00137
00143 double mSa;
00145 double mSca;
00147 double mSc;
00149 double mSct;
00151 double mSd;
00153 double mSt;
00155 double mSx;
00157 double mSy;
00159 double mDa;
00161 double mDca;
00163 double mDc;
00165 double mDct;
00167 double mDd;
00169 double mDdx;
00171 double mDt;
00173 double mDu;
00175 double mDx;
00177 double mDy;
00179 double mKc;
00181 double mKd;
00183 double mKt;
00185 double mPc;
00187 double mPu;
00189 double mXiD;
00191 double mXiDx;
00193 double mXiX;
00195 double mXiC;
00196
00198 boost::shared_ptr<AbstractCellMutationState> mpMutationState;
00199
00205 unsigned mHypothesis;
00206
00208 double mWntLevel;
00209
00210 friend class boost::serialization::access;
00217 template<class Archive>
00218 void serialize(Archive & archive, const unsigned int version)
00219 {
00220 archive & boost::serialization::base_object<AbstractOdeSystem>(*this);
00221 }
00222
00223 public:
00224
00233 VanLeeuwen2009WntSwatCellCycleOdeSystem(unsigned hypothesis,
00234 double wntLevel = 0.0,
00235 boost::shared_ptr<AbstractCellMutationState> pMutationState=boost::shared_ptr<AbstractCellMutationState>(),
00236 std::vector<double> stateVariables=std::vector<double>());
00237
00241 ~VanLeeuwen2009WntSwatCellCycleOdeSystem();
00242
00246 void Init();
00247
00256 void SetMutationState(boost::shared_ptr<AbstractCellMutationState> pMutationState);
00257
00263 const boost::shared_ptr<AbstractCellMutationState> GetMutationState() const;
00264
00275 void EvaluateYDerivatives(double time, const std::vector<double>& rY, std::vector<double>& rDY);
00276
00285 bool CalculateStoppingEvent(double time, const std::vector<double>& rY);
00286
00296 double CalculateRootFunction(double time, const std::vector<double>& rY);
00297
00301 double GetWntLevel() const;
00302
00306 unsigned GetHypothesis() const;
00307 };
00308
00309
00310 #include "SerializationExportWrapper.hpp"
00311 CHASTE_CLASS_EXPORT(VanLeeuwen2009WntSwatCellCycleOdeSystem)
00312
00313 namespace boost
00314 {
00315 namespace serialization
00316 {
00320 template<class Archive>
00321 inline void save_construct_data(
00322 Archive & ar, const VanLeeuwen2009WntSwatCellCycleOdeSystem * t, const BOOST_PFTO unsigned int file_version)
00323 {
00324
00325 const unsigned hypothesis = t->GetHypothesis();
00326 ar & hypothesis;
00327
00328 const double wnt_level = t->GetWntLevel();
00329 ar & wnt_level;
00330
00331 const boost::shared_ptr<AbstractCellMutationState> p_mutation_state = t->GetMutationState();
00332 ar & p_mutation_state;
00333
00334 const std::vector<double> state_variables = t->rGetConstStateVariables();
00335 ar & state_variables;
00336 }
00337
00341 template<class Archive>
00342 inline void load_construct_data(
00343 Archive & ar, VanLeeuwen2009WntSwatCellCycleOdeSystem * t, const unsigned int file_version)
00344 {
00345
00346 unsigned hypothesis;
00347 ar & hypothesis;
00348
00349 double wnt_level;
00350 ar & wnt_level;
00351
00352 boost::shared_ptr<AbstractCellMutationState> p_mutation_state;
00353 ar & p_mutation_state;
00354
00355 std::vector<double> state_variables;
00356 ar & state_variables;
00357
00358
00359 ::new(t)VanLeeuwen2009WntSwatCellCycleOdeSystem(hypothesis, wnt_level, p_mutation_state, state_variables);
00360 }
00361 }
00362 }
00363
00364 #endif