unsigned AbstractCellPopulation<ELEMENT_DIM, SPACE_DIM>::GetLocationIndexUsingCell(CellPtr pCell) { // Check the cell is in the map assert(this->mCellLocationMap.find(pCell.get()) != this->mCellLocationMap.end()); return mCellLocationMap[pCell.get()]; }
void AbstractCellPopulation<ELEMENT_DIM, SPACE_DIM>::SetCellUsingLocationIndex(unsigned index, CellPtr pCell) { // Clear the maps mLocationCellMap[index].clear(); mCellLocationMap.erase(pCell.get()); // Replace with new cell mLocationCellMap[index].insert(pCell); // Do other half of the map mCellLocationMap[pCell.get()] = index; }
void AbstractCellPopulation<ELEMENT_DIM, SPACE_DIM>::RemoveCellUsingLocationIndex(unsigned index, CellPtr pCell) { std::set<CellPtr>::iterator cell_iter = mLocationCellMap[index].find(pCell); if (cell_iter == mLocationCellMap[index].end()) { EXCEPTION("Tried to remove a cell which is not attached to the given location index"); } else { mLocationCellMap[index].erase(cell_iter); mCellLocationMap.erase(pCell.get()); } }
void AbstractCellPopulation<ELEMENT_DIM, SPACE_DIM>::AddCellUsingLocationIndex(unsigned index, CellPtr pCell) { mLocationCellMap[index].insert(pCell); mCellLocationMap[pCell.get()] = index; }
c_vector<double, DIM> VertexBasedCellPopulation<DIM>::GetLocationOfCellCentre(CellPtr pCell) { return mpMutableVertexMesh->GetCentroidOfElement(this->mCellLocationMap[pCell.get()]); }