VertexMesh< ELEMENT_DIM, SPACE_DIM > Class Template Reference

#include <VertexMesh.hpp>

Inherits AbstractMesh< ELEMENT_DIM, SPACE_DIM >.

Inherited by MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >, MutableVertexMesh< 2, 2 >, and MutableVertexMesh< DIM, DIM >.

Collaboration diagram for VertexMesh< ELEMENT_DIM, SPACE_DIM >:
Collaboration graph
[legend]

List of all members.

Classes

class  VertexElementIterator

Public Member Functions

VertexElementIterator GetElementIteratorBegin (bool skipDeletedElements=true)
VertexElementIterator GetElementIteratorEnd ()
 VertexMesh (std::vector< Node< SPACE_DIM > * > nodes, std::vector< VertexElement< ELEMENT_DIM, SPACE_DIM > * > vertexElements)
 VertexMesh (std::vector< Node< SPACE_DIM > * > nodes, std::vector< VertexElement< ELEMENT_DIM-1, SPACE_DIM > * > faces, std::vector< VertexElement< ELEMENT_DIM, SPACE_DIM > * > vertexElements)
 VertexMesh (TetrahedralMesh< 2, 2 > &rMesh, bool isPeriodic=false)
 VertexMesh (TetrahedralMesh< 3, 3 > &rMesh)
 VertexMesh ()
virtual ~VertexMesh ()
virtual unsigned GetNumNodes () const
virtual unsigned GetNumElements () const
unsigned GetNumAllElements () const
virtual unsigned GetNumFaces () const
VertexElement< ELEMENT_DIM,
SPACE_DIM > * 
GetElement (unsigned index) const
VertexElement< ELEMENT_DIM-1,
SPACE_DIM > * 
GetFace (unsigned index) const
virtual c_vector< double,
SPACE_DIM > 
GetCentroidOfElement (unsigned index)
void ConstructFromMeshReader (AbstractMeshReader< ELEMENT_DIM, SPACE_DIM > &rMeshReader)
virtual void Clear ()
unsigned GetDelaunayNodeIndexCorrespondingToVoronoiElementIndex (unsigned elementIndex)
unsigned GetVoronoiElementIndexCorrespondingToDelaunayNodeIndex (unsigned nodeIndex)
virtual c_vector< double,
SPACE_DIM > 
GetVectorFromAtoB (const c_vector< double, SPACE_DIM > &rLocationA, const c_vector< double, SPACE_DIM > &rLocationB)
virtual double GetVolumeOfElement (unsigned index)
virtual double GetSurfaceAreaOfElement (unsigned index)
c_vector< double, SPACE_DIM > GetAreaGradientOfElementAtNode (VertexElement< ELEMENT_DIM, SPACE_DIM > *pElement, unsigned localIndex)
c_vector< double, SPACE_DIM > GetPreviousEdgeGradientOfElementAtNode (VertexElement< ELEMENT_DIM, SPACE_DIM > *pElement, unsigned localIndex)
c_vector< double, SPACE_DIM > GetNextEdgeGradientOfElementAtNode (VertexElement< ELEMENT_DIM, SPACE_DIM > *pElement, unsigned localIndex)
c_vector< double, SPACE_DIM > GetPerimeterGradientOfElementAtNode (VertexElement< ELEMENT_DIM, SPACE_DIM > *pElement, unsigned localIndex)
virtual c_vector< double, 3 > CalculateMomentsOfElement (unsigned index)
double GetEdgeLength (unsigned elementIndex1, unsigned elementIndex2)
c_vector< double, SPACE_DIM > GetUnitNormalToFace (VertexElement< ELEMENT_DIM-1, SPACE_DIM > *pFace)
virtual double GetAreaOfFace (VertexElement< ELEMENT_DIM-1, SPACE_DIM > *pFace)
c_vector< double, SPACE_DIM > GetShortAxisOfElement (unsigned index)
std::set< unsignedGetNeighbouringNodeIndices (unsigned nodeIndex)
std::set< unsignedGetNeighbouringNodeNotAlsoInElement (unsigned nodeIndex, unsigned elemIndex)
std::set< unsignedGetNeighbouringElementIndices (unsigned elementIndex)
template<>
 VertexMesh (TetrahedralMesh< 2, 2 > &rMesh, bool isPeriodic)
