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
00030
00031
00032
00033
00034
00035
00036 #ifndef RADIALSLOUGHINGCELLKILLER_HPP_
00037 #define RADIALSLOUGHINGCELLKILLER_HPP_
00038
00039 #include "AbstractCellKiller.hpp"
00040
00041 #include "ChasteSerialization.hpp"
00042 #include <boost/serialization/base_object.hpp>
00043
00050 class RadialSloughingCellKiller : public AbstractCellKiller<2>
00051 {
00052 private:
00053
00055 c_vector<double,2> mCentre;
00056
00058 double mRadius;
00059
00060 friend class boost::serialization::access;
00068 template<class Archive>
00069 void serialize(Archive & archive, const unsigned int version)
00070 {
00071 archive & boost::serialization::base_object<AbstractCellKiller<2> >(*this);
00072 }
00073
00074 public:
00075
00083 RadialSloughingCellKiller(AbstractCellPopulation<2>* pCellPopulation,
00084 c_vector<double,2> centre,
00085 double radius);
00086
00090 c_vector<double,2> GetCentre() const;
00091
00095 double GetRadius() const;
00096
00100 virtual void CheckAndLabelCellsForApoptosisOrDeath();
00101
00110 void OutputCellKillerParameters(out_stream& rParamsFile);
00111 };
00112
00113 #include "SerializationExportWrapper.hpp"
00114 CHASTE_CLASS_EXPORT(RadialSloughingCellKiller)
00115
00116 namespace boost
00117 {
00118 namespace serialization
00119 {
00123 template<class Archive>
00124 inline void save_construct_data(
00125 Archive & ar, const RadialSloughingCellKiller * t, const BOOST_PFTO unsigned int file_version)
00126 {
00127
00128 const AbstractCellPopulation<2>* const p_cell_population = t->GetCellPopulation();
00129 ar & p_cell_population;
00130 c_vector<double,2> centre = t->GetCentre();
00131 ar & centre[0];
00132 ar & centre[1];
00133 double radius = t->GetRadius();
00134 ar & radius;
00135 }
00136
00140 template<class Archive>
00141 inline void load_construct_data(
00142 Archive & ar, RadialSloughingCellKiller * t, const unsigned int file_version)
00143 {
00144
00145 AbstractCellPopulation<2>* p_cell_population;
00146 ar & p_cell_population;
00147 c_vector<double,2> centre;
00148 ar & centre[0];
00149 ar & centre[1];
00150 double radius;
00151 ar & radius;
00152
00153
00154 ::new(t)RadialSloughingCellKiller(p_cell_population, centre, radius);
00155 }
00156 }
00157 }
00158
00159
00160 #endif
00161