![]() |
Chaste
Release::3.4
|
#include <Toroidal2dVertexMesh.hpp>
Inheritance diagram for Toroidal2dVertexMesh:
Collaboration diagram for Toroidal2dVertexMesh:Public Member Functions | |
| Toroidal2dVertexMesh (double width, double height, std::vector< Node< 2 > * > nodes, std::vector< VertexElement< 2, 2 > * > vertexElements, double cellRearrangementThreshold=0.01, double t2Threshold=0.001) | |
| Toroidal2dVertexMesh () | |
| ~Toroidal2dVertexMesh () | |
| c_vector< double, 2 > | GetVectorFromAtoB (const c_vector< double, 2 > &rLocation1, const c_vector< double, 2 > &rLocation2) |
| void | SetNode (unsigned nodeIndex, ChastePoint< 2 > point) |
| double | GetWidth (const unsigned &rDimension) const |
| unsigned | AddNode (Node< 2 > *pNewNode) |
| MutableVertexMesh< 2, 2 > * | GetMeshForVtk () |
| void | ConstructFromMeshReader (AbstractMeshReader< 2, 2 > &rMeshReader, double width, double height) |
Public Member Functions inherited from MutableVertexMesh< 2, 2 > | |
| MutableVertexMesh (std::vector< Node< SPACE_DIM > * > nodes, std::vector< VertexElement< ELEMENT_DIM, SPACE_DIM > * > vertexElements, double cellRearrangementThreshold=0.01, double t2Threshold=0.001, double cellRearrangementRatio=1.5, double protorosetteFormationProbability=0.0, double protorosetteResolutionProbabilityPerTimestep=0.0, double rosetteResolutionProbabilityPerTimestep=0.0) | |
| MutableVertexMesh () | |
| virtual | ~MutableVertexMesh () |
| void | SetCellRearrangementThreshold (double cellRearrangementThreshold) |
| void | SetT2Threshold (double t2Threshold) |
| void | SetCellRearrangementRatio (double cellRearrangementRatio) |
| void | SetProtorosetteFormationProbability (double protorosetteFormationProbability) |
| void | SetProtorosetteResolutionProbabilityPerTimestep (double protorosetteResolutionProbabilityPerTimestep) |
| void | SetRosetteResolutionProbabilityPerTimestep (double rosetteResolutionProbabilityPerTimestep) |
| virtual void | SetNode (unsigned nodeIndex, ChastePoint< SPACE_DIM > point) |
| void | SetCheckForInternalIntersections (bool checkForInternalIntersections) |
| double | GetCellRearrangementThreshold () const |
| double | GetT2Threshold () const |
| double | GetCellRearrangementRatio () const |
| double | GetProtorosetteFormationProbability () const |
| double | GetProtorosetteResolutionProbabilityPerTimestep () const |
| double | GetRosetteResolutionProbabilityPerTimestep () const |
| unsigned | GetNumNodes () const |
| unsigned | GetNumElements () const |
| bool | GetCheckForInternalIntersections () const |
| std::vector< c_vector< double, SPACE_DIM > > | GetLocationsOfT1Swaps () |
| c_vector< double, SPACE_DIM > | GetLastT2SwapLocation () |
| std::vector< c_vector< double, SPACE_DIM > > | GetLocationsOfT3Swaps () |
| void | ClearLocationsOfT1Swaps () |
| void | ClearLocationsOfT3Swaps () |
| unsigned | AddNode (Node< SPACE_DIM > *pNewNode) |
| void | DeleteElementPriorToReMesh (unsigned index) |
| void | DeleteNodePriorToReMesh (unsigned index) |
| unsigned | DivideElementAlongShortAxis (VertexElement< ELEMENT_DIM, SPACE_DIM > *pElement, bool placeOriginalElementBelow=false) |
| unsigned | DivideElementAlongGivenAxis (VertexElement< ELEMENT_DIM, SPACE_DIM > *pElement, c_vector< double, SPACE_DIM > axisOfDivision, bool placeOriginalElementBelow=false) |
| unsigned | AddElement (VertexElement< ELEMENT_DIM, SPACE_DIM > *pNewElement) |
| bool | CheckForT2Swaps (VertexElementMap &rElementMap) |
| void | Clear () |
| void | DivideEdge (Node< SPACE_DIM > *pNodeA, Node< SPACE_DIM > *pNodeB) |
| void | RemoveDeletedNodesAndElements (VertexElementMap &rElementMap) |
| void | RemoveDeletedNodes () |
| virtual void | ReMesh (VertexElementMap &rElementMap) |
| void | ReMesh () |
Public Member Functions inherited from VertexMesh< ELEMENT_DIM, SPACE_DIM > | |
| VertexElementIterator | GetElementIteratorBegin (bool skipDeletedElements=true) |
| VertexElementIterator | GetElementIteratorEnd () |
| VertexMesh (std::vector< Node< SPACE_DIM > * > nodes, std::vector< VertexElement< ELEMENT_DIM, SPACE_DIM > * > vertexElements) | |
| VertexMesh (std::vector< Node< SPACE_DIM > * > nodes, std::vector< VertexElement< ELEMENT_DIM-1, SPACE_DIM > * > faces, std::vector< VertexElement< ELEMENT_DIM, SPACE_DIM > * > vertexElements) | |
| VertexMesh (TetrahedralMesh< 2, 2 > &rMesh, bool isPeriodic=false) | |
| VertexMesh (TetrahedralMesh< 3, 3 > &rMesh) | |
| VertexMesh () | |
| virtual | ~VertexMesh () |
| unsigned | GetNumAllElements () const |
| virtual unsigned | GetNumFaces () const |
| VertexElement< ELEMENT_DIM, SPACE_DIM > * | GetElement (unsigned index) const |
| VertexElement< ELEMENT_DIM-1, SPACE_DIM > * | GetFace (unsigned index) const |
| virtual c_vector< double, SPACE_DIM > | GetCentroidOfElement (unsigned index) |
| void | ConstructFromMeshReader (AbstractMeshReader< ELEMENT_DIM, SPACE_DIM > &rMeshReader) |
| unsigned | GetDelaunayNodeIndexCorrespondingToVoronoiElementIndex (unsigned elementIndex) |
| unsigned | GetVoronoiElementIndexCorrespondingToDelaunayNodeIndex (unsigned nodeIndex) |
| unsigned | GetRosetteRankOfElement (unsigned index) |
| virtual c_vector< double, SPACE_DIM > | GetVectorFromAtoB (const c_vector< double, SPACE_DIM > &rLocationA, const c_vector< double, SPACE_DIM > &rLocationB) |
| virtual double | GetVolumeOfElement (unsigned index) |
| virtual double | GetSurfaceAreaOfElement (unsigned index) |
| c_vector< double, SPACE_DIM > | GetAreaGradientOfElementAtNode (VertexElement< ELEMENT_DIM, SPACE_DIM > *pElement, unsigned localIndex) |
| c_vector< double, SPACE_DIM > | GetPreviousEdgeGradientOfElementAtNode (VertexElement< ELEMENT_DIM, SPACE_DIM > *pElement, unsigned localIndex) |
| c_vector< double, SPACE_DIM > | GetNextEdgeGradientOfElementAtNode (VertexElement< ELEMENT_DIM, SPACE_DIM > *pElement, unsigned localIndex) |
| c_vector< double, SPACE_DIM > | GetPerimeterGradientOfElementAtNode (VertexElement< ELEMENT_DIM, SPACE_DIM > *pElement, unsigned localIndex) |
| virtual c_vector< double, 3 > | CalculateMomentsOfElement (unsigned index) |
| double | GetEdgeLength (unsigned elementIndex1, unsigned elementIndex2) |
| double | GetElongationShapeFactorOfElement (unsigned elementIndex) |
| double | CalculateUnitNormalToFaceWithArea (VertexElement< ELEMENT_DIM-1, SPACE_DIM > *pFace, c_vector< double, SPACE_DIM > &rNormal) |
| virtual double | CalculateAreaOfFace (VertexElement< ELEMENT_DIM-1, SPACE_DIM > *pFace) |
| c_vector< double, SPACE_DIM > | GetShortAxisOfElement (unsigned index) |
| std::set< unsigned > | GetNeighbouringNodeIndices (unsigned nodeIndex) |
| std::set< unsigned > | GetNeighbouringNodeNotAlsoInElement (unsigned nodeIndex, unsigned elemIndex) |
| std::set< unsigned > | GetNeighbouringElementIndices (unsigned elementIndex) |
| template<> | |
| VertexMesh (TetrahedralMesh< 2, 2 > &rMesh, bool isPeriodic) | |
| template<> | |
| VertexMesh (TetrahedralMesh< 3, 3 > &rMesh) | |
Public Member Functions inherited from AbstractMesh< ELEMENT_DIM, SPACE_DIM > | |
| NodeIterator | GetNodeIteratorBegin (bool skipDeletedNodes=true) |
| NodeIterator | GetNodeIteratorEnd () |
| AbstractMesh () | |
| virtual | ~AbstractMesh () |
| 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 |
| double | GetDistanceBetweenNodes (unsigned indexA, unsigned indexB) |
| 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 () |
Private Member Functions | |
| template<class Archive > | |
| void | serialize (Archive &archive, const unsigned int version) |
Private Attributes | |
| double | mWidth |
| double | mHeight |
Friends | |
| class | TestToroidal2dVertexMesh |
| class | boost::serialization::access |
Additional Inherited Members | |
Public Types inherited from AbstractMesh< ELEMENT_DIM, SPACE_DIM > | |
| typedef std::vector< Node < SPACE_DIM > * >::const_iterator | BoundaryNodeIterator |
Protected Member Functions inherited from MutableVertexMesh< 2, 2 > | |
| unsigned | DivideElement (VertexElement< ELEMENT_DIM, SPACE_DIM > *pElement, unsigned nodeAIndex, unsigned nodeBIndex, bool placeOriginalElementBelow=false) |
| bool | CheckForSwapsFromShortEdges () |
| bool | CheckForIntersections () |
| virtual void | IdentifySwapType (Node< SPACE_DIM > *pNodeA, Node< SPACE_DIM > *pNodeB) |
| void | PerformNodeMerge (Node< SPACE_DIM > *pNodeA, Node< SPACE_DIM > *pNodeB) |
| void | PerformT1Swap (Node< SPACE_DIM > *pNodeA, Node< SPACE_DIM > *pNodeB, std::set< unsigned > &rElementsContainingNodes) |
| void | PerformIntersectionSwap (Node< SPACE_DIM > *pNode, unsigned elementIndex) |
| void | PerformT2Swap (VertexElement< ELEMENT_DIM, SPACE_DIM > &rElement) |
| void | PerformT3Swap (Node< SPACE_DIM > *pNode, unsigned elementIndex) |
| void | PerformVoidRemoval (Node< SPACE_DIM > *pNodeA, Node< SPACE_DIM > *pNodeB, Node< SPACE_DIM > *pNodeC) |
| virtual void | HandleHighOrderJunctions (Node< SPACE_DIM > *pNodeA, Node< SPACE_DIM > *pNodeB) |
| void | PerformRosetteRankIncrease (Node< SPACE_DIM > *pNodeA, Node< SPACE_DIM > *pNodeB) |
| void | PerformProtorosetteResolution (Node< SPACE_DIM > *pProtorosetteNode) |
| void | PerformRosetteRankDecrease (Node< SPACE_DIM > *pRosetteNode) |
| void | CheckForRosettes () |
| c_vector< double, 2 > | WidenEdgeOrCorrectIntersectionLocationIfNecessary (unsigned indexA, unsigned indexB, c_vector< double, 2 > intersection) |
| void | serialize (Archive &archive, const unsigned int version) |
Protected Member Functions inherited from VertexMesh< ELEMENT_DIM, SPACE_DIM > | |
| unsigned | SolveNodeMapping (unsigned index) const |
| unsigned | SolveElementMapping (unsigned index) const |
| unsigned | SolveBoundaryElementMapping (unsigned index) const |
| void | GenerateVerticesFromElementCircumcentres (TetrahedralMesh< ELEMENT_DIM, SPACE_DIM > &rMesh) |
| bool | ElementIncludesPoint (const c_vector< double, SPACE_DIM > &rTestPoint, unsigned elementIndex) |
| unsigned | GetLocalIndexForElementEdgeClosestToPoint (const c_vector< double, SPACE_DIM > &rTestPoint, unsigned elementIndex) |
| template<class Archive > | |
| void | save (Archive &archive, const unsigned int version) const |
| template<class Archive > | |
| void | load (Archive &archive, const unsigned int version) |
Protected Member Functions inherited from AbstractMesh< ELEMENT_DIM, SPACE_DIM > | |
| virtual void | SetElementOwnerships () |
| ChasteCuboid< SPACE_DIM > | CalculateBoundingBox (const std::vector< Node< SPACE_DIM > * > &rNodes) const |
Protected Attributes inherited from MutableVertexMesh< 2, 2 > | |
| double | mCellRearrangementThreshold |
| double | mCellRearrangementRatio |
| double | mT2Threshold |
| double | mProtorosetteFormationProbability |
| double | mProtorosetteResolutionProbabilityPerTimestep |
| double | mRosetteResolutionProbabilityPerTimestep |
| bool | mCheckForInternalIntersections |
| std::vector< unsigned > | mDeletedNodeIndices |
| std::vector< unsigned > | mDeletedElementIndices |
| std::vector< c_vector< double, SPACE_DIM > > | mLocationsOfT1Swaps |
| c_vector< double, SPACE_DIM > | mLastT2SwapLocation |
| std::vector< c_vector< double, SPACE_DIM > > | mLocationsOfT3Swaps |
Protected Attributes inherited from VertexMesh< ELEMENT_DIM, SPACE_DIM > | |
| std::vector< VertexElement < ELEMENT_DIM, SPACE_DIM > * > | mElements |
| std::vector< VertexElement < ELEMENT_DIM-1, SPACE_DIM > * > | mFaces |
| std::map< unsigned, unsigned > | mVoronoiElementIndexMap |
| TetrahedralMesh< ELEMENT_DIM, SPACE_DIM > * | mpDelaunayMesh |
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 |
A subclass of MutableVertexMesh<2,2> for a rectangular mesh with periodic left and right boundaries and top and bottom boundaries, representing a toroidal geometry.
The class works by overriding calls such as ReMesh() and GetVectorFromAtoB() so that simulation classes can treat this class in exactly the same way as a MutableMesh<2,2>.
Definition at line 53 of file Toroidal2dVertexMesh.hpp.
| Toroidal2dVertexMesh::Toroidal2dVertexMesh | ( | double | width, |
| double | height, | ||
| std::vector< Node< 2 > * > | nodes, | ||
| std::vector< VertexElement< 2, 2 > * > | vertexElements, | ||
| double | cellRearrangementThreshold = 0.01, |
||
| double | t2Threshold = 0.001 |
||
| ) |
Default constructor.
| width | the width of the mesh |
| height | the height of the mesh |
| nodes | vector of pointers to nodes |
| vertexElements | vector of pointers to VertexElements |
| cellRearrangementThreshold | the minimum threshold distance for element rearrangement (defaults to 0.01) |
| t2Threshold | the maximum threshold distance for Type 2 swaps (defaults to 0.001) |
Definition at line 38 of file Toroidal2dVertexMesh.cpp.
References MutableVertexMesh< 2, 2 >::ReMesh().
| Toroidal2dVertexMesh::Toroidal2dVertexMesh | ( | ) |
Constructor.
Definition at line 52 of file Toroidal2dVertexMesh.cpp.
| Toroidal2dVertexMesh::~Toroidal2dVertexMesh | ( | ) |
Destructor.
Definition at line 56 of file Toroidal2dVertexMesh.cpp.
Overridden AddNode() method.
| pNewNode | the node to be added to the mesh |
Definition at line 135 of file Toroidal2dVertexMesh.cpp.
References MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::AddNode(), Node< SPACE_DIM >::GetPoint(), and SetNode().
| void Toroidal2dVertexMesh::ConstructFromMeshReader | ( | AbstractMeshReader< 2, 2 > & | rMeshReader, |
| double | width, | ||
| double | height | ||
| ) |
Construct the mesh using a MeshReader.
| rMeshReader | the mesh reader |
| width | the mesh width |
| height | the mesh height |
Definition at line 265 of file Toroidal2dVertexMesh.cpp.
References ElementData::AttributeValue, EXCEPTION, AbstractMeshReader< ELEMENT_DIM, SPACE_DIM >::GetNextElementData(), AbstractMeshReader< ELEMENT_DIM, SPACE_DIM >::GetNextNode(), AbstractMeshReader< ELEMENT_DIM, SPACE_DIM >::GetNumElementAttributes(), AbstractMeshReader< ELEMENT_DIM, SPACE_DIM >::GetNumElements(), AbstractMeshReader< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetVolumeOfElement(), AbstractMeshReader< ELEMENT_DIM, SPACE_DIM >::HasNodePermutation(), MutableVertexMesh< 2, 2 >::mCellRearrangementRatio, MutableVertexMesh< 2, 2 >::mCellRearrangementThreshold, VertexMesh< ELEMENT_DIM, SPACE_DIM >::mElements, mHeight, AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mMeshChangesDuringSimulation, AbstractMesh< ELEMENT_DIM, SPACE_DIM >::mNodes, MutableVertexMesh< 2, 2 >::mT2Threshold, mWidth, ElementData::NodeIndices, AbstractMeshReader< ELEMENT_DIM, SPACE_DIM >::Reset(), and AbstractElement< ELEMENT_DIM, SPACE_DIM >::SetAttribute().
| MutableVertexMesh< 2, 2 > * Toroidal2dVertexMesh::GetMeshForVtk | ( | ) |
Return a pointer to an extended mesh that is a 'non-periodic' version of our mesh. This can then be used when writing to VTK.
Definition at line 146 of file Toroidal2dVertexMesh.cpp.
References VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetElementIteratorBegin(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetElementIteratorEnd(), Node< SPACE_DIM >::GetIndex(), AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetNode(), MutableVertexMesh< 2, 2 >::GetNumNodes(), MutableVertexMesh< 2, 2 >::mCellRearrangementThreshold, mHeight, MutableVertexMesh< 2, 2 >::mT2Threshold, mWidth, and AbstractElement< ELEMENT_DIM, SPACE_DIM >::SetIndex().
| c_vector< double, 2 > Toroidal2dVertexMesh::GetVectorFromAtoB | ( | const c_vector< double, 2 > & | rLocation1, |
| const c_vector< double, 2 > & | rLocation2 | ||
| ) |
Overridden GetVectorFromAtoB() method.
This method evaluates the (surface) distance between two points in a 2D toroidal geometry.
| rLocation1 | the x and y co-ordinates of point 1 |
| rLocation2 | the x and y co-ordinates of point 2 |
Definition at line 60 of file Toroidal2dVertexMesh.cpp.
Overridden GetWidth() method.
Calculate the 'width' of any dimension of the mesh, taking periodicity into account.
| rDimension | a dimension (0 or 1) |
Reimplemented from AbstractMesh< ELEMENT_DIM, SPACE_DIM >.
Definition at line 122 of file Toroidal2dVertexMesh.cpp.
|
inlineprivate |
Archives the member variables of the object which have to be preserved during its lifetime.
The remaining member variables are re-initialised before being used by each ReMesh() call so they do not need to be archived.
| archive | the archive |
| version | the current version of this class |
Definition at line 78 of file Toroidal2dVertexMesh.hpp.
| void Toroidal2dVertexMesh::SetNode | ( | unsigned | nodeIndex, |
| ChastePoint< 2 > | point | ||
| ) |
Overridden SetNode() method.
If the location should be set outside a toroidal boundary move it back onto the cylinder.
| nodeIndex | is the index of the node to be moved |
| point | is the new target location of the node |
Definition at line 91 of file Toroidal2dVertexMesh.cpp.
References mHeight, mWidth, ChastePoint< DIM >::rGetLocation(), ChastePoint< DIM >::SetCoordinate(), and MutableVertexMesh< ELEMENT_DIM, SPACE_DIM >::SetNode().
Referenced by AddNode().
|
friend |
Needed for serialization.
Definition at line 66 of file Toroidal2dVertexMesh.hpp.
|
private |
The height of the mesh, taking account of top-bottom periodicity.
Definition at line 63 of file Toroidal2dVertexMesh.hpp.
Referenced by ConstructFromMeshReader(), GetMeshForVtk(), GetVectorFromAtoB(), GetWidth(), serialize(), and SetNode().
|
private |
The width of the mesh, taking account of left-right periodicity.
Definition at line 60 of file Toroidal2dVertexMesh.hpp.
Referenced by ConstructFromMeshReader(), GetMeshForVtk(), GetVectorFromAtoB(), GetWidth(), serialize(), and SetNode().