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