Graph of a mapped multiblock domain. Nodes represent blocks and arcs represent boundaries between blocks. Does not contain any information about the size of blocks; that information is provided by MBProblemDomain.
More...
|
| MBGraph (BlockIndex numBlocks) |
| Constructor. More...
|
|
void | defineBoundary (BlockIndex srcBlock, BlockIndex dstBlock, Point dir, CoordPermutation &rotation) |
| Define Boundary. More...
|
|
void | defineBoundary (BlockIndex srcBlock, BlockIndex dstBlock, unsigned int dir, Side::LoHiSide side, CoordPermutation &rotation) |
| Define Boundary overload using dir + side syntax instead of Point. More...
|
|
void | close () |
| executes post processing steps once all boundaries of this graph have been defined This function must be called before the graph can be used. More...
|
|
unsigned int | numBlocks () const |
| Number of blocks in the graph. More...
|
|
unsigned int | numBoundaries (BlockIndex srcBlock, Point &dir) const |
| Number of boundaries block has in direction dir. More...
|
|
std::vector< MBGraphArc > | boundaries (BlockIndex srcBlock, Point dir) const |
| Retrieve a vector of arcs associated with boundaries from srcBlock in the direction dir. More...
|
|
std::vector< Point > | fullConnectivity (BlockIndex srcBlock, BlockIndex dstBlock) const |
| Returns the list of all directions along which srcBlock is connected to dstBlock. If two blocks share a codimension-D boundary, this list will contain a single direction of codimension-D and all of the higher codimensional connections associated with the shared edges, corners, etc of the boundary between blocks. More...
|
|
Point | connectivity (BlockIndex srcBlock, BlockIndex dstBlock) const |
| Returns the lowest codimension direction associated with the boundary between two blocks. This direction is guaranteed to be unique since MBGraph does not support two-block topological cycles. This is the direction associated with the "true" boundary between blocks. More...
|
|
Point | reverseArc (BlockIndex srcBlock, BlockIndex dstBlock, Point dir) const |
| Returns the direction from dstBlock to srcBlock given the direction from srcBlock to dstBlock. Fails by assertion if the arc implied by the inputs is not in the graph FIXME: This should return std::optional<Point> with no value if the arc doesn't exist. More...
|
|
Point | mirrorDirAcrossBoundary (BlockIndex srcBlock, BlockIndex dstBlock, Point dir) const |
| Given a direction in srcBlock's coordinates, mirror the direction across the boundary with dstBlock and return the result in dstBlock's coordinates. If R is the coordinate rotation from srcBlock to dstBlock and dir has normal and tangential components to the boundary n and t respectively, the output is R(t) - R(n). More...
|
|
CoordPermutation | rotation (BlockIndex srcBlock, BlockIndex dstBlock) const |
| Attempts to retrieve the coordinate permutation from srcBlock to dstBlock Fails by assertion if the input blocks don't share a boundary. More...
|
|
BlockIndex | adjacentBlock (BlockIndex srcBlock, unsigned int dir, Side::LoHiSide side) const |
| Get the block adjacent to srcBlock in the specified codimension-1 direction Since the direction is codimension-1, the block - should it exist - is guaranteed to be unique. More...
|
|
BlockIndex | adjacentBlock (BlockIndex srcBlock, Point codim1Dir) const |
| Get the block adjacent to srcBlock in the specified codimension-1 direction Fails if codim1Dir.codim() != 1. More...
|
|
std::set< BlockIndex > | adjacentBlocks (BlockIndex srcBlock, Point dir) const |
| Get a vector of all blocks adjacent to this block in direction dir. More...
|
|
bool | operator== (const MBGraph &rhs) const |
| Equality operator. Equality is determined by value. More...
|
|
bool | isBlockBoundary (BlockIndex srcBlock, Point dir) const |
| Determine if the block - direction pair represents the boundary of a block This function returns true if dir points to a "triple point" region even though the graph has no arcs from the node associated with srcBlock in the direction dir. More...
|
|
bool | isTriplePoint (BlockIndex srcBlock, Point dir) const |
| returns true if the specified block boundary corresponds to a "triple point". In this context, a "triple point" is a codimension-2 block boundary where exactly three blocks meet. This function is used to infer corrections that must be made when building interpolation operators in such regions. More...
|
|
std::vector< std::pair< Point, Point > > | getTriplePointCircuits (BlockIndex srcBlock, Point dir) const |
| return a list of codimension-1 direction pairs which represent "triple point circuits" two codimension-1 directions represent a circuit relative to srcBlock if srcBlock has a codimension-1 boundary in those directions with two other blocks which in turn have a codimenison-1 boundary which lies in the same logical "plane" as the two directions defining the circuit. More...
|
|
bool | isDomainBoundary (BlockIndex srcBlock, Point dir) const |
| returns true if there are no blocks adjacent to srcBlock in the direction dir. This situation is assumed to correspond to a "domain boundary" More...
|
|
void | print () const |
| prints all of the MBGraphNode objects in this graph (one for each block) More...
|
|
|
void | fixRotations () |
| internal function called inside of "close" adjusts errors in the implicitly constructed coordinate permutations between blocks with high codimensional connectivity. More...
|
|
CoordPermutation & | rotation (BlockIndex srcBlock, Point dir, BlockIndex dstBlock) const |
| obtain a reference to the coordinate permuation object stored in the graph. Used by "close" to fix internal boundary rotations, and not intended for public use. If you think you need to use this externally, there is probably a bug in MBGraph::close that needs addressing instead More...
|
|
CoordPermutation & | rotation (BlockIndex block, Point dir) const |
| obtain a reference to the coordinate permuation object stored in the graph. Used by "close" to fix internal boundary rotations, and not intended for public use. If you think you need to use this externally, there is probably a bug in MBGraph::close that needs addressing instead More...
|
|
std::vector< Point > | codim2TriplePointBoundaries (BlockIndex srcBlock, Point dir) const |
| for a given block - direction pair, return all of the codimension-2 boundaries that are projections of dir which also represent triple point boundaries. More...
|
|
Graph of a mapped multiblock domain. Nodes represent blocks and arcs represent boundaries between blocks. Does not contain any information about the size of blocks; that information is provided by MBProblemDomain.
MBGraph stores connections of all codimensionalities between connected blocks. This means that if two blocks are connected by a codimension 1 boundary (sharing faces in R3) then the MBGraph also stores the codimension 2 boundaries associated with the faces' edges, codimension 3 boundaries associated with the faces' corners, etc. up to codimension = DIM.
MBGraph currently does not completely support configurations wherein two blocks form a topological cycle. For example, two blocks cannot have multiple codimension-1 boundaries with eachother; there must be at least one other block in the circuit for the structure to be valid.
MBGraphs usually do not need to be constructed directly, but are created implicitly when a user constructs an MBProblemDomain.
return a list of codimension-1 direction pairs which represent "triple point circuits" two codimension-1 directions represent a circuit relative to srcBlock if srcBlock has a codimension-1 boundary in those directions with two other blocks which in turn have a codimenison-1 boundary which lies in the same logical "plane" as the two directions defining the circuit.
This function is not recommended for public use.
If DIM==2, there will be at most one circuit for a given block. In higher dimensions, there will in general be many, and will result in the function being called recursively.
At the time of writing, there are no dependencies in Proto which use this function, but it is likely that it will be useful for more complex graphs. - Chris Bozhart - 9/2/2025
- Parameters
-
srcBlock | the reference block from which the search for triple point circuits is executed |
dir | the direction in which triple point circuits are searched |