Chaste Release::3.1
VertexMesh< ELEMENT_DIM, SPACE_DIM > Class Template Reference

#include <VertexMesh.hpp>

Inheritance diagram for VertexMesh< ELEMENT_DIM, SPACE_DIM >:
Collaboration diagram for VertexMesh< ELEMENT_DIM, SPACE_DIM >:

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 63 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 
)
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 
)
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:
rMesha tetrahedral mesh
isPeriodica 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:
rMesha tetrahedral mesh
template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
VertexMesh< ELEMENT_DIM, SPACE_DIM >::VertexMesh ( )

Default constructor for use by serializer.

Definition at line 455 of file VertexMesh.cpp.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
VertexMesh< ELEMENT_DIM, SPACE_DIM >::~VertexMesh ( ) [virtual]

Destructor.

Definition at line 464 of file VertexMesh.cpp.

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

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

Parameters:
rMesha tetrahedral mesh
isPeriodica 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 154 of file VertexMesh.cpp.

References MutableElement< ELEMENT_DIM, SPACE_DIM >::AddNode(), 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.


Member Function Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
c_vector< double, 3 > VertexMesh< ELEMENT_DIM, SPACE_DIM >::CalculateMomentsOfElement ( unsigned  index) [virtual]

Compute the second moments of area of a given 2D element.

Parameters:
indexthe global index of a specified vertex element
Returns:
(Ixx,Iyy,Ixy).

Definition at line 1212 of file VertexMesh.cpp.

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

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void VertexMesh< ELEMENT_DIM, SPACE_DIM >::Clear ( ) [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:
rMeshReaderthe 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 
) [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:
rTestPointthe point to test
elementIndexglobal index of the element in the mesh
Returns:
if the point is included in the element.

Definition at line 1096 of file VertexMesh.cpp.

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

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

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

Parameters:
rMesha tetrahedral mesh

Definition at line 390 of file VertexMesh.cpp.

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

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 
)

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:
pElementpointer to a specified vertex element
localIndexlocal index of a node in this element
Returns:
the gradient of the area of the element, evaluated at this node.

Definition at line 1312 of file VertexMesh.cpp.

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

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) [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:
pFacea face in the mesh
Returns:
the area

Definition at line 1419 of file VertexMesh.cpp.

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

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

Compute the centroid of an element.

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

Parameters:
indexthe global index of a specified vertex element
Returns:
(centroid_x,centroid_y).

Todo:
Why isn't this just the centre of mass? (#1075)

Reimplemented in Cylindrical2dVertexMesh.

Definition at line 620 of file VertexMesh.cpp.

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

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
unsigned VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetDelaunayNodeIndexCorrespondingToVoronoiElementIndex ( unsigned  elementIndex)

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

Parameters:
elementIndexglobal index of an element in the Voronoi mesh

Definition at line 496 of file VertexMesh.cpp.

References UNSIGNED_UNSET.

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

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

Parameters:
elementIndex1index of an element in the mesh
elementIndex2index of an element in the mesh

Definition at line 416 of file VertexMesh.cpp.

References EXCEPTION.

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

Definition at line 604 of file VertexMesh.cpp.

Referenced by Cylindrical2dVertexMesh::GetCentroidOfElement(), and Cylindrical2dVertexMesh::GetVolumeOfElement().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
VertexMesh< ELEMENT_DIM, SPACE_DIM >::VertexElementIterator VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetElementIteratorBegin ( bool  skipDeletedElements = true) [inline]

Get an iterator to the first element in the mesh.

Parameters:
skipDeletedElementswhether to include deleted element

Definition at line 605 of file VertexMesh.hpp.

Referenced by WelikyOsterForce< DIM >::AddForceContribution(), VertexBasedCellPopulation< DIM >::WriteVtkResultsToFile(), MeshBasedCellPopulationWithGhostNodes< DIM >::WriteVtkResultsToFile(), and VertexMeshWriter< ELEMENT_DIM, SPACE_DIM >::WriteVtkUsingMesh().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
VertexMesh< ELEMENT_DIM, SPACE_DIM >::VertexElementIterator VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetElementIteratorEnd ( ) [inline]

Get an iterator to one past the last element in the mesh.

Definition at line 612 of file VertexMesh.hpp.

Referenced by WelikyOsterForce< DIM >::AddForceContribution(), and VertexMeshWriter< ELEMENT_DIM, SPACE_DIM >::WriteVtkUsingMesh().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
VertexElement< ELEMENT_DIM-1, SPACE_DIM > * VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetFace ( unsigned  index) const
Parameters:
indexthe global index of a specified face.
Returns:
a pointer to the face

Definition at line 612 of file VertexMesh.cpp.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
unsigned VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetLocalIndexForElementEdgeClosestToPoint ( const c_vector< double, SPACE_DIM > &  rTestPoint,
unsigned  elementIndex 
) [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:
rTestPointthe point to test
elementIndexglobal index of the element in the mesh
Returns:
the local index

Definition at line 1162 of file VertexMesh.cpp.

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

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

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

Parameters:
elementIndexglobal index of the element
Returns:
its neighbouring element indices

Definition at line 748 of file VertexMesh.cpp.

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

Referenced by DeltaNotchOffLatticeSimulation< DIM >::UpdateCellData().

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

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

Parameters:
nodeIndexglobal index of the node
Returns:
its neighbouring node indices

Definition at line 676 of file VertexMesh.cpp.

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

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:
nodeIndexglobal index of the node
elemIndexglobal index of the element
Returns:
its neighbouring nodes that are not in the element

Definition at line 707 of file VertexMesh.cpp.

References EXCEPTION, 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 
)

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:
pElementpointer to a specified vertex element
localIndexlocal index of a node in this element
Returns:
the gradient of the edge of the element that starts at this node.

Definition at line 1358 of file VertexMesh.cpp.

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

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

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

Definition at line 590 of file VertexMesh.cpp.

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

Reimplemented in MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >, MutableVertexMesh< 2, 2 >, and MutableVertexMesh< DIM, DIM >.

Definition at line 583 of file VertexMesh.cpp.

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

Definition at line 597 of file VertexMesh.cpp.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
unsigned VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetNumNodes ( ) const [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 
)

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

Parameters:
pElementpointer to a specified vertex element
localIndexlocal index of a node in this element
Returns:
the gradient of the perimeter of the element, evaluated at this node.

Definition at line 1377 of file VertexMesh.cpp.

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 
)

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:
pElementpointer to a specified vertex element
localIndexlocal index of a node in this element
Returns:
the gradient of the edge of the element that ends at this node.

