Chaste
Release::2017.1
|
#include <Toroidal2dVertexMesh.hpp>
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 |
void | SetDistanceForT3SwapChecking (double distanceForT3SwapChecking) |
double | GetDistanceForT3SwapChecking () 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) |
virtual 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 |
double | mDistanceForT3SwapChecking |
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 | ( | ) |
Toroidal2dVertexMesh::~Toroidal2dVertexMesh | ( | ) |
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().
Referenced by serialize().
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 267 of file Toroidal2dVertexMesh.cpp.
References ElementData::AttributeValue, CHASTE_CLASS_EXPORT, 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().
Referenced by serialize().
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().
Referenced by serialize().
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.
References mHeight, and mWidth.
Referenced by serialize().
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.
References mHeight, and mWidth.
Referenced by serialize().
|
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.
References AddNode(), CHASTE_CLASS_EXPORT, ConstructFromMeshReader(), GetMeshForVtk(), GetVectorFromAtoB(), GetWidth(), mHeight, mWidth, SetNode(), Toroidal2dVertexMesh(), and ~Toroidal2dVertexMesh().
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(), and serialize().
|
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().