double WntConcentration<DIM>::GetWntLevel(CellPtr pCell) { if (mUseConstantWntValueForTesting) // to test a cell and cell-cycle models without a cell population { return mConstantWntValueForTesting; } assert(mpCellPopulation!=nullptr); assert(mTypeSet); assert(mLengthSet); double height; if (mWntType == RADIAL) { double a = GetCryptProjectionParameterA(); double b = GetCryptProjectionParameterB(); height = a*pow(norm_2(mpCellPopulation->GetLocationOfCellCentre(pCell)), b); } else { height = mpCellPopulation->GetLocationOfCellCentre(pCell)[DIM-1]; } return GetWntLevel(height); }
AbstractCellCycleModel* VanLeeuwen2009WntSwatCellCycleModelHypothesisTwo::CreateCellCycleModel() { // Create a new cell-cycle model VanLeeuwen2009WntSwatCellCycleModelHypothesisTwo* p_model = new VanLeeuwen2009WntSwatCellCycleModelHypothesisTwo(mpOdeSolver); /* * Set each member variable of the new cell-cycle model that inherits * its value from the parent. * * Note 1: some of the new cell-cycle model's member variables (namely * mBirthTime, mCurrentCellCyclePhase, mReadyToDivide, mDt, mpOdeSolver) * will already have been correctly initialized in its constructor. * * Note 2: one or more of the new cell-cycle model's member variables * may be set/overwritten as soon as InitialiseDaughterCell() is called on * the new cell-cycle model. */ p_model->SetBirthTime(mBirthTime); p_model->SetDimension(mDimension); p_model->SetMinimumGapDuration(mMinimumGapDuration); p_model->SetStemCellG1Duration(mStemCellG1Duration); p_model->SetTransitCellG1Duration(mTransitCellG1Duration); p_model->SetSDuration(mSDuration); p_model->SetG2Duration(mG2Duration); p_model->SetMDuration(mMDuration); p_model->SetDivideTime(mDivideTime); p_model->SetFinishedRunningOdes(mFinishedRunningOdes); p_model->SetG2PhaseStartTime(mG2PhaseStartTime); p_model->SetLastTime(mLastTime); /* * Create the new cell-cycle model's ODE system and use the current values * of the state variables in mpOdeSystem as an initial condition. */ assert(mpOdeSystem); double wnt_level = GetWntLevel(); p_model->InitialiseOdeSystem(wnt_level, mpCell->GetMutationState()); p_model->SetStateVariables(mpOdeSystem->rGetStateVariables()); return p_model; }