36 #include "SimpleTargetAreaModifier.hpp"
37 #include "AbstractPhaseBasedCellCycleModel.hpp"
38 #include "ApoptoticCellProperty.hpp"
40 template<
unsigned DIM>
47 template<
unsigned DIM>
52 template<
unsigned DIM>
56 double cell_target_area = this->mReferenceTargetArea;
58 double growth_duration = mGrowthDuration;
61 if (dynamic_cast<AbstractPhaseBasedCellCycleModel*>(pCell->GetCellCycleModel()) ==
nullptr)
63 EXCEPTION(
"If SetGrowthDuration() has not been called, a subclass of AbstractPhaseBasedCellCycleModel must be used");
70 if (growth_duration == DBL_MAX)
80 if (pCell->GetStartOfApoptosisTime() - pCell->GetBirthTime() < growth_duration)
82 cell_target_area *= 0.5*(1 + (pCell->GetStartOfApoptosisTime() - pCell->GetBirthTime())/growth_duration);
88 cell_target_area *= 1.0 - 0.5/(pCell->GetApoptosisTime())*time_spent_apoptotic;
89 if (cell_target_area < 0)
96 double cell_age = pCell->GetAge();
99 if (cell_age < growth_duration)
101 cell_target_area *= 0.5*(1 + cell_age/growth_duration);
112 if (pCell->ReadyToDivide())
114 cell_target_area = 0.5*this->mReferenceTargetArea;
120 pCell->GetCellData()->SetItem(
"target area", cell_target_area);
123 template<
unsigned DIM>
126 return mGrowthDuration;
129 template<
unsigned DIM>
132 assert(growthDuration >= 0.0);
133 mGrowthDuration = growthDuration;
136 template<
unsigned DIM>
139 *rParamsFile <<
"\t\t\t<GrowthDuration>" << mGrowthDuration <<
"</GrowthDuration>\n";
virtual void UpdateTargetAreaOfCell(const CellPtr pCell)
virtual void OutputSimulationModifierParameters(out_stream &rParamsFile)
double GetGrowthDuration()
void OutputSimulationModifierParameters(out_stream &rParamsFile)
#define EXCEPTION(message)
SimpleTargetAreaModifier()
static SimulationTime * Instance()
virtual double GetG1Duration() const
const double DOUBLE_UNSET
virtual ~SimpleTargetAreaModifier()
#define EXPORT_TEMPLATE_CLASS_SAME_DIMS(CLASS)
void SetGrowthDuration(double growthDuration)
double GetTransitCellG1Duration() const