template<>
 VertexMesh (TetrahedralMesh< 3, 3 > &rMesh)

Protected Member Functions

unsigned SolveNodeMapping (unsigned index) const
unsigned SolveElementMapping (unsigned index) const
unsigned SolveBoundaryElementMapping (unsigned index) const
void GenerateVerticesFromElementCircumcentres (TetrahedralMesh< ELEMENT_DIM, SPACE_DIM > &rMesh)
bool ElementIncludesPoint (const c_vector< double, SPACE_DIM > &rTestPoint, unsigned elementIndex)
unsigned GetLocalIndexForElementEdgeClosestToPoint (const c_vector< double, SPACE_DIM > &rTestPoint, unsigned elementIndex)
template<class Archive >
void save (Archive &archive, const unsigned int version) const
template<class Archive >
void load (Archive &archive, const unsigned int version)

Protected Attributes

std::vector< VertexElement
< ELEMENT_DIM, SPACE_DIM > * > 
mElements
std::vector< VertexElement
< ELEMENT_DIM-1, SPACE_DIM > * > 
mFaces
std::map< unsigned, unsignedmVoronoiElementIndexMap
TetrahedralMesh< ELEMENT_DIM,
SPACE_DIM > * 
mpDelaunayMesh

Friends

class TestVertexMesh
class boost::serialization::access

Detailed Description

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
class VertexMesh< ELEMENT_DIM, SPACE_DIM >

A vertex-based mesh class, for use in vertex-based simulations.

Definition at line 56 of file VertexMesh.hpp.


Constructor & Destructor Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
VertexMesh< ELEMENT_DIM, SPACE_DIM >::VertexMesh ( std::vector< Node< SPACE_DIM > * >  nodes,
std::vector< VertexElement< ELEMENT_DIM, SPACE_DIM > * >  vertexElements 
) [inline]
template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
VertexMesh< ELEMENT_DIM, SPACE_DIM >::VertexMesh ( std::vector< Node< SPACE_DIM > * >  nodes,
std::vector< VertexElement< ELEMENT_DIM-1, SPACE_DIM > * >  faces,
std::vector< VertexElement< ELEMENT_DIM, SPACE_DIM > * >  vertexElements 
) [inline]
template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
VertexMesh< ELEMENT_DIM, SPACE_DIM >::VertexMesh ( TetrahedralMesh< 2, 2 > &  rMesh,
bool  isPeriodic = false 
)

Alternative 2D 'Voronoi' constructor. Creates a Voronoi tessellation of a given tetrahedral mesh, which must be Delaunay (see TetrahedralMesh::CheckIsVoronoi).

