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