TetrahedralMesh< ELEMENT_DIM, SPACE_DIM > Class Template Reference

#include <TetrahedralMesh.hpp>

Inheritance diagram for TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >:

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

Collaboration graph
[legend]

List of all members.

Public Member Functions

 TetrahedralMesh ()
 TetrahedralMesh (unsigned numElements)
void ConstructFromMeshReader (AbstractMeshReader< ELEMENT_DIM, SPACE_DIM > &rMeshReader, bool cullInternalFaces=false)
void ReadNodesPerProcessorFile (const std::string &rNodesPerProcessorFile)
double GetVolume ()
double GetSurfaceArea ()
void Translate (c_vector< double, SPACE_DIM > displacement)
void Translate (const double xMovement=0.0, const double yMovement=0.0, const double zMovement=0.0)
void Rotate (c_matrix< double, SPACE_DIM, SPACE_DIM > rotationMatrix)
void Rotate (c_vector< double, 3 > axis, double angle)
void RotateX (const double theta)
void RotateY (const double theta)
void RotateZ (const double theta)
void Rotate (double theta)
void RefreshMesh ()
void PermuteNodes ()
void PermuteNodesWithMetisBinaries (unsigned numProcs)
void PermuteNodes (std::vector< unsigned > &perm)
void ConstructLinearMesh (unsigned width)
void ConstructRectangularMesh (unsigned width, unsigned height, bool stagger=true)
void ConstructCuboid (unsigned width, unsigned height, unsigned depth, bool stagger=false)
unsigned GetContainingElementIndex (ChastePoint< SPACE_DIM > testPoint, bool strict=false, std::set< unsigned > testElements=std::set< unsigned >())
unsigned GetNearestElementIndex (ChastePoint< SPACE_DIM > testPoint)
std::vector< unsigned > GetContainingElementIndices (ChastePoint< SPACE_DIM > testPoint)
virtual void Clear ()
std::set< unsigned > CalculateBoundaryOfFlaggedRegion ()
double GetAngleBetweenNodes (unsigned indexA, unsigned indexB)
void UnflagAllElements ()
void FlagElementsNotContainingNodes (std::set< unsigned > nodes)
virtual void RefreshJacobianCachedData ()
virtual void GetJacobianForElement (unsigned elementIndex, c_matrix< double, SPACE_DIM, SPACE_DIM > &rJacobian, double &rJacobianDeterminant) const
virtual void GetInverseJacobianForElement (unsigned elementIndex, c_matrix< double, SPACE_DIM, ELEMENT_DIM > &rJacobian, double &rJacobianDeterminant, c_matrix< double, ELEMENT_DIM, SPACE_DIM > &rInverseJacobian) const
virtual void GetWeightedDirectionForElement (unsigned elementIndex, c_vector< double, SPACE_DIM > &rWeightedDirection, double &rJacobianDeterminant) const
virtual void GetWeightedDirectionForBoundaryElement (unsigned elementIndex, c_vector< double, SPACE_DIM > &rWeightedDirection, double &rJacobianDeterminant) const
EdgeIterator EdgesBegin ()
EdgeIterator EdgesEnd ()

Protected Member Functions

unsigned SolveNodeMapping (unsigned index) const
unsigned SolveElementMapping (unsigned index) const
unsigned SolveBoundaryElementMapping (unsigned index) const

Protected Attributes

std::vector< c_vector< double,
SPACE_DIM > > 
mElementWeightedDirections
std::vector< c_matrix< double,
SPACE_DIM, ELEMENT_DIM > > 
mElementJacobians
std::vector< c_matrix< double,
ELEMENT_DIM, SPACE_DIM > > 
mElementInverseJacobians
std::vector< double > mElementJacobianDeterminants
std::vector< c_vector< double,
SPACE_DIM > > 
mBoundaryElementWeightedDirections
std::vector< double > mBoundaryElementJacobianDeterminants

Private Member Functions

template<class Archive>
void serialize (Archive &archive, const unsigned int version)

Friends

class TestTetrahedralMesh
class TestCryptSimulation2d
class boost::serialization::access

Classes

class  EdgeIterator


Detailed Description

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

A concrete tetrahedral mesh class.

Definition at line 55 of file TetrahedralMesh.hpp.


Constructor & Destructor Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::TetrahedralMesh (  )  [inline]

Constructor.