Todo:
Merge with 3D Voronoi constructor? (#1075)
Parameters:
rMesh a tetrahedral mesh
isPeriodic a boolean that indicates whether the mesh is periodic or not
template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
VertexMesh< ELEMENT_DIM, SPACE_DIM >::VertexMesh ( TetrahedralMesh< 3, 3 > &  rMesh  ) 

Alternative 3D 'Voronoi' constructor. Creates a Voronoi tessellation of a given tetrahedral mesh, which must be Delaunay (see TetrahedralMesh::CheckIsVoronoi).

Todo:
Merge with 2D Voronoi constructor? (#1075)
Parameters:
rMesh a tetrahedral mesh
template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
VertexMesh< ELEMENT_DIM, SPACE_DIM >::VertexMesh (  )  [inline]
template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
VertexMesh< ELEMENT_DIM, SPACE_DIM >::~VertexMesh (  )  [inline, virtual]

Destructor.

Definition at line 457 of file VertexMesh.cpp.

References VertexMesh< ELEMENT_DIM, SPACE_DIM >::Clear().

template<>
VertexMesh< 2, 2 >::VertexMesh ( TetrahedralMesh< 2, 2 > &  rMesh,
bool  isPeriodic 
) [inline]

This VertexMesh constructor is currently only defined for 2D meshes.

Parameters:
rMesh a tetrahedral mesh
isPeriodic a boolean that indicates whether the mesh is periodic or not

Create a std::vector of pairs, where each pair comprises the angle between the centre of the Voronoi element and each node with that node's global index in the Voronoi mesh.

Definition at line 147 of file VertexMesh.cpp.

References VertexMesh< ELEMENT_DIM, SPACE_DIM >::Clear(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GenerateVerticesFromElementCircumcentres(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::mElements, AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mMeshChangesDuringSimulation, AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mNodes, and VertexMesh< ELEMENT_DIM, SPACE_DIM >::mpDelaunayMesh.

template<>
VertexMesh< 3, 3 >::VertexMesh ( TetrahedralMesh< 3, 3 > &  rMesh  )  [inline]

Member Function Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
c_vector< double, 3 > VertexMesh< ELEMENT_DIM, SPACE_DIM >::CalculateMomentsOfElement ( unsigned  index  )  [inline, virtual]
template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void VertexMesh< ELEMENT_DIM, SPACE_DIM >::Clear (  )  [inline, virtual]
template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void VertexMesh< ELEMENT_DIM, SPACE_DIM >::ConstructFromMeshReader ( AbstractMeshReader< ELEMENT_DIM, SPACE_DIM > &  rMeshReader  ) 

Construct the mesh using a MeshReader.

Parameters:
rMeshReader the mesh reader

Referenced by VertexMesh< DIM, DIM >::load().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
bool VertexMesh< ELEMENT_DIM, SPACE_DIM >::ElementIncludesPoint ( const c_vector< double, SPACE_DIM > &  rTestPoint,
unsigned  elementIndex 
) [inline, protected]

Test whether a given point lies inside a given element.

We use a ray-casting algorithm, which relies on the following result: if the point in question is not on the boundary of the element, then the number of intersections is an even number if the point is outside, and it is odd if inside.

Currently the method is coded 'strictly', such that points lying on an edge or at a vertex are considered to lie outside the element.

Parameters:
rTestPoint the point to test
elementIndex global index of the element in the mesh
Returns:
if the point is included in the element.

Definition at line 1089 of file VertexMesh.cpp.

References VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetElement(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNodeLocation(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), and VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetVectorFromAtoB().

Referenced by MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::CheckForIntersections().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void VertexMesh< ELEMENT_DIM, SPACE_DIM >::GenerateVerticesFromElementCircumcentres ( TetrahedralMesh< ELEMENT_DIM, SPACE_DIM > &  rMesh  )  [inline, protected]

Populate mNodes with locations corresponding to the element circumcentres of a given TetrahedralMesh. Used by 'Voronoi' constructors.

Parameters:
rMesh a tetrahedral mesh

Definition at line 383 of file VertexMesh.cpp.

References AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetElement(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetInverseJacobianForElement(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetNumElements(), and AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mNodes.

Referenced by VertexMesh< ELEMENT_DIM, SPACE_DIM >::VertexMesh().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
c_vector< double, SPACE_DIM > VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetAreaGradientOfElementAtNode ( VertexElement< ELEMENT_DIM, SPACE_DIM > *  pElement,
unsigned  localIndex 
) [inline]

Compute the area gradient of a 2D element at one of its nodes.

N.B. This calls GetVectorFromAtoB(), which can be overridden in daughter classes for non-Euclidean metrics.

Parameters:
pElement pointer to a specified vertex element
localIndex local index of a node in this element
Returns:
the gradient of the area of the element, evaluated at this node.

Definition at line 1305 of file VertexMesh.cpp.

References AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNodeLocation(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), and VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetVectorFromAtoB().

Referenced by NagaiHondaForce< DIM >::AddForceContribution().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
double VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetAreaOfFace ( VertexElement< ELEMENT_DIM-1, SPACE_DIM > *  pFace  )  [inline, virtual]

Get the area of a given face in 3D. This is achieved by projecting the face onto a 2D plane. To avoid degeneracy and optimize robustness, we choose to ignore the dimension of the component of the unit normal to the plane with the greatest absolute value.

This needs to be overridden in daughter classes for non-Euclidean metrics.

Parameters:
pFace a face in the mesh
Returns:
the area

Definition at line 1412 of file VertexMesh.cpp.

References AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNodeLocation(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), and VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetUnitNormalToFace().

Referenced by VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetSurfaceAreaOfElement(), and VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetVolumeOfElement().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
c_vector< double, SPACE_DIM > VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetCentroidOfElement ( unsigned  index  )  [inline, virtual]
template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
unsigned VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetDelaunayNodeIndexCorrespondingToVoronoiElementIndex ( unsigned  elementIndex  )  [inline]

Given the global index of an element in the Voronoi mesh, returns the global index of the corresponding element in the Delaunay mesh.

Parameters:
elementIndex global index of an element in the Voronoi mesh

Definition at line 489 of file VertexMesh.cpp.

References VertexMesh< ELEMENT_DIM, SPACE_DIM >::mVoronoiElementIndexMap, and UNSIGNED_UNSET.

Referenced by MeshBasedCellPopulation< DIM >::WriteCellPopulationVolumeResultsToFile(), MeshBasedCellPopulation< DIM >::WriteCellVolumeResultsToFile(), MeshBasedCellPopulation< DIM >::WriteVoronoiResultsToFile(), MeshBasedCellPopulationWithGhostNodes< DIM >::WriteVtkResultsToFile(), and MeshBasedCellPopulation< DIM >::WriteVtkResultsToFile().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
double VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetEdgeLength ( unsigned  elementIndex1,
unsigned  elementIndex2 
) [inline]

Get the length of the edge separating two given elements in 2D.

Parameters:
elementIndex1 index of an element in the mesh
elementIndex2 index of an element in the mesh

Definition at line 409 of file VertexMesh.cpp.

References EXCEPTION, VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetVectorFromAtoB(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::mElements, and AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mNodes.

Referenced by MeshBasedCellPopulation< DIM >::GetVoronoiEdgeLength().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
VertexElement< ELEMENT_DIM, SPACE_DIM > * VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetElement ( unsigned  index  )  const [inline]
Parameters:
index the global index of a specified vertex element.
Returns:
a pointer to the vertex element

Definition at line 597 of file VertexMesh.cpp.

References VertexMesh< ELEMENT_DIM, SPACE_DIM >::mElements.

Referenced by VertexMesh< ELEMENT_DIM, SPACE_DIM >::CalculateMomentsOfElement(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::CheckForT1Swaps(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::DivideEdge(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::DivideElementAlongGivenAxis(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::ElementIncludesPoint(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetCentroidOfElement(), Cylindrical2dVertexMesh::GetCentroidOfElement(), VertexBasedCellPopulation< DIM >::GetElement(), VertexBasedCellPopulation< DIM >::GetElementCorrespondingToCell(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetLocalIndexForElementEdgeClosestToPoint(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetNeighbouringElementIndices(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetNeighbouringNodeIndices(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetNeighbouringNodeNotAlsoInElement(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetSurfaceAreaOfElement(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetVolumeOfElement(), Cylindrical2dVertexMesh::GetVolumeOfElement(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformIntersectionSwap(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformT2Swap(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformT3Swap(), and VertexBasedCellPopulation< DIM >::WriteResultsToFiles().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
VertexMesh< ELEMENT_DIM, SPACE_DIM >::VertexElementIterator VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetElementIteratorBegin ( bool  skipDeletedElements = true  )  [inline]
template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
VertexMesh< ELEMENT_DIM, SPACE_DIM >::VertexElementIterator VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetElementIteratorEnd (  )  [inline]
template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
VertexElement< ELEMENT_DIM-1, SPACE_DIM > * VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetFace ( unsigned  index  )  const [inline]
Parameters:
index the global index of a specified face.
Returns:
a pointer to the face

Definition at line 605 of file VertexMesh.cpp.

References VertexMesh< ELEMENT_DIM, SPACE_DIM >::mFaces.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
unsigned VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetLocalIndexForElementEdgeClosestToPoint ( const c_vector< double, SPACE_DIM > &  rTestPoint,
unsigned  elementIndex 
) [inline, protected]

Get the local index of a given element which is the start vertex of the edge of the element that the overlapping point rTestPoint is closest to.

Parameters:
rTestPoint the point to test
elementIndex global index of the element in the mesh
Returns:
the local index

Definition at line 1155 of file VertexMesh.cpp.

References VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetElement(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNodeLocation(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), and VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetVectorFromAtoB().

Referenced by MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformIntersectionSwap(), and MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformT3Swap().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
std::set< unsigned > VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetNeighbouringElementIndices ( unsigned  elementIndex  )  [inline]

Given an element, find a set containing the indices of its neighbouring elements.

Parameters:
elementIndex global index of the element
Returns:
its neighbouring element indices

Definition at line 741 of file VertexMesh.cpp.

References VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetElement(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNode(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), and Node< SPACE_DIM >::rGetContainingElementIndices().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
std::set< unsigned > VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetNeighbouringNodeIndices ( unsigned  nodeIndex  )  [inline]

Given a node, find a set containing the indices of its neighbouring nodes.

Parameters:
nodeIndex global index of the node
Returns:
its neighbouring node indices

Definition at line 669 of file VertexMesh.cpp.

References VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetElement(), and AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetNode().

Referenced by VertexBasedCellPopulation< DIM >::GetNeighbouringNodeIndices(), and VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetNeighbouringNodeNotAlsoInElement().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
std::set< unsigned > VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetNeighbouringNodeNotAlsoInElement ( unsigned  nodeIndex,
unsigned  elemIndex 
) [inline]

Given a node and one of its containing elements, find a set containing the indices of those neighbouring node(s) that are NOT also in the element.

Note that we allow for more than one such index, since there is no reason a priori to assume that each node is contained by exactly three elements.

Parameters:
nodeIndex global index of the node
elemIndex global index of the element
Returns:
its neighbouring nodes that are not in the element

Definition at line 700 of file VertexMesh.cpp.

References EXCEPTION, VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetElement(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetNeighbouringNodeIndices(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNodeGlobalIndex(), and AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNumNodes().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
c_vector< double, SPACE_DIM > VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetNextEdgeGradientOfElementAtNode ( VertexElement< ELEMENT_DIM, SPACE_DIM > *  pElement,
unsigned  localIndex 
) [inline]

Compute the gradient of the edge of a 2D element starting at its nodes.

N.B. This calls GetVectorFromAtoB(), which can be overridden in daughter classes for non-Euclidean metrics.

Parameters:
pElement pointer to a specified vertex element
localIndex local index of a node in this element
Returns:
the gradient of the edge of the element that starts at this node.

Definition at line 1351 of file VertexMesh.cpp.

References AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetDistanceBetweenNodes(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNodeGlobalIndex(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNodeLocation(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), and VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetVectorFromAtoB().

Referenced by NagaiHondaForce< DIM >::AddForceContribution(), and VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetPerimeterGradientOfElementAtNode().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
unsigned VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetNumAllElements (  )  const [inline]
Returns:
the number of VertexElements in the mesh, including those marked as deleted.

Definition at line 583 of file VertexMesh.cpp.

References VertexMesh< ELEMENT_DIM, SPACE_DIM >::mElements.

Referenced by MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::RemoveDeletedNodesAndElements(), and VertexBasedCellPopulation< DIM >::Update().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
unsigned VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetNumElements (  )  const [inline, virtual]
template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
unsigned VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetNumFaces (  )  const [inline, virtual]
Returns:
the number of Faces in the mesh.

Definition at line 590 of file VertexMesh.cpp.

References VertexMesh< ELEMENT_DIM, SPACE_DIM >::mFaces.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
unsigned VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetNumNodes (  )  const [inline, virtual]
template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
c_vector< double, SPACE_DIM > VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetPerimeterGradientOfElementAtNode ( VertexElement< ELEMENT_DIM, SPACE_DIM > *  pElement,
unsigned  localIndex 
) [inline]

Compute the gradient of the perimeter of a 2D element at its nodes. This returns the sum of GetPreviousEdgeGradientAtNode() and GetNextEdgeGradientAtNode().

Parameters:
pElement pointer to a specified vertex element
localIndex local index of a node in this element
Returns:
the gradient of the perimeter of the element, evaluated at this node.

Definition at line 1370 of file VertexMesh.cpp.

References VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetNextEdgeGradientOfElementAtNode(), and VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetPreviousEdgeGradientOfElementAtNode().

Referenced by NagaiHondaForce< DIM >::AddForceContribution().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
c_vector< double, SPACE_DIM > VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetPreviousEdgeGradientOfElementAtNode ( VertexElement< ELEMENT_DIM, SPACE_DIM > *  pElement,
unsigned  localIndex 
) [inline]

Compute the gradient of the edge of a 2D element ending at its nodes.

N.B. This calls GetVectorFromAtoB(), which can be overridden in daughter classes for non-Euclidean metrics.

Parameters:
pElement pointer to a specified vertex element
localIndex local index of a node in this element
Returns:
the gradient of the edge of the element that ends at this node.

Definition at line 1329 of file VertexMesh.cpp.

References AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetDistanceBetweenNodes(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNodeGlobalIndex(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNodeLocation(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), and VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetVectorFromAtoB().

Referenced by NagaiHondaForce< DIM >::AddForceContribution(), and VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetPerimeterGradientOfElementAtNode().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
c_vector< double, SPACE_DIM > VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetShortAxisOfElement ( unsigned  index  )  [inline]

Calculate the vector of the shortest axis of a given 2D element. This is the eigenvector associated with the largest eigenvalue of the inertial tensor. If the polygon is regular then the eigenvalues are the same, so we return a random unit vector.

Parameters:
index the global index of a specified vertex element
Returns:
(short_axis_x, short_axis_y).

Todo:
remove magic number? (#1884)

Definition at line 1262 of file VertexMesh.cpp.

References VertexMesh< ELEMENT_DIM, SPACE_DIM >::CalculateMomentsOfElement(), RandomNumberGenerator::Instance(), and RandomNumberGenerator::ranf().

Referenced by MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::DivideElementAlongShortAxis().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
double VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetSurfaceAreaOfElement ( unsigned  index  )  [inline, virtual]
template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
c_vector< double, SPACE_DIM > VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetUnitNormalToFace ( VertexElement< ELEMENT_DIM-1, SPACE_DIM > *  pFace  )  [inline]

Compute the unit normal vector to a given face in 3D. This is achieved from a triangle of vertices of the face. Note: this may return the outward or inward normal, depending on your point of view.

Parameters:
pFace a face in the mesh
Returns:
the unit normal

Definition at line 1387 of file VertexMesh.cpp.

References AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNode(), and VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetVectorFromAtoB().

Referenced by VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetAreaOfFace(), and VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetVolumeOfElement().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
unsigned SPACE_DIM c_vector< double, SPACE_DIM > VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetVectorFromAtoB ( const c_vector< double, SPACE_DIM > &  rLocationA,
const c_vector< double, SPACE_DIM > &  rLocationB 
) [virtual]

Overridden GetVectorFromAtoB() method. Returns a vector between two points in space.

If the mesh is being used to represent a Voronoi tessellation, and mpDelaunayMesh is not NULL, then use that to compute GetVectorFromAtoB.

Parameters:
rLocationA a c_vector of coordinates
rLocationB a c_vector of coordinates
Returns:
c_vector from location A to location B.

Reimplemented from AbstractMesh< ELEMENT_DIM, SPACE_DIM >.

Definition at line 975 of file VertexMesh.cpp.

References VertexMesh< ELEMENT_DIM, SPACE_DIM >::mpDelaunayMesh.

Referenced by WelikyOsterForce< DIM >::AddForceContribution(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::CalculateMomentsOfElement(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::DivideEdge(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::DivideElementAlongGivenAxis(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::ElementIncludesPoint(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetAreaGradientOfElementAtNode(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetEdgeLength(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetLocalIndexForElementEdgeClosestToPoint(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetNextEdgeGradientOfElementAtNode(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetPreviousEdgeGradientOfElementAtNode(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetUnitNormalToFace(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetVolumeOfElement(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformNodeMerge(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformT1Swap(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformT3Swap(), and MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::PerformVoidRemoval().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
double VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetVolumeOfElement ( unsigned  index  )  [inline, virtual]

Get the volume (or area in 2D, or length in 1D) of an element.

This needs to be overridden in daughter classes for non-Euclidean metrics.

Parameters:
index the global index of a specified vertex element
Returns:
the volume of the element

Reimplemented in Cylindrical2dVertexMesh.

Definition at line 992 of file VertexMesh.cpp.

References VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetAreaOfFace(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetElement(), VertexElement< ELEMENT_DIM, SPACE_DIM >::GetFace(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNodeLocation(), VertexElement< ELEMENT_DIM, SPACE_DIM >::GetNumFaces(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetUnitNormalToFace(), and VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetVectorFromAtoB().

Referenced by WelikyOsterForce< DIM >::AddForceContribution(), NagaiHondaForce< DIM >::AddForceContribution(), MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::CheckForT2Swaps(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetCentroidOfElement(), MeshBasedCellPopulation< DIM >::GetVolumeOfVoronoiElement(), VolumeTrackedOffLatticeSimulation< DIM >::PostSolve(), MeshBasedCellPopulation< DIM >::WriteCellPopulationVolumeResultsToFile(), VertexBasedCellPopulation< DIM >::WriteCellVolumeResultsToFile(), MeshBasedCellPopulation< DIM >::WriteCellVolumeResultsToFile(), MeshBasedCellPopulation< DIM >::WriteVoronoiResultsToFile(), VertexBasedCellPopulation< DIM >::WriteVtkResultsToFile(), MeshBasedCellPopulationWithGhostNodes< DIM >::WriteVtkResultsToFile(), and MeshBasedCellPopulation< DIM >::WriteVtkResultsToFile().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
unsigned VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetVoronoiElementIndexCorrespondingToDelaunayNodeIndex ( unsigned  nodeIndex  )  [inline]

Given the global index of a node in the Delaunay mesh, returns the global index of the corresponding element in the Voronoi mesh or throws an exception if this does not exist.

Parameters:
nodeIndex global index of a node in the Delaunay mesh

Definition at line 516 of file VertexMesh.cpp.

References EXCEPTION, VertexMesh< ELEMENT_DIM, SPACE_DIM >::mVoronoiElementIndexMap, and UNSIGNED_UNSET.

Referenced by MeshBasedCellPopulation< DIM >::GetSurfaceAreaOfVoronoiElement(), MeshBasedCellPopulation< DIM >::GetVolumeOfVoronoiElement(), and MeshBasedCellPopulation< DIM >::GetVoronoiEdgeLength().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
template<class Archive >
void VertexMesh< ELEMENT_DIM, SPACE_DIM >::load ( Archive &  archive,
const unsigned int  version 
) [inline, protected]

Loads a mesh by using VertexMeshReader and the location in ArchiveLocationInfo.

Parameters:
archive the archive
version the current version of this class

Definition at line 181 of file VertexMesh.hpp.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
template<class Archive >
void VertexMesh< ELEMENT_DIM, SPACE_DIM >::save ( Archive &  archive,
const unsigned int  version 
) const [inline, protected]

Archive the VertexMesh and its member variables. Note that this will write out a VertexMeshWriter file to wherever ArchiveLocationInfo has specified.

Parameters:
archive the archive
version the current version of this class

Definition at line 163 of file VertexMesh.hpp.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
unsigned VertexMesh< ELEMENT_DIM, SPACE_DIM >::SolveBoundaryElementMapping ( unsigned  index  )  const [inline, protected]

Solve boundary element mapping method. This overridden method is required as it is pure virtual in the base class.

Parameters:
index the global index of the boundary element

Todo:
sort out boundary elements in a vertex mesh (#1263)

Definition at line 480 of file VertexMesh.cpp.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
unsigned VertexMesh< ELEMENT_DIM, SPACE_DIM >::SolveElementMapping ( unsigned  index  )  const [inline, protected]

Solve element mapping method. This overridden method is required as it is pure virtual in the base class.

Parameters:
index the global index of the element

Definition at line 472 of file VertexMesh.cpp.

References VertexMesh< ELEMENT_DIM, SPACE_DIM >::mElements.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
unsigned VertexMesh< ELEMENT_DIM, SPACE_DIM >::SolveNodeMapping ( unsigned  index  )  const [inline, protected, virtual]

Solve node mapping method. This overridden method is required as it is pure virtual in the base class.

Parameters:
index the global index of the node

Implements AbstractMesh< ELEMENT_DIM, SPACE_DIM >.

Definition at line 464 of file VertexMesh.cpp.

References AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mNodes.


Friends And Related Function Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
friend class boost::serialization::access [friend]

Member Data Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
std::vector<VertexElement<ELEMENT_DIM, SPACE_DIM>*> VertexMesh< ELEMENT_DIM, SPACE_DIM >::mElements [protected]
template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
std::vector<VertexElement<ELEMENT_DIM-1, SPACE_DIM>*> VertexMesh< ELEMENT_DIM, SPACE_DIM >::mFaces [protected]
template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
TetrahedralMesh<ELEMENT_DIM, SPACE_DIM>* VertexMesh< ELEMENT_DIM, SPACE_DIM >::mpDelaunayMesh [protected]

Delaunay tetrahedral mesh that is used only when the vertex mesh is used to represent a Voronoi tessellation. A pointer to the Delaunay mesh is required in this case because the Delaunay mesh may be a subclass of TetrahedralMesh, which overrides methods such as GetVectorFromAtoB().

Definition at line 84 of file VertexMesh.hpp.

Referenced by VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetVectorFromAtoB(), and VertexMesh< ELEMENT_DIM, SPACE_DIM >::VertexMesh().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
std::map<unsigned, unsigned> VertexMesh< ELEMENT_DIM, SPACE_DIM >::mVoronoiElementIndexMap [protected]

Map that is used only when the vertex mesh is used to represent a Voronoi tessellation, the dual to a Delaunay tetrahedral mesh. The map consists of pairs (index1, index2), where index1 denotes the global index of a node in the Delaunay mesh and index2 denotes the global index of the corresponding element in the Voronoi mesh.

Definition at line 75 of file VertexMesh.hpp.

Referenced by VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetDelaunayNodeIndexCorrespondingToVoronoiElementIndex(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetVoronoiElementIndexCorrespondingToDelaunayNodeIndex(), and VertexMesh< ELEMENT_DIM, SPACE_DIM >::VertexMesh().


The documentation for this class was generated from the following files:
Generated on Thu Dec 22 13:08:12 2011 for Chaste by  doxygen 1.6.3