CellPtr PottsBasedCellPopulation<DIM>::AddCell(CellPtr pNewCell, const c_vector<double,DIM>& rCellDivisionVector, CellPtr pParentCell) { // Get the element associated with this cell PottsElement<DIM>* p_element = GetElementCorrespondingToCell(pParentCell); // Divide the element unsigned new_element_index = mpPottsMesh->DivideElement(p_element, true); // new element will be below the existing element // Associate the new cell with the element this->mCells.push_back(pNewCell); // Update location cell map CellPtr p_created_cell = this->mCells.back(); this->SetCellUsingLocationIndex(new_element_index,p_created_cell); return p_created_cell; }
CellPtr VertexBasedCellPopulation<DIM>::AddCell(CellPtr pNewCell, const c_vector<double,DIM>& rCellDivisionVector, CellPtr pParentCell) { // Get the element associated with this cell VertexElement<DIM, DIM>* p_element = GetElementCorrespondingToCell(pParentCell); // Divide the element unsigned new_element_index = mpMutableVertexMesh->DivideElementAlongGivenAxis(p_element, rCellDivisionVector, true); // Associate the new cell with the element this->mCells.push_back(pNewCell); // Update location cell map CellPtr p_created_cell = this->mCells.back(); this->SetCellUsingLocationIndex(new_element_index,p_created_cell); this->mCellLocationMap[p_created_cell.get()] = new_element_index; return p_created_cell; }
bool PottsBasedCellPopulation<DIM>::IsCellAssociatedWithADeletedLocation(CellPtr pCell) { return GetElementCorrespondingToCell(pCell)->IsDeleted(); }