Definition at line 50 of file TetrahedralMesh.cpp.

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

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::TetrahedralMesh ( unsigned  numElements  ) 

Constructor which takes in a number of elements.

Parameters:
numElements 


Member Function Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
template<class Archive>
void TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::serialize ( Archive &  archive,
const unsigned int  version 
) [inline, private]

Serialize the mesh.

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

Reimplemented from AbstractMesh< ELEMENT_DIM, SPACE_DIM >.

Reimplemented in MutableMesh< ELEMENT_DIM, SPACE_DIM >, NonCachedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, Cylindrical2dMesh, MutableMesh< 2, 2 >, and MutableMesh< DIM, DIM >.

Definition at line 70 of file TetrahedralMesh.hpp.

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

Overridden solve node mapping method.

Parameters:
index the global index of the node

Implements AbstractMesh< ELEMENT_DIM, SPACE_DIM >.

Definition at line 1367 of file TetrahedralMesh.cpp.

References AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mNodes.

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

Overridden solve element mapping method.

Parameters:
index the global index of the element

Implements AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >.

Definition at line 1374 of file TetrahedralMesh.cpp.

References AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mElements.

Referenced by NonCachedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetInverseJacobianForElement().

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

Overridden solve boundary element mapping method.

Parameters:
index the global index of the boundary element

Implements AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >.

Definition at line 1381 of file TetrahedralMesh.cpp.

References AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mBoundaryElements.

Referenced by NonCachedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetWeightedDirectionForBoundaryElement().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructFromMeshReader ( AbstractMeshReader< ELEMENT_DIM, SPACE_DIM > &  rMeshReader,
bool  cullInternalFaces = false 
) [inline, virtual]

Construct the mesh using a MeshReader.

Parameters:
rMeshReader the mesh reader
cullInternalFaces whether to cull internal faces (defaults to false)

Implements AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >.

Definition at line 56 of file TetrahedralMesh.cpp.

References ElementData::AttributeValue, AbstractMeshReader< ELEMENT_DIM, SPACE_DIM >::GetMeshFileBaseName(), AbstractMeshReader< ELEMENT_DIM, SPACE_DIM >::GetNextElementData(), AbstractMeshReader< ELEMENT_DIM, SPACE_DIM >::GetNextFaceData(), AbstractMeshReader< ELEMENT_DIM, SPACE_DIM >::GetNextNode(), AbstractMeshReader< ELEMENT_DIM, SPACE_DIM >::GetNumElementAttributes(), AbstractMeshReader< ELEMENT_DIM, SPACE_DIM >::GetNumElements(), AbstractMeshReader< ELEMENT_DIM, SPACE_DIM >::GetNumFaceAttributes(), AbstractMeshReader< ELEMENT_DIM, SPACE_DIM >::GetNumFaces(), AbstractMeshReader< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mBoundaryElements, AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mBoundaryNodes, AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mElements, AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mMeshFileBaseName, AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mNodes, ElementData::NodeIndices, TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::RefreshJacobianCachedData(), AbstractMeshReader< ELEMENT_DIM, SPACE_DIM >::Reset(), and AbstractElement< ELEMENT_DIM, SPACE_DIM >::SetRegion().

Referenced by AbstractConvergenceTester< CELL, CARDIAC_PROBLEM, DIM, PROBLEM_DIM >::Converge(), HoneycombMeshGenerator::HoneycombMeshGenerator(), and MutableMesh< ELEMENT_DIM, SPACE_DIM >::ReMesh().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ReadNodesPerProcessorFile ( const std::string &  rNodesPerProcessorFile  )  [inline, virtual]

Read in the number of nodes per processor from file.

Parameters:
rNodesPerProcessorFile the name of the file

Reimplemented from AbstractMesh< ELEMENT_DIM, SPACE_DIM >.

Definition at line 225 of file TetrahedralMesh.cpp.

References PetscTools::GetMyRank(), AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), PetscTools::GetNumProcs(), and AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mpDistributedVectorFactory.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
double TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetVolume (  )  [inline]

Return the volume of the mesh, calculated by adding the determinant of each element and dividing by n!, where n is the element dimension.

Definition at line 273 of file TetrahedralMesh.cpp.

References AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetElementIteratorBegin(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetElementIteratorEnd(), and TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mElementJacobianDeterminants.

Referenced by MeshBasedTissue< DIM >::WriteTissueAreaResultsToFile().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
double TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetSurfaceArea (  )  [inline]

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::Translate ( c_vector< double, SPACE_DIM >  displacement  )  [inline]

Translate the mesh given the displacement vector. This is the translation method that actually does the work.

Parameters:
displacement is a translation vector of the correct size
Todo:
pass by const reference?

Definition at line 338 of file TetrahedralMesh.cpp.

References AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetNumAllNodes(), AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mNodes, and TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::RefreshMesh().

Referenced by HoneycombMeshGenerator::GetCircularMesh(), and TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::Translate().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::Translate ( const double  xMovement = 0.0,
const double  yMovement = 0.0,
const double  zMovement = 0.0 
) [inline]

Translate the mesh given the coordinate displacements separately.

Parameters:
xMovement is the x-displacement (defaults to 0.0)
yMovement is the y-displacement (defaults to 0.0)
zMovement is the z-displacement (defaults to 0.0)

Definition at line 317 of file TetrahedralMesh.cpp.

References TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::Translate().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::Rotate ( c_matrix< double, SPACE_DIM, SPACE_DIM >  rotationMatrix  )  [inline]

Do a general mesh rotation with a positive determinant orthonormal rotation matrix. This is the rotation method that actually does the work.

Parameters:
rotationMatrix is a Ublas rotation matrix of the correct form

Definition at line 352 of file TetrahedralMesh.cpp.

References AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetNumAllNodes(), AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mNodes, and TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::RefreshMesh().

Referenced by TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::Rotate(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::RotateX(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::RotateY(), and TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::RotateZ().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::Rotate ( c_vector< double, 3 >  axis,
double  angle 
) [inline]

Do an angle axis rotation.

Parameters:
axis is the axis of rotation (does not need to be normalised)
angle is the angle of rotation in radians

Definition at line 367 of file TetrahedralMesh.cpp.

References TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::Rotate().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::RotateX ( const double  theta  )  [inline]

Rotate the mesh about the x-axis.

Parameters:
theta is the angle of rotation in radians

Definition at line 392 of file TetrahedralMesh.cpp.

References TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::Rotate().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::RotateY ( const double  theta  )  [inline]

Rotate the mesh about the y-axis.

Parameters:
theta is the angle of rotation in radians

Definition at line 408 of file TetrahedralMesh.cpp.

References TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::Rotate().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::RotateZ ( const double  theta  )  [inline]

Rotate the mesh about the z-axis.

Parameters:
theta is the angle of rotation in radians

Definition at line 426 of file TetrahedralMesh.cpp.

References TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::Rotate().

Referenced by TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::Rotate().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::Rotate ( double  theta  )  [inline]

Rotating a 2D mesh equates that rotation around the z-axis.

Parameters:
theta is the angle of rotation in radians

Definition at line 444 of file TetrahedralMesh.cpp.

References TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::RotateZ().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::RefreshMesh (  )  [inline, virtual]

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::PermuteNodes (  )  [inline, virtual]

Permute the nodes so that they appear in a different order in mNodes (and their mIndex's are altered accordingly).

Reimplemented from AbstractMesh< ELEMENT_DIM, SPACE_DIM >.

Definition at line 450 of file TetrahedralMesh.cpp.

References RandomNumberGenerator::Instance(), AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mNodes, and RandomNumberGenerator::randMod().

Referenced by TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::PermuteNodesWithMetisBinaries().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::PermuteNodesWithMetisBinaries ( unsigned  numProcs  )  [inline]

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::PermuteNodes ( std::vector< unsigned > &  perm  )  [inline]

Permute the nodes so that they appear in a different order in mNodes (and their mIndex's are altered accordingly).

Parameters:
perm is a vector containing the new indices

Definition at line 472 of file TetrahedralMesh.cpp.

References AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetNumAllNodes(), AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), and AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mNodes.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructLinearMesh ( unsigned  width  )  [inline]

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructRectangularMesh ( unsigned  width,
unsigned  height,
bool  stagger = true 
) [inline]

Construct a 2D rectangular grid on [0,width]x[0,height].

Diagonals can be staggered so that there is no preferred diffusion propagation direction.

Parameters:
width width of the mesh (in the x-direction)
height height of the mesh (in the y-direction)
stagger whether the mesh should 'jumble' up the elements (defaults to true)

Definition at line 662 of file TetrahedralMesh.cpp.

References AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mBoundaryElements, AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mBoundaryNodes, AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mElements, AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mNodes, and TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::RefreshJacobianCachedData().

Referenced by CardiacElectroMechProbRegularGeom< DIM >::CardiacElectroMechProbRegularGeom(), and CuboidMeshConstructor< DIM >::ConstructHyperCube().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructCuboid ( unsigned  width,
unsigned  height,
unsigned  depth,
bool  stagger = false 
) [inline]

Construct a 3D cuboid grid on [0,width]x[0,height]x[0,depth].

Diagonals can be staggered so that there is no preferred diffusion propagation direction.

Parameters:
width width of the mesh (in the x-direction)
height height of the mesh (in the y-direction)
depth depth of the mesh (in the z-direction)
stagger whether the mesh should 'jumble' up the elements (defaults to false)

Definition at line 854 of file TetrahedralMesh.cpp.

References AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mBoundaryElements, AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mBoundaryNodes, AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mElements, AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mNodes, and TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::RefreshJacobianCachedData().

Referenced by CuboidMeshConstructor< DIM >::ConstructHyperCube().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
unsigned TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetContainingElementIndex ( ChastePoint< SPACE_DIM >  testPoint,
bool  strict = false,
std::set< unsigned >  testElements = std::set<unsigned>() 
) [inline]

Return the element index for the first element that is known to contain a test point

Parameters:
testPoint 
strict Should the element returned contain the point in the interior and not on an edge/face/vertex (default = not strict)
testElements a set of guesses for the element (a set of element indices), to be checked first for potential efficiency improvements. (default = empty set)

Todo:
What if the element is deleted?

Todo:
This ought to return a set of all elements that contain the point (if the point is a node in the mesh then it's contained in multiple elements)
Todo:
Polling every element is unnecessary. We ought to start from a likely place and hill climb

Todo:
What if the element is deleted?

Definition at line 760 of file TetrahedralMesh.cpp.

References AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetNumElements(), and AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mElements.

Referenced by CardiacElectroMechanicsProblem< DIM >::Initialise().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
unsigned TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetNearestElementIndex ( ChastePoint< SPACE_DIM >  testPoint  )  [inline]

Return the element index for an element is closest to the testPoint.

"Closest" means that the minimum interpolation weights for the testPoint are maximised for this element.

Parameters:
testPoint the point

Todo:
This ought to return a set of all elements that contain the point (if the point is a node in the mesh then it's contained in multiple elements)
Todo:
Polling every element is unnecessary. We ought to start from a likely place and hill climb

Todo:
What if the element is deleted?

Definition at line 788 of file TetrahedralMesh.cpp.

References AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mElements.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
std::vector< unsigned > TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetContainingElementIndices ( ChastePoint< SPACE_DIM >  testPoint  )  [inline]

Return all element indices for elements that are known to contain a test point.

Parameters:
testPoint the point

Todo:
What if the element is deleted?

Definition at line 818 of file TetrahedralMesh.cpp.

References AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mElements.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::Clear (  )  [inline, virtual]

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
std::set< unsigned > TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::CalculateBoundaryOfFlaggedRegion (  )  [inline]

Return the set of nodes which are on the boundary of the flagged region(s).

Definition at line 1111 of file TetrahedralMesh.cpp.

References AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetElementIteratorBegin(), and AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetElementIteratorEnd().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
double TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetAngleBetweenNodes ( unsigned  indexA,
unsigned  indexB 
) [inline]

Calcuate the angle between the node at indexB and the x axis about the node at indexA. The angle returned is in the range (-pi,pi].

Parameters:
indexA a node index
indexB a node index

Definition at line 1177 of file TetrahedralMesh.cpp.

References AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mNodes.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::UnflagAllElements (  )  [inline]

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::FlagElementsNotContainingNodes ( std::set< unsigned >  nodes  )  [inline]

Flag all elements not containing ANY of the given nodes

Parameters:
nodes set of nodes to check for
Todo:
pass by const reference?

Definition at line 1217 of file TetrahedralMesh.cpp.

References AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetElementIteratorBegin(), and AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetElementIteratorEnd().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::RefreshJacobianCachedData (  )  [inline, virtual]

Update mElementJacobians, mElementWeightedDirections and mBoundaryElementWeightedDirections.

Reimplemented in NonCachedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >.

Definition at line 1388 of file TetrahedralMesh.cpp.

References AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetBoundaryElementIteratorBegin(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetBoundaryElementIteratorEnd(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetElementIteratorBegin(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetElementIteratorEnd(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetNumAllBoundaryElements(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetNumAllElements(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mBoundaryElementJacobianDeterminants, TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mBoundaryElementWeightedDirections, TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mElementInverseJacobians, TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mElementJacobianDeterminants, TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mElementJacobians, and TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mElementWeightedDirections.

Referenced by TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructCuboid(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructFromMeshReader(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructLinearMesh(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructRectangularMesh(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::RefreshMesh(), and MutableMesh< ELEMENT_DIM, SPACE_DIM >::ReMesh().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetJacobianForElement ( unsigned  elementIndex,
c_matrix< double, SPACE_DIM, SPACE_DIM > &  rJacobian,
double &  rJacobianDeterminant 
) const [inline, virtual]

Get the Jacobian matrix and its determinant for a given element.

Parameters:
elementIndex index of the element in the mesh
rJacobian the Jacobian matrix
rJacobianDeterminant the determinant of the Jacobian matrix

Reimplemented in NonCachedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >.

Definition at line 1434 of file TetrahedralMesh.cpp.

References TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mElementJacobianDeterminants, and TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mElementJacobians.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetInverseJacobianForElement ( unsigned  elementIndex,
c_matrix< double, SPACE_DIM, ELEMENT_DIM > &  rJacobian,
double &  rJacobianDeterminant,
c_matrix< double, ELEMENT_DIM, SPACE_DIM > &  rInverseJacobian 
) const [inline, virtual]

Get the Jacobian matrix, its inverse and its determinant for a given element.

Parameters:
elementIndex index of the element in the mesh
rJacobian the Jacobian matrix
rJacobianDeterminant the determinant of the Jacobian matrix
rInverseJacobian the inverse Jacobian matrix

Reimplemented from AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >.

Reimplemented in NonCachedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >.

Definition at line 1443 of file TetrahedralMesh.cpp.

References TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mElementInverseJacobians, TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mElementJacobianDeterminants, and TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mElementJacobians.

Referenced by StreeterFibreGenerator< SPACE_DIM >::GenerateOrthotropicFibreOrientation(), VoronoiTessellation< DIM >::GenerateVerticesFromElementCircumcentres(), and VoronoiTessellation< DIM >::Initialise().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetWeightedDirectionForElement ( unsigned  elementIndex,
c_vector< double, SPACE_DIM > &  rWeightedDirection,
double &  rJacobianDeterminant 
) const [inline, virtual]

Get the weighted direction and the determinant of the Jacobian for a given element.

Parameters:
elementIndex index of the element in the mesh
rWeightedDirection the weighted direction
rJacobianDeterminant the determinant of the Jacobian matrix

Reimplemented in NonCachedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >.

Definition at line 1453 of file TetrahedralMesh.cpp.

References TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mElementJacobianDeterminants, and TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mElementWeightedDirections.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetWeightedDirectionForBoundaryElement ( unsigned  elementIndex,
c_vector< double, SPACE_DIM > &  rWeightedDirection,
double &  rJacobianDeterminant 
) const [inline, virtual]

Get the weighted direction and the determinant of the Jacobian for a given boundary element.

Parameters:
elementIndex index of the element in the mesh
rWeightedDirection the weighted direction
rJacobianDeterminant the determinant of the Jacobian matrix

Reimplemented from AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >.

Reimplemented in NonCachedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >.

Definition at line 1462 of file TetrahedralMesh.cpp.

References TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mBoundaryElementJacobianDeterminants, and TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mBoundaryElementWeightedDirections.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::EdgeIterator TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::EdgesBegin (  )  [inline]

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::EdgeIterator TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::EdgesEnd (  )  [inline]


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< c_vector<double, SPACE_DIM> > TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mElementWeightedDirections [protected]

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
std::vector< c_matrix<double, SPACE_DIM, ELEMENT_DIM> > TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mElementJacobians [protected]

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
std::vector< c_matrix<double, ELEMENT_DIM, SPACE_DIM> > TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mElementInverseJacobians [protected]

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
std::vector<double> TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mElementJacobianDeterminants [protected]

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
std::vector< c_vector<double, SPACE_DIM> > TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mBoundaryElementWeightedDirections [protected]

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
std::vector<double> TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mBoundaryElementJacobianDeterminants [protected]


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

Generated on Tue Aug 4 16:11:48 2009 for Chaste by  doxygen 1.5.5