AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM > Class Template Reference

#include <AbstractTetrahedralMesh.hpp>

Inheritance diagram for AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >:

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

Collaboration graph
[legend]

List of all members.

Public Types

typedef std::vector
< BoundaryElement< ELEMENT_DIM-1,
SPACE_DIM >
* >::const_iterator 
BoundaryElementIterator

Public Member Functions

ElementIterator GetElementIteratorBegin (bool skipDeletedElements=true)
ElementIterator GetElementIteratorEnd ()
 AbstractTetrahedralMesh ()
virtual ~AbstractTetrahedralMesh ()
virtual unsigned GetNumElements () const
virtual unsigned GetNumLocalElements () const
virtual unsigned GetNumBoundaryElements () const
unsigned GetNumAllElements () const
unsigned GetNumAllBoundaryElements () const
Element< ELEMENT_DIM, SPACE_DIM > * GetElement (unsigned index) const
BoundaryElement< ELEMENT_DIM-1,
SPACE_DIM > * 
GetBoundaryElement (unsigned index) const
virtual void SetElementOwnerships (unsigned lo, unsigned hi)
virtual void ConstructFromMeshReader (AbstractMeshReader< ELEMENT_DIM, SPACE_DIM > &rMeshReader)=0
void ConstructFromMesh (AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM > &rOtherMesh)
BoundaryElementIterator GetBoundaryElementIteratorBegin () const
BoundaryElementIterator GetBoundaryElementIteratorEnd () 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 GetWeightedDirectionForBoundaryElement (unsigned elementIndex, c_vector< double, SPACE_DIM > &rWeightedDirection, double &rJacobianDeterminant) const
virtual void ConstructLinearMesh (unsigned width)
virtual void ConstructRectangularMesh (unsigned width, unsigned height, bool stagger=true)
virtual void ConstructCuboid (unsigned width, unsigned height, unsigned depth)
void ConstructRegularSlabMesh (double spaceStep, double width, double height=0, double depth=0)
virtual bool CalculateDesignatedOwnershipOfBoundaryElement (unsigned faceIndex)
virtual bool CalculateDesignatedOwnershipOfElement (unsigned elementIndex)
unsigned CalculateMaximumNodeConnectivityPerProcess () const
virtual void GetHaloNodeIndices (std::vector< unsigned > &rHaloIndices) const

Protected Attributes

bool mMeshIsLinear
std::vector< Element
< ELEMENT_DIM, SPACE_DIM > * > 
mElements
std::vector< BoundaryElement
< ELEMENT_DIM-1, SPACE_DIM > * > 
mBoundaryElements

Private Member Functions

virtual unsigned SolveElementMapping (unsigned index) const =0
virtual unsigned SolveBoundaryElementMapping (unsigned index) const =0
template<class Archive>
void save (Archive &archive, const unsigned int version) const
template<class Archive>
void load (Archive &archive, const unsigned int version)

Friends

class AbstractConductivityTensors< ELEMENT_DIM, SPACE_DIM >
class boost::serialization::access

Classes

class  ElementIterator


Detailed Description

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

Abstract base class for all tetrahedral meshes (inherits from AbstractMesh).

Definition at line 58 of file AbstractTetrahedralMesh.hpp.


Member Typedef Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
typedef std::vector<BoundaryElement<ELEMENT_DIM-1, SPACE_DIM> *>::const_iterator AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::BoundaryElementIterator

Definition of boundary element Iterator type.

Definition at line 210 of file AbstractTetrahedralMesh.hpp.


Constructor & Destructor Documentation

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

Constructor.

Definition at line 57 of file AbstractTetrahedralMesh.cpp.

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

Virtual destructor, since this class has virtual methods.

Definition at line 63 of file AbstractTetrahedralMesh.cpp.

References AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mBoundaryElements, and AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mElements.


Member Function Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
virtual unsigned AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::SolveElementMapping ( unsigned  index  )  const [private, pure virtual]

Pure virtual solve element mapping method. For an element with a given global index, get the local index used by this process. Overridden in TetrahedralMesh and DistributedTetrahedralMesh classes.

Parameters:
index the global index of the element

Implemented in DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, TetrahedralMesh< DIM, DIM >, and TetrahedralMesh< 3, 3 >.

