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 MIRAMS2010WNTODESYSTEM_HPP_
00029 #define MIRAMS2010WNTODESYSTEM_HPP_
00030
00031 #include "ChasteSerialization.hpp"
00032 #include <boost/serialization/base_object.hpp>
00033 #include <boost/serialization/shared_ptr.hpp>
00034
00035 #include <cmath>
00036 #include <iostream>
00037
00038 #include "AbstractOdeSystem.hpp"
00039 #include "AbstractCellMutationState.hpp"
00040
00041
00042 #include "ApcOneHitCellMutationState.hpp"
00043 #include "ApcTwoHitCellMutationState.hpp"
00044 #include "BetaCateninOneHitCellMutationState.hpp"
00045 #include "CellLabel.hpp"
00046 #include "WildTypeCellMutationState.hpp"
00047
00059 class Mirams2010WntOdeSystem : public AbstractOdeSystem
00060 {
00061 private:
00062
00068 double mA;
00070 double mB;
00072 double mC;
00074 double mD;
00076 double mE;
00078 double mF;
00079
00081 boost::shared_ptr<AbstractCellMutationState> mpMutationState;
00082
00084 double mWntLevel;
00085
00086 friend class boost::serialization::access;
00093 template<class Archive>
00094 void serialize(Archive & archive, const unsigned int version)
00095 {
00096 archive & boost::serialization::base_object<AbstractOdeSystem>(*this);
00097 }
00098
00099 public:
00100
00108 Mirams2010WntOdeSystem(double wntLevel=0.0,
00109 boost::shared_ptr<AbstractCellMutationState> pMutationState=boost::shared_ptr<AbstractCellMutationState>(),
00110 std::vector<double> stateVariables=std::vector<double>());
00111
00115 ~Mirams2010WntOdeSystem();
00116
00120 void Init();
00121
00130 void SetMutationState(boost::shared_ptr<AbstractCellMutationState> pMutationState);
00131
00137 const boost::shared_ptr<AbstractCellMutationState> GetMutationState() const;
00138
00149 void EvaluateYDerivatives(double time, const std::vector<double>& rY, std::vector<double>& rDY);
00150
00154 double GetWntLevel() const;
00155 };
00156
00157
00158 #include "SerializationExportWrapper.hpp"
00159 CHASTE_CLASS_EXPORT(Mirams2010WntOdeSystem)
00160
00161 namespace boost
00162 {
00163 namespace serialization
00164 {
00168 template<class Archive>
00169 inline void save_construct_data(
00170 Archive & ar, const Mirams2010WntOdeSystem * t, const BOOST_PFTO unsigned int file_version)
00171 {
00172
00173 const double wnt_level = t->GetWntLevel();
00174 ar & wnt_level;
00175
00176 const boost::shared_ptr<AbstractCellMutationState> p_mutation_state = t->GetMutationState();
00177 ar & p_mutation_state;
00178
00179 const std::vector<double> state_variables = t->rGetConstStateVariables();
00180 ar & state_variables;
00181 }
00182
00186 template<class Archive>
00187 inline void load_construct_data(
00188 Archive & ar, Mirams2010WntOdeSystem * t, const unsigned int file_version)
00189 {
00190
00191 double wnt_level;
00192 ar & wnt_level;
00193
00194 boost::shared_ptr<AbstractCellMutationState> p_mutation_state;
00195 ar & p_mutation_state;
00196
00197 std::vector<double> state_variables;
00198 ar & state_variables;
00199
00200
00201 ::new(t)Mirams2010WntOdeSystem(wnt_level, p_mutation_state, state_variables);
00202 }
00203 }
00204 }
00205
00206 #endif