SloughingCellKiller.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 SLOUGHINGCELLKILLER_HPP_
00037 #define SLOUGHINGCELLKILLER_HPP_
00038
00039 #include "AbstractCellKiller.hpp"
00040
00041 #include "ChasteSerialization.hpp"
00042 #include <boost/serialization/base_object.hpp>
00043
00050 template<unsigned DIM>
00051 class SloughingCellKiller : public AbstractCellKiller<DIM>
00052 {
00053 private:
00054
00056 bool mSloughSides;
00057
00062 double mSloughHeight;
00063
00068 double mSloughWidth;
00069
00071 friend class boost::serialization::access;
00078 template<class Archive>
00079 void serialize(Archive & archive, const unsigned int version)
00080 {
00081 archive & boost::serialization::base_object<AbstractCellKiller<DIM> >(*this);
00082 }
00083
00084 public:
00085
00094 SloughingCellKiller(AbstractCellPopulation<DIM>* pCrypt,
00095 double sloughHeight,
00096 bool sloughSides = false,
00097 double sloughWidth = 10.0);
00098
00102 virtual ~SloughingCellKiller(){};
00103
00107 bool GetSloughSides() const;
00108
00112 double GetSloughHeight() const;
00113
00117 double GetSloughWidth() const;
00118
00122 virtual void CheckAndLabelCellsForApoptosisOrDeath();
00123
00132 void OutputCellKillerParameters(out_stream& rParamsFile);
00133 };
00134
00135 #include "SerializationExportWrapper.hpp"
00136 EXPORT_TEMPLATE_CLASS_SAME_DIMS(SloughingCellKiller)
00137
00138 namespace boost
00139 {
00140 namespace serialization
00141 {
00145 template<class Archive, unsigned DIM>
00146 inline void save_construct_data(
00147 Archive & ar, const SloughingCellKiller<DIM> * t, const BOOST_PFTO unsigned int file_version)
00148 {
00149
00150 const AbstractCellPopulation<DIM>* const p_crypt = t->GetCellPopulation();
00151 ar << p_crypt;
00152 bool slough_sides = t->GetSloughSides();
00153 ar << slough_sides;
00154 double slough_height = t->GetSloughHeight();
00155 ar << slough_height;
00156 double slough_width = t->GetSloughWidth();
00157 ar << slough_width;
00158 }
00159
00163 template<class Archive, unsigned DIM>
00164 inline void load_construct_data(
00165 Archive & ar, SloughingCellKiller<DIM> * t, const unsigned int file_version)
00166 {
00167
00168 AbstractCellPopulation<DIM>* p_crypt;
00169 ar >> p_crypt;
00170 bool slough_sides;
00171 ar >> slough_sides;
00172 double slough_height;
00173 ar >> slough_height;
00174 double slough_width;
00175 ar >> slough_width;
00176
00177
00178 ::new(t)SloughingCellKiller<DIM>(p_crypt, slough_height, slough_sides, slough_width);
00179 }
00180 }
00181 }
00182
00183 #endif