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 SLOUGHINGCELLKILLER_HPP_
00029 #define SLOUGHINGCELLKILLER_HPP_
00030
00031 #include "AbstractCellKiller.hpp"
00032
00033 #include "ChasteSerialization.hpp"
00034 #include <boost/serialization/base_object.hpp>
00035
00042 template<unsigned DIM>
00043 class SloughingCellKiller : public AbstractCellKiller<DIM>
00044 {
00045 private:
00046
00048 bool mSloughSides;
00049
00054 double mSloughHeight;
00055
00060 double mSloughWidth;
00061
00063 friend class boost::serialization::access;
00075 template<class Archive>
00076 void serialize(Archive & archive, const unsigned int version)
00077 {
00078 archive & boost::serialization::base_object<AbstractCellKiller<DIM> >(*this);
00079
00080
00081
00082 }
00083
00084 public:
00085
00094 SloughingCellKiller(AbstractCellPopulation<DIM>* pCrypt, double sloughHeight, bool sloughSides=false, double sloughWidth = 10.0);
00095
00099 bool GetSloughSides() const;
00100
00104 double GetSloughHeight() const;
00105
00109 double GetSloughWidth() const;
00110
00114 virtual void TestAndLabelCellsForApoptosisOrDeath();
00115
00124 void OutputCellKillerParameters(out_stream& rParamsFile);
00125 };
00126
00127 #include "SerializationExportWrapper.hpp"
00128 EXPORT_TEMPLATE_CLASS_SAME_DIMS(SloughingCellKiller)
00129
00130 namespace boost
00131 {
00132 namespace serialization
00133 {
00137 template<class Archive, unsigned DIM>
00138 inline void save_construct_data(
00139 Archive & ar, const SloughingCellKiller<DIM> * t, const BOOST_PFTO unsigned int file_version)
00140 {
00141
00142 const AbstractCellPopulation<DIM>* const p_crypt = t->GetCellPopulation();
00143 ar << p_crypt;
00144 bool slough_sides = t->GetSloughSides();
00145 ar << slough_sides;
00146 double slough_height = t->GetSloughHeight();
00147 ar << slough_height;
00148 double slough_width = t->GetSloughWidth();
00149 ar << slough_width;
00150 }
00151
00155 template<class Archive, unsigned DIM>
00156 inline void load_construct_data(
00157 Archive & ar, SloughingCellKiller<DIM> * t, const unsigned int file_version)
00158 {
00159
00160 AbstractCellPopulation<DIM>* p_crypt;
00161 ar >> p_crypt;
00162 bool slough_sides;
00163 ar >> slough_sides;
00164 double slough_height;
00165 ar >> slough_height;
00166 double slough_width;
00167 ar >> slough_width;
00168
00169
00170 ::new(t)SloughingCellKiller<DIM>(p_crypt, slough_height, slough_sides, slough_width);
00171 }
00172 }
00173 }
00174
00175 #endif