Mirams2010WntOdeSystem.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 MIRAMS2010WNTODESYSTEM_HPP_
00037 #define MIRAMS2010WNTODESYSTEM_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
00049
00050 #include "ApcOneHitCellMutationState.hpp"
00051 #include "ApcTwoHitCellMutationState.hpp"
00052 #include "BetaCateninOneHitCellMutationState.hpp"
00053 #include "CellLabel.hpp"
00054 #include "WildTypeCellMutationState.hpp"
00055
00067 class Mirams2010WntOdeSystem : public AbstractOdeSystem
00068 {
00069 private:
00070
00076 double mA;
00078 double mB;
00080 double mC;
00082 double mD;
00084 double mE;
00086 double mF;
00087
00089 boost::shared_ptr<AbstractCellMutationState> mpMutationState;
00090
00092 double mWntLevel;
00093
00094 friend class boost::serialization::access;
00101 template<class Archive>
00102 void serialize(Archive & archive, const unsigned int version)
00103 {
00104 archive & boost::serialization::base_object<AbstractOdeSystem>(*this);
00105 }
00106
00107 public:
00108
00116 Mirams2010WntOdeSystem(double wntLevel=0.0,
00117 boost::shared_ptr<AbstractCellMutationState> pMutationState=boost::shared_ptr<AbstractCellMutationState>(),
00118 std::vector<double> stateVariables=std::vector<double>());
00119
00123 ~Mirams2010WntOdeSystem();
00124
00128 void Init();
00129
00138 void SetMutationState(boost::shared_ptr<AbstractCellMutationState> pMutationState);
00139
00145 const boost::shared_ptr<AbstractCellMutationState> GetMutationState() const;
00146
00157 void EvaluateYDerivatives(double time, const std::vector<double>& rY, std::vector<double>& rDY);
00158
00162 double GetWntLevel() const;
00163 };
00164
00165
00166 #include "SerializationExportWrapper.hpp"
00167 CHASTE_CLASS_EXPORT(Mirams2010WntOdeSystem)
00168
00169 namespace boost
00170 {
00171 namespace serialization
00172 {
00176 template<class Archive>
00177 inline void save_construct_data(
00178 Archive & ar, const Mirams2010WntOdeSystem * t, const BOOST_PFTO unsigned int file_version)
00179 {
00180
00181 const double wnt_level = t->GetWntLevel();
00182 ar & wnt_level;
00183
00184 const boost::shared_ptr<AbstractCellMutationState> p_mutation_state = t->GetMutationState();
00185 ar & p_mutation_state;
00186
00187 const std::vector<double> state_variables = t->rGetConstStateVariables();
00188 ar & state_variables;
00189 }
00190
00194 template<class Archive>
00195 inline void load_construct_data(
00196 Archive & ar, Mirams2010WntOdeSystem * t, const unsigned int file_version)
00197 {
00198
00199 double wnt_level;
00200 ar & wnt_level;
00201
00202 boost::shared_ptr<AbstractCellMutationState> p_mutation_state;
00203 ar & p_mutation_state;
00204
00205 std::vector<double> state_variables;
00206 ar & state_variables;
00207
00208
00209 ::new(t)Mirams2010WntOdeSystem(wnt_level, p_mutation_state, state_variables);
00210 }
00211 }
00212 }
00213
00214 #endif