Referenced by AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetElement(), and AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetInverseJacobianForElement().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
virtual unsigned AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::SolveBoundaryElementMapping ( unsigned  index  )  const [private, pure virtual]

Pure virtual solve boundary element mapping method. For a boundary element with a given global index, get the local index used by this process. Overridden in TetrahedralMesh and DistributedTetrahedralMesh classes.

Parameters:
index the global index of the boundary element

Implemented in DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, TetrahedralMesh< DIM, DIM >, and TetrahedralMesh< 3, 3 >.

Referenced by AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetBoundaryElement(), and AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetWeightedDirectionForBoundaryElement().

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

Archive the AbstractTetrahedralMesh. Note that this will write out a TrianglesMeshWriter file to wherever ArchiveLocationInfo has specified.

If the mesh is MutableMesh (or a subclass) the file is written by examining the current mesh.

If the mesh is not mutable then the file is a copy of the original file the mesh was read from.

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

Always write the in-memory mesh to disk, to make sure we have a properly permuted version of it.

Todo:
#1200 This is bad for very large meshes. Consider making a symlink and just writing the permutation. Perhaps even copy the permutation file from an earlier checkpoint?

Definition at line 102 of file AbstractTetrahedralMesh.hpp.

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

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

Parameters:
archive 
version 

Todo:
#1199 make this work for everything else...

Definition at line 130 of file AbstractTetrahedralMesh.hpp.

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

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ElementIterator AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetElementIteratorEnd (  )  [inline]

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
unsigned AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetNumElements (  )  const [inline, virtual]

Get the number of elements that are actually in use.

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

Definition at line 78 of file AbstractTetrahedralMesh.cpp.

References AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mElements.

Referenced by AbstractCardiacMechanicsSolver< DIM >::AbstractCardiacMechanicsSolver(), PapillaryFibreCalculator::CalculateFibreOrientations(), FineCoarseMeshPair< DIM >::ComputeCoarseElementsForFineElementCentroids(), CuboidMeshConstructor< ELEMENT_DIM, SPACE_DIM >::Construct(), QuadraticMesh< DIM >::ConstructFromLinearMeshReader(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructFromMesh(), QuadraticMesh< DIM >::ConstructFromMeshReader(), StreeterFibreGenerator< SPACE_DIM >::GenerateOrthotropicFibreOrientation(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GenerateVerticesFromElementCircumcentres(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetContainingElementIndex(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetContainingElementIndexWithInitialGuess(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetNumLocalElements(), NonlinearElasticitySolver< DIM >::NonlinearElasticitySolver(), PapillaryFibreCalculator::PapillaryFibreCalculator(), QuadraturePointsGroup< DIM >::QuadraturePointsGroup(), FineCoarseMeshPair< DIM >::SetUpBoxes(), CellwiseDataGradient< DIM >::SetupGradients(), AveragedSourcePde< DIM >::SetupSourceTerms(), and CellBasedSimulationWithPdes< DIM >::SolvePdeUsingCoarseMesh().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
unsigned AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetNumLocalElements (  )  const [inline, virtual]

Get the number of local elements that are in use on this process (only over-ridden when the mesh is distributed).

Reimplemented in DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >.

Definition at line 84 of file AbstractTetrahedralMesh.cpp.

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

Referenced by BidomainTissue< SPACE_DIM >::CreateExtracellularConductivityTensors().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
unsigned AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetNumBoundaryElements (  )  const [inline, virtual]

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
unsigned AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetNumAllElements (  )  const [inline]

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
unsigned AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetNumAllBoundaryElements (  )  const [inline]

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
Element< ELEMENT_DIM, SPACE_DIM > * AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetElement ( unsigned  index  )  const [inline]

Get the element with a given index in the mesh.

Parameters:
index the global index of the element
Returns:
a pointer to the element.

Definition at line 109 of file AbstractTetrahedralMesh.cpp.

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

Referenced by QuadraticMesh< DIM >::AddNodesToBoundaryElements(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::CalculateDesignatedOwnershipOfElement(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::CalculateMaximumNodeConnectivityPerProcess(), MutableMesh< ELEMENT_DIM, SPACE_DIM >::CheckIsVoronoi(), FineCoarseMeshPair< DIM >::ComputeCoarseElementsForFineElementCentroids(), FineCoarseMeshPair< DIM >::ComputeFineElementAndWeightForGivenPoint(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructFromMesh(), QuadraticMesh< DIM >::ConstructFromMeshReader(), Cylindrical2dMesh::CorrectNonPeriodicMesh(), MutableMesh< ELEMENT_DIM, SPACE_DIM >::DeleteBoundaryNodeAt(), MutableMesh< ELEMENT_DIM, SPACE_DIM >::DeleteNode(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::EdgeIterator::EdgeIterator(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::EdgesBegin(), CellBasedSimulationWithPdes< DIM >::FindCoarseElementContainingCell(), StreeterFibreGenerator< SPACE_DIM >::GenerateOrthotropicFibreOrientation(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GenerateVerticesFromElementCircumcentres(), StreeterFibreGenerator< SPACE_DIM >::GetAveragedThicknessLocalNode(), DiscreteSystemForceCalculator::GetNeighbouringNodeIndices(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::EdgeIterator::GetNodeA(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::EdgeIterator::GetNodeB(), PapillaryFibreCalculator::GetRadiusVectorForOneElement(), Node< SPACE_DIM >::IsFlagged(), MutableMesh< ELEMENT_DIM, SPACE_DIM >::MoveMergeNode(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::EdgeIterator::operator++(), QuadraturePointsGroup< DIM >::QuadraturePointsGroup(), Cylindrical2dMesh::ReMesh(), MutableMesh< ELEMENT_DIM, SPACE_DIM >::SetNode(), FineCoarseMeshPair< DIM >::SetUpBoxes(), CellwiseDataGradient< DIM >::SetupGradients(), AveragedSourcePde< DIM >::SetupSourceTerms(), CardiacElectroMechanicsProblem< DIM >::Solve(), CellBasedSimulationWithPdes< DIM >::SolvePdeUsingCoarseMesh(), Cylindrical2dMesh::UseTheseElementsToDecideMeshing(), and VoltageInterpolaterOntoMechanicsMesh< DIM >::VoltageInterpolaterOntoMechanicsMesh().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
BoundaryElement< ELEMENT_DIM-1, SPACE_DIM > * AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetBoundaryElement ( unsigned  index  )  const [inline]

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::SetElementOwnerships ( unsigned  lo,
unsigned  hi 
) [inline, virtual]

Sets the ownership of each element according to which nodes are owned by the process.

Parameters:
lo is the lowest node number owned by the process
hi is one higher than the highest node number owned by the process ie. this process owns nodes [lo..hi) and element is "owned" if one or more of its nodes are owned

Reimplemented in DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >.

Definition at line 37 of file AbstractTetrahedralMesh.cpp.

References AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNodeGlobalIndex(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mElements, and AbstractElement< ELEMENT_DIM, SPACE_DIM >::SetOwnership().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
virtual void AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructFromMeshReader ( AbstractMeshReader< ELEMENT_DIM, SPACE_DIM > &  rMeshReader  )  [pure virtual]

Construct the mesh using a MeshReader. This method must be overridden in concrete classes.

Parameters:
rMeshReader the mesh reader

Implemented in DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, TetrahedralMesh< DIM, DIM >, and TetrahedralMesh< 3, 3 >.

Referenced by AbstractTetrahedralMesh< SPACE_DIM, SPACE_DIM >::load().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructFromMesh ( AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM > &  rOtherMesh  )  [inline]

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::BoundaryElementIterator AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetBoundaryElementIteratorBegin (  )  const [inline]

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::BoundaryElementIterator AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetBoundaryElementIteratorEnd (  )  const [inline]

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void AbstractTetrahedralMesh< 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]

Compute the inverse Jacobian for a given element in the mesh.

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

Reimplemented in NonCachedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, TetrahedralMesh< DIM, DIM >, and TetrahedralMesh< 3, 3 >.

Definition at line 135 of file AbstractTetrahedralMesh.cpp.

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

Referenced by StreeterFibreGenerator< SPACE_DIM >::GenerateOrthotropicFibreOrientation().

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

Compute the weighted direction for a given boundary element.

Parameters:
elementIndex index of an element
rWeightedDirection the weighted direction vector
rJacobianDeterminant the determinant of the Jacobian matrix

Reimplemented in NonCachedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, TetrahedralMesh< DIM, DIM >, and TetrahedralMesh< 3, 3 >.

Definition at line 145 of file AbstractTetrahedralMesh.cpp.

References AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mBoundaryElements, and AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::SolveBoundaryElementMapping().

Referenced by Electrodes< DIM >::ComputeElectrodesAreasAndCheckEquality().

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

Construct a 1D linear grid on [0,width]

ELEMENT_DIM must be equal to 1. If SPACE_DIM > 1 then the y & z default to 0.0 for every node.

Parameters:
width width of the mesh (in the x-direction)
In this method the width is also THE NUMBER OF ELEMENTS IN THE x-direction.

Overridden in DistributedTetrahedralMesh

Reimplemented in DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, and QuadraticMesh< DIM >.

Definition at line 155 of file AbstractTetrahedralMesh.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 AbstractMesh< ELEMENT_DIM, SPACE_DIM >::RefreshMesh().

Referenced by AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructRegularSlabMesh().

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

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)
In this method the width is also THE NUMBER OF ELEMENTS IN THE x-direction, and similarly with the y direction.

Overridden in DistributedTetrahedralMesh

Reimplemented in DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, and QuadraticMesh< DIM >.

Definition at line 187 of file AbstractTetrahedralMesh.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 AbstractMesh< ELEMENT_DIM, SPACE_DIM >::RefreshMesh().

Referenced by AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructRegularSlabMesh().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructCuboid ( unsigned  width,
unsigned  height,
unsigned  depth 
) [inline, virtual]

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

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).
In this method the width is also THE NUMBER OF ELEMENTS IN THE x-direction, and similarly with the y and z directions.

Overridden in DistributedTetrahedralMesh

Reimplemented in DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, and QuadraticMesh< DIM >.

Definition at line 297 of file AbstractTetrahedralMesh.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 AbstractMesh< ELEMENT_DIM, SPACE_DIM >::RefreshMesh().

Referenced by AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructRegularSlabMesh().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructRegularSlabMesh ( double  spaceStep,
double  width,
double  height = 0,
double  depth = 0 
) [inline]

Create a 1D mesh on [0, width], 2D mesh on [0, width]x[0 height] with staggering or 3D mesh on [0, width]x[0 height]x[0 depth with a given axis-aligned space step. If SPACE_DIM > ELEMENT_DIM then the y & z default to 0.0 for every node.

Parameters:
spaceStep The axis-aligned space step
width The width (x-dimension)
height The height (y-dimension - ignored if ELEMENT_DIM is 1D)
depth The depth (z-dimension -ignored in 1D and 2D)

Definition at line 482 of file AbstractTetrahedralMesh.cpp.

References AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructCuboid(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructLinearMesh(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructRectangularMesh(), EXCEPTION, and AbstractMesh< ELEMENT_DIM, SPACE_DIM >::Scale().

Referenced by CardiacElectroMechProbRegularGeom< DIM >::CardiacElectroMechProbRegularGeom(), CuboidMeshConstructor< ELEMENT_DIM, SPACE_DIM >::Construct(), and QuadraticMesh< DIM >::QuadraticMesh().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
bool AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::CalculateDesignatedOwnershipOfBoundaryElement ( unsigned  faceIndex  )  [inline, virtual]

Determine whether or not the current process owns node 0 of this boundary element (tie breaker to determine which process writes to file for when two or more share ownership of a face).

Parameters:
faceIndex is the global index of the face

Reimplemented in DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >.

Definition at line 525 of file AbstractTetrahedralMesh.cpp.

References AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetBoundaryElement(), and AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetDistributedVectorFactory().

Referenced by Electrodes< DIM >::ComputeElectrodesAreasAndCheckEquality().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
bool AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::CalculateDesignatedOwnershipOfElement ( unsigned  elementIndex  )  [inline, virtual]

Determine whether or not the current process owns node 0 of this element (tie breaker to determine which process writes to file for when two or more share ownership of an element).

Parameters:
elementIndex is the global index of the element

Reimplemented in DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >.

Definition at line 542 of file AbstractTetrahedralMesh.cpp.

References AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetDistributedVectorFactory(), and AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetElement().

Referenced by AbstractFunctionalCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::Calculate(), and StreeterFibreGenerator< SPACE_DIM >::GenerateOrthotropicFibreOrientation().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
unsigned AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::CalculateMaximumNodeConnectivityPerProcess (  )  const [inline]

Returns:
Iterates through local nodes and finds the node with the/a maximum number of containing elements for all locally owned nodes. At that representative node the node connectivity (number of nodes in forward star) is determined.
Useful for determining FEM matrix fill.

Definition at line 559 of file AbstractTetrahedralMesh.cpp.

References AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetElement(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNodeGlobalIndex(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mElements, and AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mNodes.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetHaloNodeIndices ( std::vector< unsigned > &  rHaloIndices  )  const [inline, virtual]

Utility method to give the functionality of iterating through the halo nodes of a process. Will return an empty std::vector (i.e. no halo nodes) unless overridden by distributed derived classes.

Parameters:
rHaloIndices A vector to fill with the global indices of the nodes which are locally halos

Reimplemented in DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >.

Definition at line 604 of file AbstractTetrahedralMesh.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>
bool AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mMeshIsLinear [protected]

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
std::vector<Element<ELEMENT_DIM, SPACE_DIM> *> AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mElements [protected]

Vector of pointers to elements in the mesh.

Definition at line 198 of file AbstractTetrahedralMesh.hpp.

Referenced by AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::CalculateMaximumNodeConnectivityPerProcess(), MutableMesh< ELEMENT_DIM, SPACE_DIM >::CheckIsVoronoi(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::Clear(), DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructCuboid(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructCuboid(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructFromMesh(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructFromMeshReader(), DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructFromMeshReader(), QuadraticMesh< DIM >::ConstructLinearMesh(), DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructLinearMesh(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructLinearMesh(), DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructRectangularMesh(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructRectangularMesh(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ElementIterator::ElementIterator(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetContainingElementIndex(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetContainingElementIndexWithInitialGuess(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetContainingElementIndices(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetElement(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetElementIteratorEnd(), NonCachedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetInverseJacobianForElement(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetInverseJacobianForElement(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetNearestElementIndex(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetNearestElementIndexFromTestElements(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetNumAllElements(), MutableMesh< ELEMENT_DIM, SPACE_DIM >::GetNumElements(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetNumElements(), DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetNumLocalElements(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ImportFromMesher(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ElementIterator::IsAtEnd(), MutableMesh< ELEMENT_DIM, SPACE_DIM >::RefineElement(), DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::RegisterElement(), MutableMesh< ELEMENT_DIM, SPACE_DIM >::ReIndex(), MutableMesh< ELEMENT_DIM, SPACE_DIM >::ReMesh(), DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::SetElementOwnerships(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::SetElementOwnerships(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::SolveElementMapping(), Cylindrical2dMesh::UseTheseElementsToDecideMeshing(), and AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::~AbstractTetrahedralMesh().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
std::vector<BoundaryElement<ELEMENT_DIM-1, SPACE_DIM> *> AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mBoundaryElements [protected]

Vector of pointers to boundary elements in the mesh.

Definition at line 201 of file AbstractTetrahedralMesh.hpp.

Referenced by TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::Clear(), DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructCuboid(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructCuboid(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructFromMesh(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructFromMeshReader(), DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructFromMeshReader(), QuadraticMesh< DIM >::ConstructLinearMesh(), DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructLinearMesh(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructLinearMesh(), DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructRectangularMesh(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructRectangularMesh(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetBoundaryElement(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetBoundaryElementIteratorBegin(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetBoundaryElementIteratorEnd(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetNumAllBoundaryElements(), MutableMesh< ELEMENT_DIM, SPACE_DIM >::GetNumBoundaryElements(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetNumBoundaryElements(), DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetNumLocalBoundaryElements(), NonCachedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetWeightedDirectionForBoundaryElement(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetWeightedDirectionForBoundaryElement(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ImportFromMesher(), DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::RegisterBoundaryElement(), MutableMesh< ELEMENT_DIM, SPACE_DIM >::ReIndex(), MutableMesh< ELEMENT_DIM, SPACE_DIM >::ReMesh(), Cylindrical2dMesh::ReMesh(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::SolveBoundaryElementMapping(), and AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::~AbstractTetrahedralMesh().


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

Generated on Mon Nov 1 12:35:56 2010 for Chaste by  doxygen 1.5.5