#include <DistributedBoxCollection.hpp>

Public Member Functions | |
| DistributedBoxCollection (double boxWidth, c_vector< double, 2 *DIM > domainSize, bool isPeriodicInX=false, int localRows=PETSC_DECIDE) | |
| ~DistributedBoxCollection () | |
| void | EmptyBoxes () |
| void | SetupHaloBoxes () |
| void | UpdateHaloBoxes () |
| unsigned | GetNumLocalRows () const |
| bool | GetBoxOwnership (unsigned globalIndex) |
| bool | IsInteriorBox (unsigned globalIndex) |
| bool | GetHaloBoxOwnership (unsigned globalIndex) |
| unsigned | CalculateGlobalIndex (c_vector< unsigned, DIM > coordinateIndices) |
| unsigned | CalculateContainingBox (Node< DIM > *pNode) |
| unsigned | CalculateContainingBox (c_vector< double, DIM > &rLocation) |
| c_vector< unsigned, DIM > | CalculateCoordinateIndices (unsigned globalIndex) |
| Box< DIM > & | rGetBox (unsigned boxIndex) |
| Box< DIM > & | rGetHaloBox (unsigned boxIndex) |
| unsigned | GetNumBoxes () |
| unsigned | GetNumLocalBoxes () |
| c_vector< double, 2 *DIM > | rGetDomainSize () const |
| bool | GetAreLocalBoxesSet () const |
| double | GetBoxWidth () const |
| unsigned | GetNumRowsOfBoxes () const |
| int | LoadBalance (std::vector< int > localDistribution) |
| void | SetupLocalBoxesHalfOnly () |
| void | SetupAllLocalBoxes () |
| std::set< unsigned > | GetLocalBoxes (unsigned boxIndex) |
| bool | IsOwned (Node< DIM > *pNode) |
| bool | IsOwned (c_vector< double, DIM > &location) |
| unsigned | GetProcessOwningNode (Node< DIM > *pNode) |
| std::vector< unsigned > & | rGetHaloNodesRight () |
| std::vector< unsigned > & | rGetHaloNodesLeft () |
| void | SetCalculateNodeNeighbours (bool calculateNodeNeighbours) |
| void | CalculateNodePairs (std::vector< Node< DIM > * > &rNodes, std::vector< std::pair< Node< DIM > *, Node< DIM > * > > &rNodePairs, std::map< unsigned, std::set< unsigned > > &rNodeNeighbours) |
| void | CalculateInteriorNodePairs (std::vector< Node< DIM > * > &rNodes, std::vector< std::pair< Node< DIM > *, Node< DIM > * > > &rNodePairs, std::map< unsigned, std::set< unsigned > > &rNodeNeighbours) |
| void | CalculateBoundaryNodePairs (std::vector< Node< DIM > * > &rNodes, std::vector< std::pair< Node< DIM > *, Node< DIM > * > > &rNodePairs, std::map< unsigned, std::set< unsigned > > &rNodeNeighbours) |
| void | AddPairsFromBox (unsigned boxIndex, std::vector< std::pair< Node< DIM > *, Node< DIM > * > > &rNodePairs, std::map< unsigned, std::set< unsigned > > &rNodeNeighbours) |
| std::vector< int > | CalculateNumberOfNodesInEachStrip () |
Private Member Functions | |
| template<class Archive > | |
| void | serialize (Archive &archive, const unsigned int version) |
Private Attributes | |
| std::vector< Box< DIM > > | mBoxes |
| std::vector< Box< DIM > > | mHaloBoxes |
| std::vector< unsigned > | mHalosRight |
| std::vector< unsigned > | mHalosLeft |
| std::vector< unsigned > | mHaloNodesRight |
| std::vector< unsigned > | mHaloNodesLeft |
| std::map< unsigned, unsigned > | mBoxesMapping |
| std::map< unsigned, unsigned > | mHaloBoxesMapping |
| c_vector< double, 2 *DIM > | mDomainSize |
| double | mBoxWidth |
| unsigned | mNumBoxes |
| c_vector< unsigned, DIM > | mNumBoxesEachDirection |
| unsigned | mNumBoxesInAFace |
| std::vector< std::set< unsigned > > | mLocalBoxes |
| unsigned | mMinBoxIndex |
| unsigned | mMaxBoxIndex |
| bool | mIsPeriodicInX |
| bool | mAreLocalBoxesSet |
| DistributedVectorFactory * | mpDistributedBoxStackFactory |
| bool | mCalculateNodeNeighbours |
Static Private Attributes | |
| static const double | msFudge = 5e-14 |
Friends | |
| class | TestDistributedBoxCollection |
| class | boost::serialization::access |
A collection of 'boxes' partitioning the domain with information on which nodes are located in which box.
Definition at line 54 of file DistributedBoxCollection.hpp.
| DistributedBoxCollection< DIM >::DistributedBoxCollection | ( | double | boxWidth, | |
| c_vector< double, 2 *DIM > | domainSize, | |||
| bool | isPeriodicInX = false, |
|||
| int | localRows = PETSC_DECIDE | |||
| ) | [inline] |
| boxWidth | the width of each box (cut-off length in NodeBasedCellPopulation simulations) | |
| domainSize | the size of the domain, in the form (xmin, xmax, ymin, ymax) (etc) | |
| isPeriodicInX | whether the domain is peiodic in the x direction | |
| localRows | the number of local rows in a parallel DistributedBoxCollection. |
Definition at line 44 of file DistributedBoxCollection.cpp.
References DistributedVectorFactory::GetHigh(), DistributedVectorFactory::GetLow(), PetscTools::GetNumProcs(), PetscTools::IsSequential(), DistributedBoxCollection< DIM >::mBoxes, DistributedBoxCollection< DIM >::mBoxesMapping, DistributedBoxCollection< DIM >::mBoxWidth, DistributedBoxCollection< DIM >::mDomainSize, DistributedBoxCollection< DIM >::mMaxBoxIndex, DistributedBoxCollection< DIM >::mMinBoxIndex, DistributedBoxCollection< DIM >::mNumBoxes, DistributedBoxCollection< DIM >::mNumBoxesEachDirection, DistributedBoxCollection< DIM >::mNumBoxesInAFace, DistributedBoxCollection< DIM >::mpDistributedBoxStackFactory, and DistributedBoxCollection< DIM >::msFudge.
| DistributedBoxCollection< DIM >::~DistributedBoxCollection | ( | ) | [inline] |
Destructor - frees memory allocated to distributed vector.
Definition at line 122 of file DistributedBoxCollection.cpp.
References DistributedBoxCollection< DIM >::mpDistributedBoxStackFactory.
| void DistributedBoxCollection< DIM >::AddPairsFromBox | ( | unsigned | boxIndex, | |
| std::vector< std::pair< Node< DIM > *, Node< DIM > * > > & | rNodePairs, | |||
| std::map< unsigned, std::set< unsigned > > & | rNodeNeighbours | |||
| ) | [inline] |
A method pulled out of CalculateNodePairs methods that adds all pairs of nodes from neighbouring boxes of the box with index boxIndex.
| boxIndex | the box to add neighbours to. | |
| rNodePairs | the return value, a set of pairs of nodes | |
| rNodeNeighbours | the other return value, the neighbours of each node. |
Definition at line 1208 of file DistributedBoxCollection.cpp.
References DistributedBoxCollection< DIM >::GetBoxOwnership(), DistributedBoxCollection< DIM >::GetLocalBoxes(), DistributedBoxCollection< DIM >::mBoxes, DistributedBoxCollection< DIM >::mBoxesMapping, DistributedBoxCollection< DIM >::mCalculateNodeNeighbours, DistributedBoxCollection< DIM >::mHaloBoxes, DistributedBoxCollection< DIM >::mHaloBoxesMapping, DistributedBoxCollection< DIM >::rGetBox(), and Box< DIM >::rGetNodesContained().
Referenced by DistributedBoxCollection< DIM >::CalculateBoundaryNodePairs(), DistributedBoxCollection< DIM >::CalculateInteriorNodePairs(), and DistributedBoxCollection< DIM >::CalculateNodePairs().
| void DistributedBoxCollection< DIM >::CalculateBoundaryNodePairs | ( | std::vector< Node< DIM > * > & | rNodes, | |
| std::vector< std::pair< Node< DIM > *, Node< DIM > * > > & | rNodePairs, | |||
| std::map< unsigned, std::set< unsigned > > & | rNodeNeighbours | |||
| ) | [inline] |
The same as CalculateNodePairs() only we only work on boxes that are ''not'' interior on this process. I.e. some of their local boxes are halo boxes.
| rNodes | all the nodes to be consider | |
| rNodePairs | the return value, a set of pairs of nodes | |
| rNodeNeighbours | the other return value, the neighbours of each node. |
Definition at line 1191 of file DistributedBoxCollection.cpp.
References DistributedBoxCollection< DIM >::AddPairsFromBox(), DistributedBoxCollection< DIM >::IsInteriorBox(), and DistributedBoxCollection< DIM >::mBoxesMapping.
Referenced by NodesOnlyMesh< SPACE_DIM >::CalculateBoundaryNodePairs().
| unsigned DistributedBoxCollection< DIM >::CalculateContainingBox | ( | c_vector< double, DIM > & | rLocation | ) | [inline] |
| rLocation | The point |
Definition at line 262 of file DistributedBoxCollection.cpp.
References EXCEPTION, DistributedBoxCollection< DIM >::mBoxWidth, DistributedBoxCollection< DIM >::mDomainSize, DistributedBoxCollection< DIM >::mNumBoxes, DistributedBoxCollection< DIM >::mNumBoxesEachDirection, and DistributedBoxCollection< DIM >::msFudge.
| unsigned DistributedBoxCollection< DIM >::CalculateContainingBox | ( | Node< DIM > * | pNode | ) | [inline] |
| pNode | address of the node |
Definition at line 253 of file DistributedBoxCollection.cpp.
References Node< SPACE_DIM >::rGetLocation().
Referenced by NodesOnlyMesh< SPACE_DIM >::AddHaloNodesToBoxes(), NodesOnlyMesh< SPACE_DIM >::AddNodesToBoxes(), DistributedBoxCollection< DIM >::CalculateInteriorNodePairs(), DistributedBoxCollection< DIM >::CalculateNodePairs(), DistributedBoxCollection< DIM >::GetProcessOwningNode(), and DistributedBoxCollection< DIM >::IsOwned().
| c_vector< unsigned, DIM > DistributedBoxCollection< DIM >::CalculateCoordinateIndices | ( | unsigned | globalIndex | ) | [inline] |
Calculate x,y,z indices of box given its 'global' index.
| globalIndex | the global index of the box |
Definition at line 304 of file DistributedBoxCollection.cpp.
References DistributedBoxCollection< DIM >::mNumBoxesEachDirection, and NEVER_REACHED.
Referenced by DistributedBoxCollection< DIM >::CalculateNumberOfNodesInEachStrip(), and DistributedBoxCollection< DIM >::SetupLocalBoxesHalfOnly().
| unsigned DistributedBoxCollection< DIM >::CalculateGlobalIndex | ( | c_vector< unsigned, DIM > | coordinateIndices | ) | [inline] |
Given the (i,j,k) co-ordniates of a box in the collection, calculate its global index.
| coordinateIndices | the co-ordinate indices of the box (across, up, deep) |
Definition at line 236 of file DistributedBoxCollection.cpp.
References DistributedBoxCollection< DIM >::mNumBoxesEachDirection.
| void DistributedBoxCollection< DIM >::CalculateInteriorNodePairs | ( | std::vector< Node< DIM > * > & | rNodes, | |
| std::vector< std::pair< Node< DIM > *, Node< DIM > * > > & | rNodePairs, | |||
| std::map< unsigned, std::set< unsigned > > & | rNodeNeighbours | |||
| ) | [inline] |
The same as CalculateNodePairs() only we only work on boxes that are interior on this process. I.e. none of their local boxes are halo boxes.
| rNodes | all the nodes to be consider | |
| rNodePairs | the return value, a set of pairs of nodes | |
| rNodeNeighbours | the other return value, the neighbours of each node. |
Definition at line 1157 of file DistributedBoxCollection.cpp.
References DistributedBoxCollection< DIM >::AddPairsFromBox(), DistributedBoxCollection< DIM >::CalculateContainingBox(), DistributedBoxCollection< DIM >::GetBoxOwnership(), DistributedBoxCollection< DIM >::IsInteriorBox(), and DistributedBoxCollection< DIM >::mBoxesMapping.
Referenced by NodesOnlyMesh< SPACE_DIM >::CalculateInteriorNodePairs().
| void DistributedBoxCollection< DIM >::CalculateNodePairs | ( | std::vector< Node< DIM > * > & | rNodes, | |
| std::vector< std::pair< Node< DIM > *, Node< DIM > * > > & | rNodePairs, | |||
| std::map< unsigned, std::set< unsigned > > & | rNodeNeighbours | |||
| ) | [inline] |
Compute all the pairs of (potentially) connected nodes for cell_based simulations, ie nodes which are in a local box to the box containing the first node. **Note: the user still has to check that the node pairs are less than the cut-off distance apart.** The pairs are checked so that index1 < index2, so each connected pair of nodes is only in the set once.
| rNodes | all the nodes to be consider | |
| rNodePairs | the return value, a set of pairs of nodes | |
| rNodeNeighbours | the other return value, the neighbours of each node. |
Definition at line 1126 of file DistributedBoxCollection.cpp.
References DistributedBoxCollection< DIM >::AddPairsFromBox(), DistributedBoxCollection< DIM >::CalculateContainingBox(), DistributedBoxCollection< DIM >::GetBoxOwnership(), and DistributedBoxCollection< DIM >::mBoxesMapping.
| std::vector< int > DistributedBoxCollection< DIM >::CalculateNumberOfNodesInEachStrip | ( | ) | [inline] |
Calculate how many cells lie in each strip / face of boxes, used in load balancing
Definition at line 1284 of file DistributedBoxCollection.cpp.
References DistributedBoxCollection< DIM >::CalculateCoordinateIndices(), DistributedVectorFactory::GetHigh(), DistributedVectorFactory::GetLow(), DistributedBoxCollection< DIM >::mBoxes, DistributedBoxCollection< DIM >::mBoxesMapping, and DistributedBoxCollection< DIM >::mpDistributedBoxStackFactory.
Referenced by NodesOnlyMesh< SPACE_DIM >::LoadBalanceMesh().
| void DistributedBoxCollection< DIM >::EmptyBoxes | ( | ) | [inline] |
Remove the list of nodes stored in each box.
Definition at line 128 of file DistributedBoxCollection.cpp.
References DistributedBoxCollection< DIM >::mBoxes, and DistributedBoxCollection< DIM >::mHaloBoxes.
Referenced by NodesOnlyMesh< SPACE_DIM >::UpdateBoxCollection().
| bool DistributedBoxCollection< DIM >::GetAreLocalBoxesSet | ( | ) | const [inline] |
Definition at line 377 of file DistributedBoxCollection.cpp.
References DistributedBoxCollection< DIM >::mAreLocalBoxesSet.
| bool DistributedBoxCollection< DIM >::GetBoxOwnership | ( | unsigned | globalIndex | ) | [inline] |
| globalIndex | the global index of the box. |
Definition at line 213 of file DistributedBoxCollection.cpp.
References DistributedBoxCollection< DIM >::mMaxBoxIndex, and DistributedBoxCollection< DIM >::mMinBoxIndex.
Referenced by DistributedBoxCollection< DIM >::AddPairsFromBox(), DistributedBoxCollection< DIM >::CalculateInteriorNodePairs(), DistributedBoxCollection< DIM >::CalculateNodePairs(), and DistributedBoxCollection< DIM >::IsOwned().
| double DistributedBoxCollection< DIM >::GetBoxWidth | ( | ) | const [inline] |
Definition at line 383 of file DistributedBoxCollection.cpp.
References DistributedBoxCollection< DIM >::mBoxWidth.
| bool DistributedBoxCollection< DIM >::GetHaloBoxOwnership | ( | unsigned | globalIndex | ) | [inline] |
| globalIndex | the global index of the box. |
Definition at line 219 of file DistributedBoxCollection.cpp.
References PetscTools::IsParallel(), DistributedBoxCollection< DIM >::mMaxBoxIndex, DistributedBoxCollection< DIM >::mMinBoxIndex, and DistributedBoxCollection< DIM >::mNumBoxesInAFace.
Referenced by DistributedBoxCollection< DIM >::rGetHaloBox().
| std::set< unsigned > DistributedBoxCollection< DIM >::GetLocalBoxes | ( | unsigned | boxIndex | ) | [inline] |
Get the set of all the local boxes, i.e. itself and its nearest-neighbours.
| boxIndex | the index of the box |
Definition at line 1066 of file DistributedBoxCollection.cpp.
References DistributedBoxCollection< DIM >::mLocalBoxes, DistributedBoxCollection< DIM >::mMaxBoxIndex, and DistributedBoxCollection< DIM >::mMinBoxIndex.
Referenced by DistributedBoxCollection< DIM >::AddPairsFromBox().
| unsigned DistributedBoxCollection< DIM >::GetNumBoxes | ( | ) | [inline] |
Definition at line 359 of file DistributedBoxCollection.cpp.
References DistributedBoxCollection< DIM >::mNumBoxes.
| unsigned DistributedBoxCollection< DIM >::GetNumLocalBoxes | ( | ) | [inline] |
Definition at line 365 of file DistributedBoxCollection.cpp.
References DistributedBoxCollection< DIM >::mBoxes.
| unsigned DistributedBoxCollection< DIM >::GetNumLocalRows | ( | ) | const [inline] |
Definition at line 207 of file DistributedBoxCollection.cpp.
References DistributedVectorFactory::GetHigh(), DistributedVectorFactory::GetLow(), and DistributedBoxCollection< DIM >::mpDistributedBoxStackFactory.
Referenced by NodesOnlyMesh< SPACE_DIM >::EnlargeBoxCollection().
| unsigned DistributedBoxCollection< DIM >::GetNumRowsOfBoxes | ( | ) | const [inline] |
Definition at line 389 of file DistributedBoxCollection.cpp.
References DistributedVectorFactory::GetHigh(), DistributedVectorFactory::GetLow(), and DistributedBoxCollection< DIM >::mpDistributedBoxStackFactory.
| unsigned DistributedBoxCollection< DIM >::GetProcessOwningNode | ( | Node< DIM > * | pNode | ) | [inline] |
Get the process that should own this node. Currently only returns +/-1 of this process so assumes nodes don't move too far. //\ todo this should be fixed.
| pNode | the node to be tested |
Definition at line 1090 of file DistributedBoxCollection.cpp.
References DistributedBoxCollection< DIM >::CalculateContainingBox(), PetscTools::GetMyRank(), DistributedBoxCollection< DIM >::mMaxBoxIndex, and DistributedBoxCollection< DIM >::mMinBoxIndex.
Referenced by NodesOnlyMesh< SPACE_DIM >::CalculateNodesOutsideLocalDomain().
| bool DistributedBoxCollection< DIM >::IsInteriorBox | ( | unsigned | globalIndex | ) | [inline] |
Get whether the box with global index globalIndex is interior on this process. A box is interior if it doesn't share any boundary (even of zero length) with a halo box.
| globalIndex | the global index of the box to check. |
Definition at line 228 of file DistributedBoxCollection.cpp.
References PetscTools::IsSequential(), DistributedBoxCollection< DIM >::mMaxBoxIndex, DistributedBoxCollection< DIM >::mMinBoxIndex, and DistributedBoxCollection< DIM >::mNumBoxesInAFace.
Referenced by DistributedBoxCollection< DIM >::CalculateBoundaryNodePairs(), and DistributedBoxCollection< DIM >::CalculateInteriorNodePairs().
| bool DistributedBoxCollection< DIM >::IsOwned | ( | c_vector< double, DIM > & | location | ) | [inline] |
| location | the location to test. |
Definition at line 1082 of file DistributedBoxCollection.cpp.
References DistributedBoxCollection< DIM >::CalculateContainingBox(), and DistributedBoxCollection< DIM >::GetBoxOwnership().
| bool DistributedBoxCollection< DIM >::IsOwned | ( | Node< DIM > * | pNode | ) | [inline] |
| pNode | the node to test. |
Definition at line 1074 of file DistributedBoxCollection.cpp.
References DistributedBoxCollection< DIM >::CalculateContainingBox(), and DistributedBoxCollection< DIM >::GetBoxOwnership().
Referenced by NodesOnlyMesh< SPACE_DIM >::ConstructNodesWithoutMesh(), and NodesOnlyMesh< SPACE_DIM >::IsOwned().
| int DistributedBoxCollection< DIM >::LoadBalance | ( | std::vector< int > | localDistribution | ) | [inline] |
A helper function to work out the optimal number of rows to be owned by this process, to balance the number of nodes.
| localDistribution | a vector containing the number of nodes in each row/face of boxes in 2d/3d |
Shift information on distribution of nodes to the right, so processes can manage their left/bottom/back boundary (1d/2d/3d)
Calculate change in balance of loads by shifting the left/bottom boundary in either direction
Definition at line 395 of file DistributedBoxCollection.cpp.
References PetscTools::AmMaster(), PetscTools::AmTopMost(), and PetscTools::GetMyRank().
Referenced by NodesOnlyMesh< SPACE_DIM >::LoadBalanceMesh().
| Box< DIM > & DistributedBoxCollection< DIM >::rGetBox | ( | unsigned | boxIndex | ) | [inline] |
| boxIndex | the index of the box to return |
Definition at line 342 of file DistributedBoxCollection.cpp.
References DistributedBoxCollection< DIM >::mBoxes, DistributedBoxCollection< DIM >::mMaxBoxIndex, and DistributedBoxCollection< DIM >::mMinBoxIndex.
Referenced by NodesOnlyMesh< SPACE_DIM >::AddNodesToBoxes(), DistributedBoxCollection< DIM >::AddPairsFromBox(), and DistributedBoxCollection< DIM >::UpdateHaloBoxes().
| c_vector< double, 2 *DIM > DistributedBoxCollection< DIM >::rGetDomainSize | ( | ) | const [inline] |
Definition at line 371 of file DistributedBoxCollection.cpp.
References DistributedBoxCollection< DIM >::mDomainSize.
Referenced by NodesOnlyMesh< SPACE_DIM >::EnlargeBoxCollection(), NodesOnlyMesh< SPACE_DIM >::IsANodeCloseToDomainBoundary(), and NodesOnlyMesh< SPACE_DIM >::LoadBalanceMesh().
| Box< DIM > & DistributedBoxCollection< DIM >::rGetHaloBox | ( | unsigned | boxIndex | ) | [inline] |
Get a halo box.
| boxIndex | the index of the box to return |
Definition at line 349 of file DistributedBoxCollection.cpp.
References DistributedBoxCollection< DIM >::GetHaloBoxOwnership(), DistributedBoxCollection< DIM >::mHaloBoxes, and DistributedBoxCollection< DIM >::mHaloBoxesMapping.
Referenced by NodesOnlyMesh< SPACE_DIM >::AddHaloNodesToBoxes().
| std::vector< unsigned > & DistributedBoxCollection< DIM >::rGetHaloNodesLeft | ( | ) | [inline] |
Definition at line 1114 of file DistributedBoxCollection.cpp.
References DistributedBoxCollection< DIM >::mHaloNodesLeft.
Referenced by NodesOnlyMesh< SPACE_DIM >::rGetHaloNodesToSendLeft().
| std::vector< unsigned > & DistributedBoxCollection< DIM >::rGetHaloNodesRight | ( | ) | [inline] |
Definition at line 1108 of file DistributedBoxCollection.cpp.
References DistributedBoxCollection< DIM >::mHaloNodesRight.
Referenced by NodesOnlyMesh< SPACE_DIM >::rGetHaloNodesToSendRight().
| void DistributedBoxCollection< DIM >::serialize | ( | Archive & | archive, | |
| const unsigned int | version | |||
| ) | [inline, private] |
Serialize the box collection. It is possible to save and load on a different # of processes.
| archive | the archive. | |
| version | the version number. |
Definition at line 132 of file DistributedBoxCollection.hpp.
| void DistributedBoxCollection< DIM >::SetCalculateNodeNeighbours | ( | bool | calculateNodeNeighbours | ) | [inline] |
Set whether to record node neighbour in the map rNodeNeighbours during CalculateNodePairs. Set to false for efficiency if not needed.
| calculateNodeNeighbours | whether to store the neighbours. |
Definition at line 1120 of file DistributedBoxCollection.cpp.
References DistributedBoxCollection< DIM >::mCalculateNodeNeighbours.
Referenced by NodesOnlyMesh< SPACE_DIM >::SetUpBoxCollection().
| void DistributedBoxCollection< DIM >::SetupAllLocalBoxes | ( | ) | [inline] |
Set up the local boxes (ie itself and its nearest-neighbours) for each of the boxes.
Definition at line 745 of file DistributedBoxCollection.cpp.
References DistributedBoxCollection< DIM >::mAreLocalBoxesSet, DistributedBoxCollection< DIM >::mIsPeriodicInX, DistributedBoxCollection< DIM >::mLocalBoxes, DistributedBoxCollection< DIM >::mMaxBoxIndex, DistributedBoxCollection< DIM >::mMinBoxIndex, DistributedBoxCollection< DIM >::mNumBoxesEachDirection, and NEVER_REACHED.
| void DistributedBoxCollection< DIM >::SetupHaloBoxes | ( | ) | [inline] |
Setup the halo box structure on this process.
Sets up the containers mHaloBoxes, mHalosRight, mHalosLeft
Definition at line 141 of file DistributedBoxCollection.cpp.
References PetscTools::AmMaster(), PetscTools::AmTopMost(), DistributedVectorFactory::GetHigh(), DistributedVectorFactory::GetLow(), DistributedBoxCollection< DIM >::mHaloBoxes, DistributedBoxCollection< DIM >::mHaloBoxesMapping, DistributedBoxCollection< DIM >::mHalosLeft, DistributedBoxCollection< DIM >::mHalosRight, DistributedBoxCollection< DIM >::mNumBoxesInAFace, and DistributedBoxCollection< DIM >::mpDistributedBoxStackFactory.
Referenced by NodesOnlyMesh< SPACE_DIM >::SetUpBoxCollection().
| void DistributedBoxCollection< DIM >::SetupLocalBoxesHalfOnly | ( | ) | [inline] |
Set up the local boxes (ie itself and its nearest-neighbours) for each of the boxes. This method just sets up half of the local boxes (for example, in 1D, local boxes for box0 = {1} local boxes for box1 = {2} not {0,2}, and so on. Similar to 2d, 3d.
Definition at line 483 of file DistributedBoxCollection.cpp.
References DistributedBoxCollection< DIM >::CalculateCoordinateIndices(), EXCEPTION, DistributedVectorFactory::GetHigh(), DistributedVectorFactory::GetLow(), DistributedBoxCollection< DIM >::mAreLocalBoxesSet, DistributedBoxCollection< DIM >::mBoxes, DistributedBoxCollection< DIM >::mIsPeriodicInX, DistributedBoxCollection< DIM >::mLocalBoxes, DistributedBoxCollection< DIM >::mMaxBoxIndex, DistributedBoxCollection< DIM >::mMinBoxIndex, DistributedBoxCollection< DIM >::mNumBoxesEachDirection, DistributedBoxCollection< DIM >::mpDistributedBoxStackFactory, and NEVER_REACHED.
Referenced by NodesOnlyMesh< SPACE_DIM >::SetUpBoxCollection().
| void DistributedBoxCollection< DIM >::UpdateHaloBoxes | ( | ) | [inline] |
Update the halo boxes on this process, by transferring the nodes to be sent into the lists mHaloNodesRight / Left.
Definition at line 180 of file DistributedBoxCollection.cpp.
References DistributedBoxCollection< DIM >::mHaloNodesLeft, DistributedBoxCollection< DIM >::mHaloNodesRight, DistributedBoxCollection< DIM >::mHalosLeft, DistributedBoxCollection< DIM >::mHalosRight, and DistributedBoxCollection< DIM >::rGetBox().
Referenced by NodesOnlyMesh< SPACE_DIM >::UpdateBoxCollection().
friend class boost::serialization::access [friend] |
Needed for serialization
Definition at line 123 of file DistributedBoxCollection.hpp.
bool DistributedBoxCollection< DIM >::mAreLocalBoxesSet [private] |
Whether the local boxes have been setup or not.
Definition at line 111 of file DistributedBoxCollection.hpp.
Referenced by DistributedBoxCollection< DIM >::GetAreLocalBoxesSet(), DistributedBoxCollection< DIM >::SetupAllLocalBoxes(), and DistributedBoxCollection< DIM >::SetupLocalBoxesHalfOnly().
std::vector< Box<DIM> > DistributedBoxCollection< DIM >::mBoxes [private] |
A vector of boxes to store rough node/element positions.
Definition at line 60 of file DistributedBoxCollection.hpp.
Referenced by DistributedBoxCollection< DIM >::AddPairsFromBox(), DistributedBoxCollection< DIM >::CalculateNumberOfNodesInEachStrip(), DistributedBoxCollection< DIM >::DistributedBoxCollection(), DistributedBoxCollection< DIM >::EmptyBoxes(), DistributedBoxCollection< DIM >::GetNumLocalBoxes(), DistributedBoxCollection< DIM >::rGetBox(), and DistributedBoxCollection< DIM >::SetupLocalBoxesHalfOnly().
std::map<unsigned, unsigned> DistributedBoxCollection< DIM >::mBoxesMapping [private] |
Map of global to local indices of boxes.
Definition at line 78 of file DistributedBoxCollection.hpp.
Referenced by DistributedBoxCollection< DIM >::AddPairsFromBox(), DistributedBoxCollection< DIM >::CalculateBoundaryNodePairs(), DistributedBoxCollection< DIM >::CalculateInteriorNodePairs(), DistributedBoxCollection< DIM >::CalculateNodePairs(), DistributedBoxCollection< DIM >::CalculateNumberOfNodesInEachStrip(), and DistributedBoxCollection< DIM >::DistributedBoxCollection().
double DistributedBoxCollection< DIM >::mBoxWidth [private] |
The width of each box.
Definition at line 87 of file DistributedBoxCollection.hpp.
Referenced by DistributedBoxCollection< DIM >::CalculateContainingBox(), DistributedBoxCollection< DIM >::DistributedBoxCollection(), and DistributedBoxCollection< DIM >::GetBoxWidth().
bool DistributedBoxCollection< DIM >::mCalculateNodeNeighbours [private] |
A flag that can be set to not save rNodeNeighbours in CalculateNodePairs - for efficiency
Definition at line 120 of file DistributedBoxCollection.hpp.
Referenced by DistributedBoxCollection< DIM >::AddPairsFromBox(), and DistributedBoxCollection< DIM >::SetCalculateNodeNeighbours().
c_vector<double, 2*DIM> DistributedBoxCollection< DIM >::mDomainSize [private] |
The domain being partitioned.
Definition at line 84 of file DistributedBoxCollection.hpp.
Referenced by DistributedBoxCollection< DIM >::CalculateContainingBox(), DistributedBoxCollection< DIM >::DistributedBoxCollection(), and DistributedBoxCollection< DIM >::rGetDomainSize().
std::vector< Box<DIM> > DistributedBoxCollection< DIM >::mHaloBoxes [private] |
A vector of boxes owned on other processes sharing a boundary with this process
Definition at line 63 of file DistributedBoxCollection.hpp.
Referenced by DistributedBoxCollection< DIM >::AddPairsFromBox(), DistributedBoxCollection< DIM >::EmptyBoxes(), DistributedBoxCollection< DIM >::rGetHaloBox(), and DistributedBoxCollection< DIM >::SetupHaloBoxes().
std::map<unsigned, unsigned> DistributedBoxCollection< DIM >::mHaloBoxesMapping [private] |
Map of global to local indices of halo boxes in mHaloBoxes.
Definition at line 81 of file DistributedBoxCollection.hpp.
Referenced by DistributedBoxCollection< DIM >::AddPairsFromBox(), DistributedBoxCollection< DIM >::rGetHaloBox(), and DistributedBoxCollection< DIM >::SetupHaloBoxes().
std::vector<unsigned> DistributedBoxCollection< DIM >::mHaloNodesLeft [private] |
Set of Nodes that are halos of adjacent left process, but lie locally
Definition at line 75 of file DistributedBoxCollection.hpp.
Referenced by DistributedBoxCollection< DIM >::rGetHaloNodesLeft(), and DistributedBoxCollection< DIM >::UpdateHaloBoxes().
std::vector<unsigned> DistributedBoxCollection< DIM >::mHaloNodesRight [private] |
Set of Nodes that are halos of adjacent right process, but lie locally
Definition at line 72 of file DistributedBoxCollection.hpp.
Referenced by DistributedBoxCollection< DIM >::rGetHaloNodesRight(), and DistributedBoxCollection< DIM >::UpdateHaloBoxes().
std::vector<unsigned> DistributedBoxCollection< DIM >::mHalosLeft [private] |
A vector of the global indices of boxes, owned by this process, but on a boundary with left process.
Definition at line 69 of file DistributedBoxCollection.hpp.
Referenced by DistributedBoxCollection< DIM >::SetupHaloBoxes(), and DistributedBoxCollection< DIM >::UpdateHaloBoxes().
std::vector<unsigned> DistributedBoxCollection< DIM >::mHalosRight [private] |
A vector of the global indices of boxes, owned by this process, but on a boundary with right process.
Definition at line 66 of file DistributedBoxCollection.hpp.
Referenced by DistributedBoxCollection< DIM >::SetupHaloBoxes(), and DistributedBoxCollection< DIM >::UpdateHaloBoxes().
bool DistributedBoxCollection< DIM >::mIsPeriodicInX [private] |
Whether the domain is periodic in the X dimension Note this currently only works for DIM=2.
Definition at line 108 of file DistributedBoxCollection.hpp.
Referenced by DistributedBoxCollection< DIM >::SetupAllLocalBoxes(), and DistributedBoxCollection< DIM >::SetupLocalBoxesHalfOnly().
std::vector< std::set<unsigned> > DistributedBoxCollection< DIM >::mLocalBoxes [private] |
The boxes local (itself and nearest neighbour) to a given box.
Definition at line 99 of file DistributedBoxCollection.hpp.
Referenced by DistributedBoxCollection< DIM >::GetLocalBoxes(), DistributedBoxCollection< DIM >::SetupAllLocalBoxes(), and DistributedBoxCollection< DIM >::SetupLocalBoxesHalfOnly().
unsigned DistributedBoxCollection< DIM >::mMaxBoxIndex [private] |
The largest index of the boxes owned by this process.
Definition at line 105 of file DistributedBoxCollection.hpp.
Referenced by DistributedBoxCollection< DIM >::DistributedBoxCollection(), DistributedBoxCollection< DIM >::GetBoxOwnership(), DistributedBoxCollection< DIM >::GetHaloBoxOwnership(), DistributedBoxCollection< DIM >::GetLocalBoxes(), DistributedBoxCollection< DIM >::GetProcessOwningNode(), DistributedBoxCollection< DIM >::IsInteriorBox(), DistributedBoxCollection< DIM >::rGetBox(), DistributedBoxCollection< DIM >::SetupAllLocalBoxes(), and DistributedBoxCollection< DIM >::SetupLocalBoxesHalfOnly().
unsigned DistributedBoxCollection< DIM >::mMinBoxIndex [private] |
The smallest index of the boxes owned by this process.
Definition at line 102 of file DistributedBoxCollection.hpp.
Referenced by DistributedBoxCollection< DIM >::DistributedBoxCollection(), DistributedBoxCollection< DIM >::GetBoxOwnership(), DistributedBoxCollection< DIM >::GetHaloBoxOwnership(), DistributedBoxCollection< DIM >::GetLocalBoxes(), DistributedBoxCollection< DIM >::GetProcessOwningNode(), DistributedBoxCollection< DIM >::IsInteriorBox(), DistributedBoxCollection< DIM >::rGetBox(), DistributedBoxCollection< DIM >::SetupAllLocalBoxes(), and DistributedBoxCollection< DIM >::SetupLocalBoxesHalfOnly().
unsigned DistributedBoxCollection< DIM >::mNumBoxes [private] |
The total number of boxes across all processes
Definition at line 90 of file DistributedBoxCollection.hpp.
Referenced by DistributedBoxCollection< DIM >::CalculateContainingBox(), DistributedBoxCollection< DIM >::DistributedBoxCollection(), and DistributedBoxCollection< DIM >::GetNumBoxes().
c_vector<unsigned, DIM> DistributedBoxCollection< DIM >::mNumBoxesEachDirection [private] |
Number of boxes in each direction.
Definition at line 93 of file DistributedBoxCollection.hpp.
Referenced by DistributedBoxCollection< DIM >::CalculateContainingBox(), DistributedBoxCollection< DIM >::CalculateCoordinateIndices(), DistributedBoxCollection< DIM >::CalculateGlobalIndex(), DistributedBoxCollection< DIM >::DistributedBoxCollection(), DistributedBoxCollection< DIM >::SetupAllLocalBoxes(), and DistributedBoxCollection< DIM >::SetupLocalBoxesHalfOnly().
unsigned DistributedBoxCollection< DIM >::mNumBoxesInAFace [private] |
Number of boxes in a face (1 in 1d, mNumBoxesEachDirection(0) in 2d, mNumBoxesEachDirection(0)*mNumBoxesEachDirection(1) in 3d
Definition at line 96 of file DistributedBoxCollection.hpp.
Referenced by DistributedBoxCollection< DIM >::DistributedBoxCollection(), DistributedBoxCollection< DIM >::GetHaloBoxOwnership(), DistributedBoxCollection< DIM >::IsInteriorBox(), and DistributedBoxCollection< DIM >::SetupHaloBoxes().
DistributedVectorFactory* DistributedBoxCollection< DIM >::mpDistributedBoxStackFactory [private] |
A distributed vector factory that governs ownership of rows of boxes
Definition at line 117 of file DistributedBoxCollection.hpp.
Referenced by DistributedBoxCollection< DIM >::CalculateNumberOfNodesInEachStrip(), DistributedBoxCollection< DIM >::DistributedBoxCollection(), DistributedBoxCollection< DIM >::GetNumLocalRows(), DistributedBoxCollection< DIM >::GetNumRowsOfBoxes(), DistributedBoxCollection< DIM >::SetupHaloBoxes(), DistributedBoxCollection< DIM >::SetupLocalBoxesHalfOnly(), and DistributedBoxCollection< DIM >::~DistributedBoxCollection().
const double DistributedBoxCollection< DIM >::msFudge = 5e-14 [inline, static, private] |
A fudge (box swelling) factor to deal with 32-bit floating point issues.
Definition at line 114 of file DistributedBoxCollection.hpp.
Referenced by DistributedBoxCollection< DIM >::CalculateContainingBox(), and DistributedBoxCollection< DIM >::DistributedBoxCollection().
1.6.2