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 RADIALSLOUGHINGCELLKILLER_HPP_
00029 #define RADIALSLOUGHINGCELLKILLER_HPP_
00030
00031 #include "AbstractCellKiller.hpp"
00032
00033 #include "ChasteSerialization.hpp"
00034 #include <boost/serialization/base_object.hpp>
00035
00042 class RadialSloughingCellKiller : public AbstractCellKiller<2>
00043 {
00044 private:
00045
00047 c_vector<double,2> mCentre;
00048
00050 double mRadius;
00051
00052 friend class boost::serialization::access;
00053 template<class Archive>
00054 void serialize(Archive & archive, const unsigned int version)
00055 {
00056 archive & boost::serialization::base_object<AbstractCellKiller<2> >(*this);
00057 }
00058
00059 public:
00060
00068 RadialSloughingCellKiller(AbstractCellPopulation<2>* pCellPopulation,
00069 c_vector<double,2> centre,
00070 double radius);
00071
00075 c_vector<double,2> GetCentre() const;
00076
00080 double GetRadius() const;
00081
00085 virtual void TestAndLabelCellsForApoptosisOrDeath();
00086
00095 void OutputCellKillerParameters(out_stream& rParamsFile);
00096 };
00097
00098 #include "SerializationExportWrapper.hpp"
00099 CHASTE_CLASS_EXPORT(RadialSloughingCellKiller)
00100
00101 namespace boost
00102 {
00103 namespace serialization
00104 {
00108 template<class Archive>
00109 inline void save_construct_data(
00110 Archive & ar, const RadialSloughingCellKiller * t, const BOOST_PFTO unsigned int file_version)
00111 {
00112
00113 const AbstractCellPopulation<2>* const p_cell_population = t->GetCellPopulation();
00114 ar & p_cell_population;
00115 c_vector<double,2> centre = t->GetCentre();
00116 ar & centre[0];
00117 ar & centre[1];
00118 double radius = t->GetRadius();
00119 ar & radius;
00120 }
00121
00125 template<class Archive>
00126 inline void load_construct_data(
00127 Archive & ar, RadialSloughingCellKiller * t, const unsigned int file_version)
00128 {
00129
00130 AbstractCellPopulation<2>* p_cell_population;
00131 ar & p_cell_population;
00132 c_vector<double,2> centre;
00133 ar & centre[0];
00134 ar & centre[1];
00135 double radius;
00136 ar & radius;
00137
00138
00139 ::new(t)RadialSloughingCellKiller(p_cell_population, centre, radius);
00140 }
00141 }
00142 }
00143
00144
00145 #endif
00146