#include <MutableVertexMesh.hpp>
Public Member Functions | |
MutableVertexMesh (std::vector< Node< SPACE_DIM > * > nodes, std::vector< VertexElement< ELEMENT_DIM, SPACE_DIM > * > vertexElements, double cellRearrangementThreshold=0.01, double t2Threshold=0.001, double cellRearrangementRatio=1.5) | |
MutableVertexMesh () | |
virtual | ~MutableVertexMesh () |
void | SetCellRearrangementThreshold (double cellRearrangementThreshold) |
void | SetT2Threshold (double t2Threshold) |
void | SetCellRearrangementRatio (double cellRearrangementRatio) |
virtual void | SetNode (unsigned nodeIndex, ChastePoint< SPACE_DIM > point) |
double | GetCellRearrangementThreshold () const |
double | GetT2Threshold () const |
double | GetCellRearrangementRatio () const |
unsigned | GetNumNodes () const |
unsigned | GetNumElements () const |
std::vector< c_vector< double, SPACE_DIM > > | GetLocationsOfT1Swaps () |
std::vector< c_vector< double, SPACE_DIM > > | GetLocationsOfT3Swaps () |
void | ClearLocationsOfT1Swaps () |
void | ClearLocationsOfT3Swaps () |
unsigned | AddNode (Node< SPACE_DIM > *pNewNode) |
void | DeleteElementPriorToReMesh (unsigned index) |
unsigned | DivideElementAlongShortAxis (VertexElement< ELEMENT_DIM, SPACE_DIM > *pElement, bool placeOriginalElementBelow=false) |
unsigned | DivideElementAlongGivenAxis (VertexElement< ELEMENT_DIM, SPACE_DIM > *pElement, c_vector< double, SPACE_DIM > axisOfDivision, bool placeOriginalElementBelow=false) |
unsigned | AddElement (VertexElement< ELEMENT_DIM, SPACE_DIM > *pNewElement) |
void | Clear () |
void | DivideEdge (Node< SPACE_DIM > *pNodeA, Node< SPACE_DIM > *pNodeB) |
void | RemoveDeletedNodesAndElements (VertexElementMap &rElementMap) |
void | RemoveDeletedNodes () |
void | ReMesh (VertexElementMap &rElementMap) |
void | ReMesh () |
Protected Member Functions | |
unsigned | DivideElement (VertexElement< ELEMENT_DIM, SPACE_DIM > *pElement, unsigned nodeAIndex, unsigned nodeBIndex, bool placeOriginalElementBelow=false) |
bool | CheckForT1Swaps (VertexElementMap &rElementMap) |
bool | CheckForT2Swaps (VertexElementMap &rElementMap) |
bool | CheckForIntersections () |
void | IdentifySwapType (Node< SPACE_DIM > *pNodeA, Node< SPACE_DIM > *pNodeB, VertexElementMap &rElementMap) |
void | PerformNodeMerge (Node< SPACE_DIM > *pNodeA, Node< SPACE_DIM > *pNodeB) |
void | PerformT1Swap (Node< SPACE_DIM > *pNodeA, Node< SPACE_DIM > *pNodeB, std::set< unsigned > &rElementsContainingNodes) |
void | PerformT2Swap (VertexElement< ELEMENT_DIM, SPACE_DIM > &rElement) |
void | PerformT3Swap (Node< SPACE_DIM > *pNode, unsigned elementIndex) |
void | PerformVoidRemoval (Node< SPACE_DIM > *pNodeA, Node< SPACE_DIM > *pNodeB, Node< SPACE_DIM > *pNodeC) |
template<class Archive> | |
void | serialize (Archive &archive, const unsigned int version) |
Protected Attributes | |
double | mCellRearrangementThreshold |
double | mCellRearrangementRatio |
double | mT2Threshold |
std::vector< unsigned > | mDeletedNodeIndices |
std::vector< unsigned > | mDeletedElementIndices |
std::vector< c_vector< double, SPACE_DIM > > | mLocationsOfT1Swaps |
std::vector< c_vector< double, SPACE_DIM > > | mLocationsOfT3Swaps |
Friends | |
class | TestMutableVertexMesh |
class | TestMutableVertexMeshReMesh |
class | boost::serialization::access |
Definition at line 51 of file MutableVertexMesh.hpp.
MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::MutableVertexMesh | ( | std::vector< Node< SPACE_DIM > * > | nodes, | |
std::vector< VertexElement< ELEMENT_DIM, SPACE_DIM > * > | vertexElements, | |||
double | cellRearrangementThreshold = 0.01 , |
|||
double | t2Threshold = 0.001 , |
|||
double | cellRearrangementRatio = 1.5 | |||
) | [inline] |
Default constructor.
nodes | vector of pointers to nodes | |
vertexElements | vector of pointers to VertexElements | |
cellRearrangementThreshold | the minimum threshold distance for element rearrangment (defaults to 0.01) | |
t2Threshold | the maximum threshold distance for Type 2 swaps (defaults to 0.001) | |
cellRearrangementRatio | ratio between the minimum threshold distance for element rearrangment node separation after remeshing (defaults to 1.5) |
Definition at line 36 of file MutableVertexMesh.cpp.
References Node< SPACE_DIM >::AddElement(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::Clear(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetIndex(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNode(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::mElements, VertexMesh< ELEMENT_DIM, SPACE_DIM >::mFaces, AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mMeshChangesDuringSimulation, and AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mNodes.
MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::MutableVertexMesh | ( | ) | [inline] |
Default constructor for use by serializer.
Definition at line 102 of file MutableVertexMesh.cpp.
References MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::Clear(), and AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mMeshChangesDuringSimulation.
MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::~MutableVertexMesh | ( | ) | [inline, virtual] |
Destructor.
Definition at line 113 of file MutableVertexMesh.cpp.
References MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::Clear().
unsigned MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::DivideElement | ( | VertexElement< ELEMENT_DIM, SPACE_DIM > * | pElement, | |
unsigned | nodeAIndex, | |||
unsigned | nodeBIndex, | |||
bool | placeOriginalElementBelow = false | |||
) | [inline, protected] |
Divide an element along the axis passing through two of its nodes.
pElement | the element to divide | |
nodeAIndex | the local index of one node within this element | |
nodeBIndex | the local index of another node within this element | |
placeOriginalElementBelow | whether to place the original element below (in the y direction) the new element (defaults to false) |
Remove the correct nodes from each element. If placeOriginalElementBelow is true, place the original element below (in the y direction) the new element; otherwise, place it above.
Definition at line 454 of file MutableVertexMesh.cpp.
References MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::AddElement(), VertexElement< ELEMENT_DIM, SPACE_DIM >::DeleteNode(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNode(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mDeletedElementIndices, and VertexMesh< ELEMENT_DIM, SPACE_DIM >::mElements.
Referenced by MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::DivideElementAlongGivenAxis().
bool MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::CheckForT1Swaps | ( | VertexElementMap & | rElementMap | ) | [inline, protected] |
Helper method for ReMesh to check if any neighbouring nodes in an element are within the mCellRearrangementThreshold and perform any T1Swaps if required
rElementMap | a VertexElementMap which associates the indices of VertexElements in the old mesh with indices of VertexElements in the new mesh. This should be created with the correct size, GetNumElements() |
Definition at line 800 of file MutableVertexMesh.cpp.
References AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetDistanceBetweenNodes(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetElement(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetElementIteratorBegin(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetElementIteratorEnd(), Node< SPACE_DIM >::GetIndex(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::IdentifySwapType(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mCellRearrangementThreshold, and Node< SPACE_DIM >::rGetContainingElementIndices().
Referenced by MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::ReMesh().
bool MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::CheckForT2Swaps | ( | VertexElementMap & | rElementMap | ) | [inline, protected] |
Helper method for ReMesh to check if any elements are smaller than the mT2Threshold and perform any T2Swaps, removing elements, if required
rElementMap | a VertexElementMap which associates the indices of VertexElements in the old mesh with indices of VertexElements in the new mesh. This should be created with the correct size, GetNumElements() |
Definition at line 864 of file MutableVertexMesh.cpp.
References VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetElementIteratorBegin(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetElementIteratorEnd(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::GetT2Threshold(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetVolumeOfElement(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformT2Swap(), and MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::RemoveDeletedNodesAndElements().
Referenced by MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::ReMesh().
bool MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::CheckForIntersections | ( | ) | [inline, protected] |
Helper method for ReMesh to check if elements have intersected and to correct them if required
Definition at line 894 of file MutableVertexMesh.cpp.
References VertexMesh< ELEMENT_DIM, SPACE_DIM >::ElementIncludesPoint(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetElementIteratorBegin(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetElementIteratorEnd(), AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetNodeIteratorBegin(), AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetNodeIteratorEnd(), and MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformT3Swap().
Referenced by MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::ReMesh().
void MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::IdentifySwapType | ( | Node< SPACE_DIM > * | pNodeA, | |
Node< SPACE_DIM > * | pNodeB, | |||
VertexElementMap & | rElementMap | |||
) | [inline, protected] |
Helper method for ReMesh to Identify the type of swap when nodes are too close, T2Swap or NodeMerge.
pNodeA | one of the nodes to perform the swap with | |
pNodeB | the other node to perform the swap | |
rElementMap | a VertexElementMap which associates the indices of VertexElements in the old mesh with indices of VertexElements in the new mesh. This should be created with the correct size, GetNumElements() |
Definition at line 933 of file MutableVertexMesh.cpp.
References EXCEPTION, Node< SPACE_DIM >::GetIndex(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNodeGlobalIndex(), VertexElement< ELEMENT_DIM, SPACE_DIM >::GetNodeLocalIndex(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), Node< SPACE_DIM >::IsBoundaryNode(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::mElements, AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mNodes, NEVER_REACHED, MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformNodeMerge(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformT1Swap(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformVoidRemoval(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::RemoveDeletedNodes(), and Node< SPACE_DIM >::rGetContainingElementIndices().
Referenced by MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::CheckForT1Swaps().
void MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformNodeMerge | ( | Node< SPACE_DIM > * | pNodeA, | |
Node< SPACE_DIM > * | pNodeB | |||
) | [inline, protected] |
Helper method for ReMesh to merge nodes when needed. Replaces the node contained in the least number of elements with the other node.
pNodeA | one of the nodes to perform the merge with | |
pNodeB | the other node to perform the merge with |
Definition at line 1259 of file MutableVertexMesh.cpp.
References Node< SPACE_DIM >::GetIndex(), AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetNode(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetVectorFromAtoB(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mDeletedNodeIndices, VertexMesh< ELEMENT_DIM, SPACE_DIM >::mElements, AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mNodes, Node< SPACE_DIM >::rGetContainingElementIndices(), Node< SPACE_DIM >::rGetLocation(), and Node< SPACE_DIM >::rGetModifiableLocation().
Referenced by MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::IdentifySwapType(), and MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformVoidRemoval().
void MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformT1Swap | ( | Node< SPACE_DIM > * | pNodeA, | |
Node< SPACE_DIM > * | pNodeB, | |||
std::set< unsigned > & | rElementsContainingNodes | |||
) | [inline, protected] |
Helper method for ReMesh to perform the T1 Swap
pNodeA | one of the nodes to perform the swap with | |
pNodeB | the other node to perform the swap | |
rElementsContainingNodes | set of common elements |
Definition at line 1310 of file MutableVertexMesh.cpp.
References EXCEPTION, Node< SPACE_DIM >::GetIndex(), Node< SPACE_DIM >::GetNumContainingElements(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetVectorFromAtoB(), Node< SPACE_DIM >::IsBoundaryNode(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mCellRearrangementRatio, MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mCellRearrangementThreshold, VertexMesh< ELEMENT_DIM, SPACE_DIM >::mElements, MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mLocationsOfT1Swaps, Node< SPACE_DIM >::rGetContainingElementIndices(), Node< SPACE_DIM >::rGetLocation(), Node< SPACE_DIM >::rGetModifiableLocation(), and Node< SPACE_DIM >::SetAsBoundaryNode().
Referenced by MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::IdentifySwapType().
void MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformT2Swap | ( | VertexElement< ELEMENT_DIM, SPACE_DIM > & | rElement | ) | [inline, protected] |
Helper method for ReMesh to perform the T2 Swap
rElement | the element to remove |
Definition at line 1487 of file MutableVertexMesh.cpp.
References MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::AddNode(), VertexElement< ELEMENT_DIM, SPACE_DIM >::DeleteNode(), EXCEPTION, VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetCentroidOfElement(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetElement(), Node< SPACE_DIM >::GetIndex(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetIndex(), AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetNode(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNode(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNodeGlobalIndex(), VertexElement< ELEMENT_DIM, SPACE_DIM >::GetNodeLocalIndex(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), Node< SPACE_DIM >::IsBoundaryNode(), VertexElement< ELEMENT_DIM, SPACE_DIM >::MarkAsDeleted(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mDeletedElementIndices, MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mDeletedNodeIndices, and Node< SPACE_DIM >::rGetContainingElementIndices().
Referenced by MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::CheckForT2Swaps().
void MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformT3Swap | ( | Node< SPACE_DIM > * | pNode, | |
unsigned | elementIndex | |||
) | [inline, protected] |
Called by ReMesh(). Moves a node, which has been found to overlap an element, back onto the edge of that element and associates it with the element and adds new nodes to maitain three elemets a node.
pNode | pointer to the node | |
elementIndex | global index of the element in the mesh |
Definition at line 1589 of file MutableVertexMesh.cpp.
References VertexElement< ELEMENT_DIM, SPACE_DIM >::AddNode(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::AddNode(), VertexElement< ELEMENT_DIM, SPACE_DIM >::DeleteNode(), EXCEPTION, VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetElement(), Node< SPACE_DIM >::GetIndex(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetLocalIndexForElementEdgeClosestToPoint(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNodeGlobalIndex(), VertexElement< ELEMENT_DIM, SPACE_DIM >::GetNodeLocalIndex(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNodeLocation(), Node< SPACE_DIM >::GetNumContainingElements(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetVectorFromAtoB(), Node< SPACE_DIM >::IsBoundaryNode(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mCellRearrangementRatio, MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mCellRearrangementThreshold, MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mDeletedNodeIndices, MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mLocationsOfT3Swaps, AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mNodes, NEVER_REACHED, Node< SPACE_DIM >::rGetContainingElementIndices(), Node< SPACE_DIM >::rGetLocation(), Node< SPACE_DIM >::rGetModifiableLocation(), Node< SPACE_DIM >::SetAsBoundaryNode(), and MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::SetNode().
Referenced by MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::CheckForIntersections().
void MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformVoidRemoval | ( | Node< SPACE_DIM > * | pNodeA, | |
Node< SPACE_DIM > * | pNodeB, | |||
Node< SPACE_DIM > * | pNodeC | |||
) | [inline, protected] |
Helper method for ReMesh() to remove a triangular void in which one of the edges is less than the cell rearrangement threshold.
pNodeA | one of the nodes on the short edge | |
pNodeB | the other node on the short edge | |
pNodeC | the other node in the triangular void |
Definition at line 2251 of file MutableVertexMesh.cpp.
References Node< SPACE_DIM >::GetIndex(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetVectorFromAtoB(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformNodeMerge(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::RemoveDeletedNodes(), Node< SPACE_DIM >::rGetLocation(), Node< SPACE_DIM >::rGetModifiableLocation(), and Node< SPACE_DIM >::SetAsBoundaryNode().
Referenced by MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::IdentifySwapType().
void MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::serialize | ( | Archive & | archive, | |
const unsigned int | version | |||
) | [inline, protected] |
Serialize the mesh.
Note that if you are calling this method (from subclasses) you should archive your member variables FIRST. So that this method can call a ReMesh (to convert from TrianglesMeshReader input format into your native format).
archive | the archive | |
version | the current version of this class |
Reimplemented from AbstractMesh< ELEMENT_DIM, SPACE_DIM >.
Reimplemented in Cylindrical2dVertexMesh.
Definition at line 218 of file MutableVertexMesh.hpp.
void MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::SetCellRearrangementThreshold | ( | double | cellRearrangementThreshold | ) | [inline] |
Set method for mCellRearrangementThreshold.
cellRearrangementThreshold |
Definition at line 140 of file MutableVertexMesh.cpp.
References MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mCellRearrangementThreshold.
void MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::SetT2Threshold | ( | double | t2Threshold | ) | [inline] |
Set method for mT2Threshold.
t2Threshold |
Definition at line 147 of file MutableVertexMesh.cpp.
References MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mT2Threshold.
void MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::SetCellRearrangementRatio | ( | double | cellRearrangementRatio | ) | [inline] |
Set method for mCellRearrangementRatio.
cellRearrangementRatio |
Definition at line 154 of file MutableVertexMesh.cpp.
References MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mCellRearrangementRatio.
void MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::SetNode | ( | unsigned | nodeIndex, | |
ChastePoint< SPACE_DIM > | point | |||
) | [inline, virtual] |
Move the node with a particular index to a new point in space.
nodeIndex | the index of the node to be moved | |
point | the new target location of the node |
Definition at line 255 of file MutableVertexMesh.cpp.
References AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mNodes.
Referenced by MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformT3Swap(), VertexBasedCellPopulation< DIM >::SetNode(), and Cylindrical2dVertexMesh::SetNode().
double MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::GetCellRearrangementThreshold | ( | ) | const [inline] |
Definition at line 119 of file MutableVertexMesh.cpp.
References MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mCellRearrangementThreshold.
Referenced by VertexBasedCellPopulation< DIM >::OutputCellPopulationParameters(), and VertexBasedCellPopulation< DIM >::UpdateNodeLocations().
double MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::GetT2Threshold | ( | ) | const [inline] |
Definition at line 126 of file MutableVertexMesh.cpp.
References MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mT2Threshold.
Referenced by MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::CheckForT2Swaps(), and VertexBasedCellPopulation< DIM >::OutputCellPopulationParameters().
double MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::GetCellRearrangementRatio | ( | ) | const [inline] |
Definition at line 133 of file MutableVertexMesh.cpp.
References MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mCellRearrangementRatio.
Referenced by VertexBasedCellPopulation< DIM >::OutputCellPopulationParameters().
unsigned MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::GetNumNodes | ( | ) | const [inline, virtual] |
Reimplemented from VertexMesh< ELEMENT_DIM, SPACE_DIM >.
Definition at line 171 of file MutableVertexMesh.cpp.
References MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mDeletedNodeIndices, and AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mNodes.
Referenced by MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::DivideEdge(), VertexBasedCellPopulation< DIM >::GetNumNodes(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformT1Swap(), and MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformT2Swap().
unsigned MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::GetNumElements | ( | ) | const [inline, virtual] |
Reimplemented from VertexMesh< ELEMENT_DIM, SPACE_DIM >.
Definition at line 178 of file MutableVertexMesh.cpp.
References MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mDeletedElementIndices, and VertexMesh< ELEMENT_DIM, SPACE_DIM >::mElements.
Referenced by VertexBasedCellPopulation< DIM >::GetNumElements(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::ReMesh(), and VertexBasedCellPopulation< DIM >::WriteResultsToFiles().
std::vector< c_vector< double, SPACE_DIM > > MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::GetLocationsOfT1Swaps | ( | ) | [inline] |
Definition at line 192 of file MutableVertexMesh.cpp.
References MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mLocationsOfT1Swaps.
Referenced by VertexBasedCellPopulation< DIM >::WriteResultsToFiles().
std::vector< c_vector< double, SPACE_DIM > > MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::GetLocationsOfT3Swaps | ( | ) | [inline] |
Definition at line 198 of file MutableVertexMesh.cpp.
References MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mLocationsOfT3Swaps.
Referenced by VertexBasedCellPopulation< DIM >::WriteResultsToFiles().
void MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::ClearLocationsOfT1Swaps | ( | ) | [inline] |
Helper method to clear the stored T1Swaps
Definition at line 204 of file MutableVertexMesh.cpp.
References MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mLocationsOfT1Swaps.
Referenced by VertexBasedCellPopulation< DIM >::WriteResultsToFiles().
void MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::ClearLocationsOfT3Swaps | ( | ) | [inline] |
Helper method to clear the stored T3Swaps
Definition at line 210 of file MutableVertexMesh.cpp.
References MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mLocationsOfT3Swaps.
Referenced by VertexBasedCellPopulation< DIM >::WriteResultsToFiles().
unsigned MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::AddNode | ( | Node< SPACE_DIM > * | pNewNode | ) | [inline] |
Add a node to the mesh.
Note: After calling this one or more times, you must then call ReMesh.
pNewNode | pointer to the new node |
Definition at line 217 of file MutableVertexMesh.cpp.
References Node< SPACE_DIM >::GetIndex(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mDeletedNodeIndices, AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mNodes, and Node< SPACE_DIM >::SetIndex().
Referenced by VertexBasedCellPopulation< DIM >::AddNode(), Cylindrical2dVertexMesh::AddNode(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::DivideElementAlongGivenAxis(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformT2Swap(), and MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformT3Swap().
void MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::DeleteElementPriorToReMesh | ( | unsigned | index | ) | [inline] |
Mark an element as deleted. Note that it DOES NOT deal with the associated nodes and therefore should only be called immediately prior to a ReMesh() being called.
index | the global index of a specified vertex element |
Definition at line 583 of file MutableVertexMesh.cpp.
References Node< SPACE_DIM >::GetIndex(), Node< SPACE_DIM >::MarkAsDeleted(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mDeletedElementIndices, MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mDeletedNodeIndices, VertexMesh< ELEMENT_DIM, SPACE_DIM >::mElements, Node< SPACE_DIM >::rGetContainingElementIndices(), and Node< SPACE_DIM >::SetAsBoundaryNode().
Referenced by VertexBasedCellPopulation< DIM >::RemoveDeadCells().
unsigned MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::DivideElementAlongShortAxis | ( | VertexElement< ELEMENT_DIM, SPACE_DIM > * | pElement, | |
bool | placeOriginalElementBelow = false | |||
) | [inline] |
Divide an element along its short axis.
pElement | the element to divide | |
placeOriginalElementBelow | whether to place the original element below (in the y direction) the new element (defaults to false) |
Definition at line 438 of file MutableVertexMesh.cpp.
References MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::DivideElementAlongGivenAxis(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetIndex(), and VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetShortAxisOfElement().
Referenced by VertexBasedCellPopulation< DIM >::AddCell().
unsigned MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::DivideElementAlongGivenAxis | ( | VertexElement< ELEMENT_DIM, SPACE_DIM > * | pElement, | |
c_vector< double, SPACE_DIM > | axisOfDivision, | |||
bool | placeOriginalElementBelow = false | |||
) | [inline] |
Divide an element along a specified axis.
If the new nodes (intersections of axis with element) are within mCellRearrangementThreshold of existing nodes then they are moved 2*mCellRearrangementThreshold away.
pElement | the element to divide | |
axisOfDivision | axis to divide the element by | |
placeOriginalElementBelow | whether to place the original element below (in the y direction) the new element (defaults to false) |
Definition at line 262 of file MutableVertexMesh.cpp.
References MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::AddNode(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::DivideElement(), EXCEPTION, VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetCentroidOfElement(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetElement(), Node< SPACE_DIM >::GetIndex(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetIndex(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNode(), VertexElement< ELEMENT_DIM, SPACE_DIM >::GetNodeLocalIndex(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNodeLocation(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetVectorFromAtoB(), Node< SPACE_DIM >::IsBoundaryNode(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mCellRearrangementRatio, MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mCellRearrangementThreshold, Node< SPACE_DIM >::rGetContainingElementIndices(), and Node< SPACE_DIM >::rGetLocation().
Referenced by VertexBasedCellPopulation< DIM >::AddCell(), and MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::DivideElementAlongShortAxis().
unsigned MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::AddElement | ( | VertexElement< ELEMENT_DIM, SPACE_DIM > * | pNewElement | ) | [inline] |
Add an element to the mesh.
pNewElement | the new element |
Definition at line 237 of file MutableVertexMesh.cpp.
References AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetIndex(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::mElements, and VertexElement< ELEMENT_DIM, SPACE_DIM >::RegisterWithNodes().
Referenced by MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::DivideElement().
void MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::Clear | ( | ) | [inline, virtual] |
Delete mNodes and mElements.
Reimplemented from VertexMesh< ELEMENT_DIM, SPACE_DIM >.
Definition at line 161 of file MutableVertexMesh.cpp.
References VertexMesh< ELEMENT_DIM, SPACE_DIM >::Clear(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mDeletedElementIndices, and MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mDeletedNodeIndices.
Referenced by MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::MutableVertexMesh(), and MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::~MutableVertexMesh().
void MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::DivideEdge | ( | Node< SPACE_DIM > * | pNodeA, | |
Node< SPACE_DIM > * | pNodeB | |||
) | [inline] |
Add a node on the edge between two nodes.
pNodeA | a pointer to one node | |
pNodeB | a pointer to the other nodes |
Definition at line 609 of file MutableVertexMesh.cpp.
References VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetElement(), Node< SPACE_DIM >::GetIndex(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetVectorFromAtoB(), Node< SPACE_DIM >::IsBoundaryNode(), AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mNodes, Node< SPACE_DIM >::rGetContainingElementIndices(), Node< SPACE_DIM >::rGetLocation(), and Node< SPACE_DIM >::SetPoint().
void MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::RemoveDeletedNodesAndElements | ( | VertexElementMap & | rElementMap | ) | [inline] |
Helper method for ReMesh(). Removes the deleted nodes and elements from the mesh and updates the rElementMap accordingly.
rElementMap | a VertexElementMap which associates the indices of VertexElements in the old mesh with indices of VertexElements in the new mesh. This should be created with the correct size, GetNumElements() |
Definition at line 675 of file MutableVertexMesh.cpp.
References VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetNumAllElements(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mDeletedElementIndices, VertexMesh< ELEMENT_DIM, SPACE_DIM >::mElements, MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::RemoveDeletedNodes(), VertexElementMap::Resize(), VertexElementMap::SetDeleted(), and VertexElementMap::SetNewIndex().
Referenced by MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::CheckForT2Swaps(), and MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::ReMesh().
void MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::RemoveDeletedNodes | ( | ) | [inline] |
Helper method for ReMesh(). Removes the deleted nodes from the mesh and relabels the node indices.
Definition at line 714 of file MutableVertexMesh.cpp.
References MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mDeletedNodeIndices, and AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mNodes.
Referenced by MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::IdentifySwapType(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformVoidRemoval(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::ReMesh(), and MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::RemoveDeletedNodesAndElements().
void MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::ReMesh | ( | VertexElementMap & | rElementMap | ) | [inline] |
Re-mesh the mesh.
rElementMap | a VertexElementMap which associates the indices of VertexElements in the old mesh with indices of VertexElements in the new mesh. This should be created with the correct size, GetNumElements() |
Definition at line 741 of file MutableVertexMesh.cpp.
References MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::CheckForIntersections(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::CheckForT1Swaps(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::CheckForT2Swaps(), EXCEPTION, MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::RemoveDeletedNodes(), and MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::RemoveDeletedNodesAndElements().
Referenced by VertexBasedCellPopulation< DIM >::Update().
void MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::ReMesh | ( | ) | [inline] |
Alternative version of remesh which takes no parameters does not require a VertexElementMap. Note: inherited classes should overload ReMesh(VertexElementMap&).
Definition at line 792 of file MutableVertexMesh.cpp.
References MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::GetNumElements().
friend class boost::serialization::access [friend] |
Needed for serialization.
Reimplemented from VertexMesh< ELEMENT_DIM, SPACE_DIM >.
Reimplemented in Cylindrical2dVertexMesh.
Definition at line 205 of file MutableVertexMesh.hpp.
double MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mCellRearrangementThreshold [protected] |
The minimum distance apart that two nodes in the mesh can be without causing element rearrangement.
Definition at line 59 of file MutableVertexMesh.hpp.
Referenced by MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::CheckForT1Swaps(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::DivideElementAlongGivenAxis(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::GetCellRearrangementThreshold(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformT1Swap(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformT3Swap(), MutableVertexMesh< DIM, DIM >::serialize(), and MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::SetCellRearrangementThreshold().
double MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mCellRearrangementRatio [protected] |
The ratio between the minimum distance apart that two nodes in the mesh can be without causing element rearrangement and their separation after remeshing.
Definition at line 65 of file MutableVertexMesh.hpp.
Referenced by MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::DivideElementAlongGivenAxis(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::GetCellRearrangementRatio(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformT1Swap(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformT3Swap(), MutableVertexMesh< DIM, DIM >::serialize(), and MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::SetCellRearrangementRatio().
double MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mT2Threshold [protected] |
The area threshold at which T2 swaps occur in an apoptotic, triangular cell/element
Definition at line 68 of file MutableVertexMesh.hpp.
Referenced by MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::GetT2Threshold(), MutableVertexMesh< DIM, DIM >::serialize(), and MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::SetT2Threshold().
std::vector<unsigned> MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mDeletedNodeIndices [protected] |
Indices of nodes that have been deleted. These indices can be reused when adding new elements/nodes.
Definition at line 71 of file MutableVertexMesh.hpp.
Referenced by MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::AddNode(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::Clear(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::DeleteElementPriorToReMesh(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformNodeMerge(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformT2Swap(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformT3Swap(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::RemoveDeletedNodes(), and MutableVertexMesh< DIM, DIM >::serialize().
std::vector<unsigned> MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mDeletedElementIndices [protected] |
Indices of elements that have been deleted. These indices can be reused when adding new elements.
Definition at line 74 of file MutableVertexMesh.hpp.
Referenced by MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::Clear(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::DeleteElementPriorToReMesh(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::DivideElement(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::GetNumElements(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformT2Swap(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::RemoveDeletedNodesAndElements(), and MutableVertexMesh< DIM, DIM >::serialize().
std::vector< c_vector<double, SPACE_DIM> > MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mLocationsOfT1Swaps [protected] |
Locations of T1Swaps (the mid point of the moving nodes), stored so they can be accessed and output by the cell population. The locations are stored until they are cleared by ClearLocationsOfT1Swaps()
Definition at line 80 of file MutableVertexMesh.hpp.
Referenced by MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::ClearLocationsOfT1Swaps(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::GetLocationsOfT1Swaps(), and MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformT1Swap().
std::vector< c_vector<double, SPACE_DIM> > MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::mLocationsOfT3Swaps [protected] |
Locations of T3Swaps (the location of the intersection with the edge), stored so they can be accessed and output by the cell population. The locations are stored until they are cleared by ClearLocationsOfT3Swaps()
Definition at line 86 of file MutableVertexMesh.hpp.
Referenced by MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::ClearLocationsOfT3Swaps(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::GetLocationsOfT3Swaps(), and MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformT3Swap().