本文整理汇总了C++中typenameAbstractCellPopulation::ReadyToDivide方法的典型用法代码示例。如果您正苦于以下问题:C++ typenameAbstractCellPopulation::ReadyToDivide方法的具体用法?C++ typenameAbstractCellPopulation::ReadyToDivide怎么用?C++ typenameAbstractCellPopulation::ReadyToDivide使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类typenameAbstractCellPopulation
的用法示例。
在下文中一共展示了typenameAbstractCellPopulation::ReadyToDivide方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: output_file_handler
//.........这里部分代码省略.........
/*
* If any PDEs have been defined, solve them here before updating cells and store
* their solution in results files. This also initializes the relevant CellData.
* NOTE that this works as the PDEs are elliptic.
*/
CellBasedEventHandler::BeginEvent(CellBasedEventHandler::PDE);
mpCellBasedPdeHandler->SolvePdeAndWriteResultsToFile(this->mSamplingTimestepMultiple);
CellBasedEventHandler::EndEvent(CellBasedEventHandler::PDE);
}
SetupSolve();
// Call SetupSolve() on each modifier
for (typename std::vector<boost::shared_ptr<AbstractCellBasedSimulationModifier<ELEMENT_DIM, SPACE_DIM> > >::iterator iter = mSimulationModifiers.begin();
iter != mSimulationModifiers.end();
++iter)
{
(*iter)->SetupSolve(this->mrCellPopulation,this->mSimulationOutputDirectory);
}
/*
* Age the cells to the correct time. Note that cells are created with
* negative birth times so that some are initially almost ready to divide.
*/
LOG(1, "Setting up cells...");
for (typename AbstractCellPopulation<ELEMENT_DIM,SPACE_DIM>::Iterator cell_iter = mrCellPopulation.Begin();
cell_iter != mrCellPopulation.End();
++cell_iter)
{
/*
* We don't use the result; this call is just to force the cells to age
* to the current time running their cell-cycle models to get there.
*/
cell_iter->ReadyToDivide();
}
LOG(1, "\tdone\n");
// Write initial conditions to file for the visualizer
WriteVisualizerSetupFile();
if (PetscTools::AmMaster())
{
*mpVizSetupFile << std::flush;
}
mrCellPopulation.WriteResultsToFiles(results_directory+"/");
OutputSimulationSetup();
CellBasedEventHandler::EndEvent(CellBasedEventHandler::SETUP);
// Enter main time loop
while (!( p_simulation_time->IsFinished() || StoppingEventHasOccurred() ) )
{
LOG(1, "--TIME = " << p_simulation_time->GetTime() << "\n");
// This function calls DoCellRemoval(), DoCellBirth() and CellPopulation::Update()
UpdateCellPopulation();
// Update cell locations and topology
UpdateCellLocationsAndTopology();
// Update the assignment of cells to processes.
mrCellPopulation.UpdateCellProcessLocation();
// Increment simulation time here, so results files look sensible
p_simulation_time->IncrementTimeOneStep();
示例2: CalculateCellDivisionVector
unsigned AbstractCellBasedSimulation<ELEMENT_DIM,SPACE_DIM>::DoCellBirth()
{
if (mNoBirth)
{
return 0;
}
unsigned num_births_this_step = 0;
// Iterate over all cells, seeing if each one can be divided
for (typename AbstractCellPopulation<ELEMENT_DIM,SPACE_DIM>::Iterator cell_iter = mrCellPopulation.Begin();
cell_iter != mrCellPopulation.End();
++cell_iter)
{
// Check if this cell is ready to divide
double cell_age = cell_iter->GetAge();
if (cell_age > 0.0)
{
if (cell_iter->ReadyToDivide())
{
// Check if there is room into which the cell may divide
if (mrCellPopulation.IsRoomToDivide(*cell_iter))
{
// Create a new cell
CellPtr p_new_cell = cell_iter->Divide();
// Call method that determines how cell division occurs and returns a vector
c_vector<double, SPACE_DIM> new_location = CalculateCellDivisionVector(*cell_iter);
// If required, output this location to file
/**
* \todo (#2441)
*
* For consistency with the rest of the output code, consider removing the
* AbstractCellBasedSimulation member mOutputDivisionLocations, adding a new
* member mAgesAndLocationsOfDividingCells to AbstractCellPopulation, adding
* a new class CellDivisionLocationsWriter to the CellPopulationWriter hierarchy
* to output the content of mAgesAndLocationsOfDividingCells to file (remembering
* to clear mAgesAndLocationsOfDividingCells at each timestep), and replacing the
* following conditional statement with something like
*
* if (mrCellPopulation.HasWriter<CellDivisionLocationsWriter>())
* {
* mCellDivisionLocations.push_back(new_location);
* }
*/
if (mOutputDivisionLocations)
{
*mpDivisionLocationFile << SimulationTime::Instance()->GetTime() << "\t";
for (unsigned i=0; i<SPACE_DIM; i++)
{
*mpDivisionLocationFile << new_location[i] << "\t";
}
*mpDivisionLocationFile << "\t" << cell_age << "\n";
}
// Add new cell to the cell population
mrCellPopulation.AddCell(p_new_cell, new_location, *cell_iter);
// Update counter
num_births_this_step++;
}
}
}
}
return num_births_this_step;
}