Definition at line 1336 of file VertexMesh.cpp.

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

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

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

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:
indexthe global index of a specified vertex element
Returns:
(short_axis_x, short_axis_y).

Todo:
remove magic number? (#1884)

Definition at line 1269 of file VertexMesh.cpp.

References RandomNumberGenerator::Instance(), and RandomNumberGenerator::ranf().

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

Compute the surface area (or perimeter in 2D) of an element.

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

Parameters:
indexthe global index of a specified vertex element
Returns:
the surfacearea of the element

Definition at line 1058 of file VertexMesh.cpp.

References VertexElement< ELEMENT_DIM, SPACE_DIM >::GetFace(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNodeGlobalIndex(), VertexElement< ELEMENT_DIM, SPACE_DIM >::GetNumFaces(), and AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNumNodes().

Referenced by WelikyOsterForce< DIM >::AddForceContribution(), and NagaiHondaForce< DIM >::AddForceContribution().

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)

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:
pFacea face in the mesh
Returns:
the unit normal

Definition at line 1394 of file VertexMesh.cpp.

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

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:
rLocationAa c_vector of coordinates
rLocationBa c_vector of coordinates
Returns:
c_vector from location A to location B.

Reimplemented from AbstractMesh< ELEMENT_DIM, SPACE_DIM >.

Definition at line 982 of file VertexMesh.cpp.

References AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetVectorFromAtoB().

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

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
double VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetVolumeOfElement ( unsigned  index) [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:
indexthe global index of a specified vertex element
Returns:
the volume of the element

Reimplemented in Cylindrical2dVertexMesh.

Definition at line 999 of file VertexMesh.cpp.

References VertexElement< ELEMENT_DIM, SPACE_DIM >::GetFace(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNodeLocation(), VertexElement< ELEMENT_DIM, SPACE_DIM >::GetNumFaces(), and AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNumNodes().

Referenced by WelikyOsterForce< DIM >::AddForceContribution(), and NagaiHondaForce< DIM >::AddForceContribution().

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

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:
nodeIndexglobal index of a node in the Delaunay mesh

Definition at line 523 of file VertexMesh.cpp.

References EXCEPTION, and UNSIGNED_UNSET.

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:
archivethe archive
versionthe current version of this class

Definition at line 188 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:
archivethe archive
versionthe current version of this class

Definition at line 170 of file VertexMesh.hpp.

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

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

Parameters:
indexthe global index of the boundary element

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

Definition at line 487 of file VertexMesh.cpp.

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

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

Parameters:
indexthe global index of the element

Definition at line 479 of file VertexMesh.cpp.

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

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

Parameters:
indexthe global index of the node

Implements AbstractMesh< ELEMENT_DIM, SPACE_DIM >.

Definition at line 471 of file VertexMesh.cpp.


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]

Vector of pointers to VertexElements.

Definition at line 73 of file VertexMesh.hpp.

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

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 91 of file VertexMesh.hpp.

Referenced by 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 82 of file VertexMesh.hpp.

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


The documentation for this class was generated from the following files: