Chaste Commit::baa90ac2819b962188b7562f2326be23c47859a7
|
#include <AbstractTetrahedralMesh.hpp>
Classes | |
class | ElementIterator |
Public Types | |
typedef std::vector< BoundaryElement< ELEMENT_DIM-1, SPACE_DIM > * >::const_iterator | BoundaryElementIterator |
Public Types inherited from AbstractMesh< ELEMENT_DIM, SPACE_DIM > | |
typedef std::vector< Node< SPACE_DIM > * >::const_iterator | BoundaryNodeIterator |
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 |
virtual unsigned | GetNumLocalBoundaryElements () const |
unsigned | GetNumAllElements () const |
unsigned | GetNumAllBoundaryElements () const |
virtual unsigned | GetNumCableElements () const |
virtual unsigned | GetNumVertices () const |
virtual unsigned | GetMaximumNodeIndex () |
Element< ELEMENT_DIM, SPACE_DIM > * | GetElement (unsigned index) const |
BoundaryElement< ELEMENT_DIM-1, SPACE_DIM > * | GetBoundaryElement (unsigned index) const |
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 |
void | CheckOutwardNormals () |
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) |
void | ConstructRegularSlabMeshWithDimensionSplit (unsigned dimension, 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 |
void | CalculateNodeExchange (std::vector< std::vector< unsigned > > &rNodesToSendPerProcess, std::vector< std::vector< unsigned > > &rNodesToReceivePerProcess) |
virtual c_vector< double, 2 > | CalculateMinMaxEdgeLengths () |
unsigned | GetContainingElementIndex (const ChastePoint< SPACE_DIM > &rTestPoint, bool strict=false, std::set< unsigned > testElements=std::set< unsigned >(), bool onlyTryWithTestElements=false) |
unsigned | GetNearestElementIndexFromTestElements (const ChastePoint< SPACE_DIM > &rTestPoint, std::set< unsigned > testElements) |
Public Member Functions inherited from AbstractMesh< ELEMENT_DIM, SPACE_DIM > | |
NodeIterator | GetNodeIteratorBegin (bool skipDeletedNodes=true) |
NodeIterator | GetNodeIteratorEnd () |
AbstractMesh () | |
virtual | ~AbstractMesh () |
virtual unsigned | GetNumNodes () const |
unsigned | GetNumBoundaryNodes () const |
virtual unsigned | GetNumAllNodes () const |
unsigned | GetNumNodeAttributes () const |
Node< SPACE_DIM > * | GetNode (unsigned index) const |
virtual Node< SPACE_DIM > * | GetNodeOrHaloNode (unsigned index) const |
Node< SPACE_DIM > * | GetNodeFromPrePermutationIndex (unsigned index) const |
virtual void | ReadNodesPerProcessorFile (const std::string &rNodesPerProcessorFile) |
virtual DistributedVectorFactory * | GetDistributedVectorFactory () |
virtual void | SetDistributedVectorFactory (DistributedVectorFactory *pFactory) |
virtual void | PermuteNodes () |
BoundaryNodeIterator | GetBoundaryNodeIteratorBegin () const |
BoundaryNodeIterator | GetBoundaryNodeIteratorEnd () const |
std::string | GetMeshFileBaseName () const |
bool | IsMeshOnDisk () const |
const std::vector< unsigned > & | rGetNodePermutation () const |
virtual c_vector< double, SPACE_DIM > | GetVectorFromAtoB (const c_vector< double, SPACE_DIM > &rLocationA, const c_vector< double, SPACE_DIM > &rLocationB) |
double | GetDistanceBetweenNodes (unsigned indexA, unsigned indexB) |
virtual double | GetWidth (const unsigned &rDimension) const |
virtual ChasteCuboid< SPACE_DIM > | CalculateBoundingBox () const |
virtual unsigned | GetNearestNodeIndex (const ChastePoint< SPACE_DIM > &rTestPoint) |
virtual void | Scale (const double xFactor=1.0, const double yFactor=1.0, const double zFactor=1.0) |
virtual void | Translate (const c_vector< double, SPACE_DIM > &rDisplacement) |
void | Translate (const double xMovement=0.0, const double yMovement=0.0, const double zMovement=0.0) |
virtual 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) |
virtual void | RefreshMesh () |
bool | IsMeshChanging () const |
unsigned | CalculateMaximumContainingElementsPerProcess () const |
void | SetMeshHasChangedSinceLoading () |
Protected Member Functions | |
void | SetElementOwnerships () |
Protected Member Functions inherited from AbstractMesh< ELEMENT_DIM, SPACE_DIM > | |
ChasteCuboid< SPACE_DIM > | CalculateBoundingBox (const std::vector< Node< SPACE_DIM > * > &rNodes) const |
Protected Attributes | |
bool | mMeshIsLinear |
std::vector< Element< ELEMENT_DIM, SPACE_DIM > * > | mElements |
std::vector< BoundaryElement< ELEMENT_DIM-1, SPACE_DIM > * > | mBoundaryElements |
Protected Attributes inherited from AbstractMesh< ELEMENT_DIM, SPACE_DIM > | |
std::vector< Node< SPACE_DIM > * > | mNodes |
std::vector< Node< SPACE_DIM > * > | mBoundaryNodes |
DistributedVectorFactory * | mpDistributedVectorFactory |
std::vector< unsigned > | mNodePermutation |
std::string | mMeshFileBaseName |
bool | mMeshChangesDuringSimulation |
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 | CentroidWriter |
class | boost::serialization::access |
Abstract base class for all tetrahedral meshes (inherits from AbstractMesh).
Definition at line 71 of file AbstractTetrahedralMesh.hpp.
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 298 of file AbstractTetrahedralMesh.hpp.
AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::AbstractTetrahedralMesh | ( | ) |
Constructor.
Definition at line 66 of file AbstractTetrahedralMesh.cpp.
|
virtual |
Virtual destructor, since this class has virtual methods.
Definition at line 72 of file AbstractTetrahedralMesh.cpp.
|
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).
faceIndex | is the global index of the face |
Reimplemented in DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, and DistributedTetrahedralMesh< DIM, DIM >.
Definition at line 684 of file AbstractTetrahedralMesh.cpp.
|
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).
elementIndex | is the global index of the element |
Reimplemented in DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, and DistributedTetrahedralMesh< DIM, DIM >.
Definition at line 701 of file AbstractTetrahedralMesh.cpp.
Referenced by AbstractFunctionalCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::Calculate().
unsigned AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::CalculateMaximumNodeConnectivityPerProcess | ( | ) | const |
Useful for determining FEM matrix fill.
Definition at line 718 of file AbstractTetrahedralMesh.cpp.
References AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNodeGlobalIndex().
|
virtual |
Computes the minimum and maximum lengths of the edges in the mesh. Overridden in Distributed case
Reimplemented in DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, and DistributedTetrahedralMesh< DIM, DIM >.
Definition at line 968 of file AbstractTetrahedralMesh.cpp.
Referenced by DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::CalculateMinMaxEdgeLengths(), and FineCoarseMeshPair< DIM >::SetUpBoxes().
void AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::CalculateNodeExchange | ( | std::vector< std::vector< unsigned > > & | rNodesToSendPerProcess, |
std::vector< std::vector< unsigned > > & | rNodesToReceivePerProcess | ||
) |
Get the nodes which will need to be exchanged between remote processes. If we have an element which node indices outside the local [mLo, mHi) region then we know that those nodes will need to be recieved from a remote process, while those inside the range [mLo, mHi) will need to be sent
rNodesToSendPerProcess | (output) a vector which will be of size GetNumProcs() where each internal vector except i=GetMyRank() contains an ordered list of indices of nodes to send to process i |
rNodesToReceivePerProcess | (output) a vector which will be of size GetNumProcs() for information to receive for process i |
Definition at line 885 of file AbstractTetrahedralMesh.cpp.
References PetscTools::GetNumProcs().
void AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::CheckOutwardNormals | ( | ) |
Check whether mesh has outward-facing normals.
This throws a suitable exception if an inward facing normal is found.
(Returns nothing)
Definition at line 186 of file AbstractTetrahedralMesh.cpp.
References Node< SPACE_DIM >::ContainingElementsBegin(), Node< SPACE_DIM >::ContainingElementsEnd(), EXCEPTION, AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNodeGlobalIndex(), and Node< SPACE_DIM >::rGetLocation().
|
virtual |
Construct a 3D cuboid grid on [0,width]x[0,height]x[0,depth].
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 QuadraticMesh< DIM >, DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, and DistributedTetrahedralMesh< DIM, DIM >.
Definition at line 384 of file AbstractTetrahedralMesh.cpp.
Referenced by QuadraticMesh< DIM >::ConstructCuboid(), and DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructCuboid().
void AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructFromMesh | ( | AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM > & | rOtherMesh | ) |
Construct the mesh using another mesh. This takes a mesh of a given concrete class and produces a deep copy.
Use with caution when copying between subclasses.
rOtherMesh | the mesh to copy |
Definition at line 836 of file AbstractTetrahedralMesh.cpp.
References AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetBoundaryElement(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetElement(), AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetNode(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNodeGlobalIndex(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetNumBoundaryElements(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetNumElements(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), Node< SPACE_DIM >::IsBoundaryNode(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::IsDeleted(), Node< SPACE_DIM >::IsDeleted(), BoundaryElement< ELEMENT_DIM, SPACE_DIM >::RegisterWithNodes(), Element< ELEMENT_DIM, SPACE_DIM >::RegisterWithNodes(), and Node< SPACE_DIM >::rGetLocation().
|
pure virtual |
Construct the mesh using a MeshReader. This method must be overridden in concrete classes.
rMeshReader | the mesh reader |
Implemented in DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, DistributedTetrahedralMesh< DIM, DIM >, MixedDimensionMesh< ELEMENT_DIM, SPACE_DIM >, MixedDimensionMesh< ELEMENT_DIM, ELEMENT_DIM >, TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, TetrahedralMesh< 3, 3 >, and TetrahedralMesh< DIM, DIM >.
Referenced by AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::load().
|
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.
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 QuadraticMesh< DIM >, DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, and DistributedTetrahedralMesh< DIM, DIM >.
Definition at line 245 of file AbstractTetrahedralMesh.cpp.
Referenced by QuadraticMesh< DIM >::ConstructLinearMesh(), and DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructLinearMesh().
|
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.
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 QuadraticMesh< DIM >, DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, and DistributedTetrahedralMesh< DIM, DIM >.
Definition at line 277 of file AbstractTetrahedralMesh.cpp.
Referenced by QuadraticMesh< DIM >::ConstructRectangularMesh(), and DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructRectangularMesh().
void AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructRegularSlabMesh | ( | double | spaceStep, |
double | width, | ||
double | height = 0 , |
||
double | depth = 0 |
||
) |
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.
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 569 of file AbstractTetrahedralMesh.cpp.
Referenced by CardiacElectroMechProbRegularGeom< DIM >::CardiacElectroMechProbRegularGeom(), and CuboidMeshConstructor< ELEMENT_DIM, SPACE_DIM >::Construct().
void AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructRegularSlabMeshWithDimensionSplit | ( | unsigned | dimension, |
double | spaceStep, | ||
double | width, | ||
double | height = 0 , |
||
double | depth = 0 |
||
) |
This is a wrapper method to ConstructRegularSlabMesh() which is useful for parallel distributed meshes. By default slabs are split across processes in the top dimension (y in 2d, z in 3d) but it may be more useful to split in x or y.
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.
dimension | The dimension/axis to be split over the processes. When dimension=0 the split is on x, dimension=1 indicates split on y etc. If dimension >= SPACE_DIM then an exception is thrown. |
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 617 of file AbstractTetrahedralMesh.cpp.
BoundaryElement< ELEMENT_DIM-1, SPACE_DIM > * AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetBoundaryElement | ( | unsigned | index | ) | const |
Get the boundary element with a given index in the mesh.
index | the global index of the boundary element |
Definition at line 148 of file AbstractTetrahedralMesh.cpp.
Referenced by AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructFromMesh(), BoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::MergeFromArchive(), and Cylindrical2dMesh::ReconstructCylindricalMesh().
AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::BoundaryElementIterator AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetBoundaryElementIteratorBegin | ( | ) | const |
Definition at line 155 of file AbstractTetrahedralMesh.cpp.
Referenced by Electrodes< DIM >::Electrodes(), QuadraticMeshHelper< DIM >::AddInternalNodesToBoundaryElements(), QuadraticMeshHelper< DIM >::AddNodesToBoundaryElements(), QuadraticMeshHelper< DIM >::CheckBoundaryElements(), AbstractConvergenceTester< CELL, CARDIAC_PROBLEM, DIM, PROBLEM_DIM >::Converge(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::RefreshJacobianCachedData(), Toroidal2dMesh::ReMesh(), and BoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::Validate().
AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::BoundaryElementIterator AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetBoundaryElementIteratorEnd | ( | ) | const |
Definition at line 161 of file AbstractTetrahedralMesh.cpp.
Referenced by Electrodes< DIM >::Electrodes(), QuadraticMeshHelper< DIM >::AddNodesToBoundaryElements(), QuadraticMeshHelper< DIM >::CheckBoundaryElements(), AbstractConvergenceTester< CELL, CARDIAC_PROBLEM, DIM, PROBLEM_DIM >::Converge(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::RefreshJacobianCachedData(), Toroidal2dMesh::ReMesh(), and BoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::Validate().
unsigned AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetContainingElementIndex | ( | const ChastePoint< SPACE_DIM > & | rTestPoint, |
bool | strict = false , |
||
std::set< unsigned > | testElements = std::set<unsigned>() , |
||
bool | onlyTryWithTestElements = false |
||
) |
Return the element index for the first element that contains a test point
rTestPoint | reference to the point |
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) |
onlyTryWithTestElements | Do not continue with other elements after trying the with testElements (for cases where you know the testPoint must be in the set of test elements or maybe outside the mesh). |
Definition at line 992 of file AbstractTetrahedralMesh.cpp.
References EXCEPTION.
Referenced by AveragedSourceEllipticPde< DIM >::SetupSourceTerms(), AveragedSourceParabolicPde< DIM >::SetupSourceTerms(), and VolumeDependentAveragedSourceEllipticPde< DIM >::SetupSourceTerms().
Element< ELEMENT_DIM, SPACE_DIM > * AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetElement | ( | unsigned | index | ) | const |
Get the element with a given index in the mesh.
index | the global index of the element |
Definition at line 141 of file AbstractTetrahedralMesh.cpp.
Referenced by Cylindrical2dVertexMesh::Cylindrical2dVertexMesh(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::EdgeIterator::EdgeIterator(), Toroidal2dVertexMesh::Toroidal2dVertexMesh(), VoltageInterpolaterOntoMechanicsMesh< DIM >::VoltageInterpolaterOntoMechanicsMesh(), QuadraticMeshHelper< DIM >::AddInternalNodesToElements(), QuadraticMeshHelper< DIM >::AddNodesToBoundaryElements(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructFromMesh(), Toroidal2dMesh::CorrectCylindricalNonPeriodicMesh(), Cylindrical2dMesh::CorrectNonPeriodicMesh(), Toroidal2dMesh::CorrectToroidalNonPeriodicMesh(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::EdgesBegin(), MeshBasedCellPopulation< ELEMENT_DIM, SPACE_DIM >::GetNeighbouringNodeIndices(), VertexMesh< 2, 2 >::GetNeighbouringNodeIndices(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::EdgeIterator::GetNodeA(), PapillaryFibreCalculator::GetRadiusVectorForOneElement(), Cylindrical2dMesh::ReMesh(), Toroidal2dMesh::ReMesh(), FineCoarseMeshPair< DIM >::SetUpBoxes(), CellwiseDataGradient< DIM >::SetupGradients(), AveragedSourceEllipticPde< DIM >::SetupSourceTerms(), AveragedSourceParabolicPde< DIM >::SetupSourceTerms(), VolumeDependentAveragedSourceEllipticPde< DIM >::SetupSourceTerms(), and Cylindrical2dMesh::UseTheseElementsToDecideMeshing().
|
inline |
skipDeletedElements | whether to include deleted element |
Definition at line 725 of file AbstractTetrahedralMesh.hpp.
Referenced by AbstractCorrectionTermAssembler< ELEM_DIM, SPACE_DIM, PROBLEM_DIM >::AbstractCorrectionTermAssembler(), QuadraturePointsGroup< DIM >::QuadraturePointsGroup(), QuadraticMeshHelper< DIM >::AddInternalNodesToElements(), AbstractFunctionalCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::Calculate(), AbstractFeVolumeIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM, CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX, INTERPOLATION_LEVEL >::DoAssemble(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ExportToMesher(), Toroidal2dMesh::GenerateVectorsOfElementsStraddlingCylindricalPeriodicBoundaries(), Cylindrical2dMesh::GenerateVectorsOfElementsStraddlingPeriodicBoundaries(), Toroidal2dMesh::GenerateVectorsOfElementsStraddlingToroidalPeriodicBoundaries(), PapillaryFibreCalculator::GetRadiusVectors(), Cylindrical2dMesh::ReconstructCylindricalMesh(), Toroidal2dMesh::ReconstructCylindricalMesh(), Toroidal2dMesh::ReconstructToroidalMesh(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::RefreshJacobianCachedData(), Toroidal2dMesh::ReMesh(), PapillaryFibreCalculator::SmoothStructureTensors(), Cylindrical2dMesh::UseTheseElementsToDecideMeshing(), CellPopulationElementWriter< ELEMENT_DIM, SPACE_DIM >::Visit(), VtkMeshWriter< ELEMENT_DIM, SPACE_DIM >::WriteFilesUsingMesh(), and XdmfMeshWriter< ELEMENT_DIM, SPACE_DIM >::WriteFilesUsingMesh().
|
inline |
Definition at line 732 of file AbstractTetrahedralMesh.hpp.
Referenced by AbstractCorrectionTermAssembler< ELEM_DIM, SPACE_DIM, PROBLEM_DIM >::AbstractCorrectionTermAssembler(), QuadraturePointsGroup< DIM >::QuadraturePointsGroup(), QuadraticMeshHelper< DIM >::AddInternalNodesToElements(), AbstractFunctionalCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::Calculate(), AbstractFeVolumeIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM, CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX, INTERPOLATION_LEVEL >::DoAssemble(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ExportToMesher(), Toroidal2dMesh::GenerateVectorsOfElementsStraddlingCylindricalPeriodicBoundaries(), Cylindrical2dMesh::GenerateVectorsOfElementsStraddlingPeriodicBoundaries(), Toroidal2dMesh::GenerateVectorsOfElementsStraddlingToroidalPeriodicBoundaries(), PapillaryFibreCalculator::GetRadiusVectors(), Cylindrical2dMesh::ReconstructCylindricalMesh(), Toroidal2dMesh::ReconstructCylindricalMesh(), Toroidal2dMesh::ReconstructToroidalMesh(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::RefreshJacobianCachedData(), Toroidal2dMesh::ReMesh(), PapillaryFibreCalculator::SmoothStructureTensors(), Cylindrical2dMesh::UseTheseElementsToDecideMeshing(), CellPopulationElementWriter< ELEMENT_DIM, SPACE_DIM >::Visit(), VtkMeshWriter< ELEMENT_DIM, SPACE_DIM >::WriteFilesUsingMesh(), and XdmfMeshWriter< ELEMENT_DIM, SPACE_DIM >::WriteFilesUsingMesh().
|
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.
rHaloIndices | A vector to fill with the global indices of the nodes which are locally halos |
Reimplemented in DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, and DistributedTetrahedralMesh< DIM, DIM >.
Definition at line 829 of file AbstractTetrahedralMesh.cpp.
|
virtual |
Compute the inverse Jacobian for a given element in the mesh.
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< 3, 3 >, and TetrahedralMesh< DIM, DIM >.
Definition at line 167 of file AbstractTetrahedralMesh.cpp.
|
virtual |
Reimplemented in NodesOnlyMesh< SPACE_DIM >, NodesOnlyMesh< 2 >, and NodesOnlyMesh< DIM >.
Definition at line 135 of file AbstractTetrahedralMesh.cpp.
unsigned AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetNearestElementIndexFromTestElements | ( | const ChastePoint< SPACE_DIM > & | rTestPoint, |
std::set< unsigned > | testElements | ||
) |
As with GetNearestElementIndex() except only searches in the given set of elements.
rTestPoint | reference to the point |
testElements | a set of elements (element indices) to look in |
Definition at line 1039 of file AbstractTetrahedralMesh.cpp.
References EXCEPT_IF_NOT.
unsigned AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetNumAllBoundaryElements | ( | ) | const |
Definition at line 117 of file AbstractTetrahedralMesh.cpp.
Referenced by Cylindrical2dMesh::ReconstructCylindricalMesh(), and TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::RefreshJacobianCachedData().
unsigned AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetNumAllElements | ( | ) | const |
Definition at line 99 of file AbstractTetrahedralMesh.cpp.
Referenced by Cylindrical2dVertexMesh::Cylindrical2dVertexMesh(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::EdgeIterator::EdgeIterator(), Toroidal2dVertexMesh::Toroidal2dVertexMesh(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::EdgesBegin(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::EdgesEnd(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::RefreshJacobianCachedData(), Cylindrical2dMesh::ReMesh(), Toroidal2dMesh::ReMesh(), and Cylindrical2dMesh::UseTheseElementsToDecideMeshing().
|
virtual |
Reimplemented in DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, DistributedTetrahedralMesh< DIM, DIM >, MutableMesh< ELEMENT_DIM, SPACE_DIM >, MutableMesh< 2, 2 >, MutableMesh< DIM, DIM >, and MutableMesh< SPACE_DIM, SPACE_DIM >.
Definition at line 105 of file AbstractTetrahedralMesh.cpp.
Referenced by AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructFromMesh(), and BoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::DefineZeroNeumannOnMeshBoundary().
|
virtual |
This will always return zero until overridden in the MixedDimensionMesh class
Reimplemented in MixedDimensionMesh< ELEMENT_DIM, SPACE_DIM >, and MixedDimensionMesh< ELEMENT_DIM, ELEMENT_DIM >.
Definition at line 123 of file AbstractTetrahedralMesh.cpp.
|
virtual |
Reimplemented in DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, DistributedTetrahedralMesh< DIM, DIM >, MutableMesh< ELEMENT_DIM, SPACE_DIM >, MutableMesh< 2, 2 >, MutableMesh< DIM, DIM >, and MutableMesh< SPACE_DIM, SPACE_DIM >.
Definition at line 87 of file AbstractTetrahedralMesh.cpp.
Referenced by AbstractCorrectionTermAssembler< ELEM_DIM, SPACE_DIM, PROBLEM_DIM >::AbstractCorrectionTermAssembler(), PapillaryFibreCalculator::PapillaryFibreCalculator(), QuadraturePointsGroup< DIM >::QuadraturePointsGroup(), PapillaryFibreCalculator::CalculateFibreOrientations(), CuboidMeshConstructor< ELEMENT_DIM, SPACE_DIM >::Construct(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructFromMesh(), AbstractCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::SetFineCoarseMeshPair(), FineCoarseMeshPair< DIM >::SetUpBoxes(), CellwiseDataGradient< DIM >::SetupGradients(), AveragedSourceEllipticPde< DIM >::SetupSourceTerms(), AveragedSourceParabolicPde< DIM >::SetupSourceTerms(), VolumeDependentAveragedSourceEllipticPde< DIM >::SetupSourceTerms(), and XdmfMeshWriter< ELEMENT_DIM, SPACE_DIM >::WriteFilesUsingMesh().
|
virtual |
Reimplemented in DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, and DistributedTetrahedralMesh< DIM, DIM >.
Definition at line 111 of file AbstractTetrahedralMesh.cpp.
Referenced by QuadraticMeshHelper< DIM >::AddInternalNodesToBoundaryElements().
|
virtual |
Reimplemented in DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, and DistributedTetrahedralMesh< DIM, DIM >.
Definition at line 93 of file AbstractTetrahedralMesh.cpp.
Referenced by QuadraticMeshHelper< DIM >::AddInternalNodesToElements().
|
virtual |
Reimplemented in QuadraticMesh< DIM >.
Definition at line 129 of file AbstractTetrahedralMesh.cpp.
Referenced by CmguiDeformedSolutionsWriter< DIM >::CmguiDeformedSolutionsWriter().
|
virtual |
Compute the weighted direction for a given boundary element.
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< 3, 3 >, and TetrahedralMesh< DIM, DIM >.
Definition at line 177 of file AbstractTetrahedralMesh.cpp.
|
inlineprivate |
Loads a mesh by using TrianglesMeshReader and the location in ArchiveLocationInfo.
archive | |
version |
Definition at line 190 of file AbstractTetrahedralMesh.hpp.
References AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructFromMeshReader(), ArchiveLocationInfo::GetArchiveDirectory(), ArchiveLocationInfo::GetMeshFilename(), DistributedVectorFactory::GetNumProcs(), DistributedVectorFactory::GetOriginalFactory(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mMeshIsLinear, AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mpDistributedVectorFactory, AbstractMesh< ELEMENT_DIM, SPACE_DIM >::SetDistributedVectorFactory(), DistributedVectorFactory::SetFromFactory(), and TrianglesMeshReader< ELEMENT_DIM, SPACE_DIM >::SetNodePermutation().
|
inlineprivate |
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.
archive | the archive |
version | the current version of this class |
Definition at line 118 of file AbstractTetrahedralMesh.hpp.
References ABORT_IF_THROWS, PetscTools::AmMaster(), PetscTools::Barrier(), FileFinder::CopyTo(), FileFinder::FindMatches(), ArchiveLocationInfo::GetArchiveDirectory(), ArchiveLocationInfo::GetArchiveRelativePath(), FileFinder::GetExtension(), FileFinder::GetLeafNameNoExtension(), AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetMeshFileBaseName(), ArchiveLocationInfo::GetMeshFilename(), FileFinder::GetParent(), AbstractMesh< ELEMENT_DIM, SPACE_DIM >::IsMeshOnDisk(), AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mMeshChangesDuringSimulation, AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::mMeshIsLinear, AbstractMesh< ELEMENT_DIM, SPACE_DIM >::rGetNodePermutation(), TrianglesMeshWriter< ELEMENT_DIM, SPACE_DIM >::SetWriteFilesAsBinary(), AbstractTetrahedralMeshWriter< ELEMENT_DIM, SPACE_DIM >::WriteFilesUsingMesh(), and AbstractTetrahedralMeshWriter< ELEMENT_DIM, SPACE_DIM >::WriteFilesUsingMeshReaderAndMesh().
|
protectedvirtual |
Sets the ownership of each element according to which nodes are owned by the process.
Information on node ownership comes from the distributed vector factory and an element is "owned" if one or more of its nodes are owned
Reimplemented from AbstractMesh< ELEMENT_DIM, SPACE_DIM >.
Reimplemented in DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, and DistributedTetrahedralMesh< DIM, DIM >.
Definition at line 45 of file AbstractTetrahedralMesh.cpp.
References AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNodeGlobalIndex(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), and AbstractElement< ELEMENT_DIM, SPACE_DIM >::SetOwnership().
|
privatepure 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.
index | the global index of the boundary element |
Implemented in DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, DistributedTetrahedralMesh< DIM, DIM >, TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, TetrahedralMesh< 3, 3 >, and TetrahedralMesh< DIM, DIM >.
|
privatepure 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.
index | the global index of the element |
Implemented in DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, DistributedTetrahedralMesh< DIM, DIM >, TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >, TetrahedralMesh< 3, 3 >, and TetrahedralMesh< DIM, DIM >.
|
friend |
Definition at line 800 of file AbstractTetrahedralMesh.hpp.
Needed for serialization.
Definition at line 104 of file AbstractTetrahedralMesh.hpp.
Definition at line 74 of file AbstractTetrahedralMesh.hpp.
|
protected |
Vector of pointers to boundary elements in the mesh.
Definition at line 280 of file AbstractTetrahedralMesh.hpp.
Referenced by TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ImportFromMesher(), Cylindrical2dMesh::ReMesh(), Toroidal2dMesh::ReMesh(), and TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::SolveBoundaryElementMapping().
|
protected |
Vector of pointers to elements in the mesh.
Definition at line 277 of file AbstractTetrahedralMesh.hpp.
Referenced by AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ElementIterator::ElementIterator(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ImportFromMesher(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::SolveElementMapping(), and Cylindrical2dMesh::UseTheseElementsToDecideMeshing().
|
protected |
Most tet meshes are linear (set to true). Set to false in quadratics.
Definition at line 79 of file AbstractTetrahedralMesh.hpp.
Referenced by QuadraticMesh< DIM >::QuadraticMesh(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::load(), and AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::save().