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
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