Code Concepts
• Logical Coordinates:
The coordinate frame of a reference cell.
• Domain:
The computational domain is partitioned into cells called Blocks. Furthermore, each Block must have at most one neighboring Block in each Direction.
• Block:
A reference cell embedded into a subset of the computational domain. Blocks are identified by unique integral values.
• Orientation:
The information of how the Logical Coordinates between Blocks are related.
• Block Neighbor:
The identity and Orientation of a neighbor of a given Block.
• Direction:
A logical coordinate axis and a label "Upper" or "Lower" depending on whether the Direction is aligned with or anti-aligned with the logical coordinate axis, respectively.
• Refinement Level:
The number of times a Block is split in half in a given dimension.
• Segment:
The specific subset of the interval $[-1, 1]$ defined by the Refinement Level and an integer label such that the Segment's interval is $[-1 + 2*(N/D), -1 + 2*(N+1)/D]$ where N is the integer label and D is $2^{(\textrm{Refinement Level})}$.
• Segment Identifier:
The Refinement Level and an integer labeling a Segment.
• Element:
A refined subregion of a Block defined by its Segments in each logical coordinate. The properties of the Element are inherited from the block, i.e. it is self-similar to the Block.
• Element Identifier:
The Block Identifier containing the Element and a Segment Identifier in each logical coordinate axis.
• Mesh:
A regular set of grid points associated with an Element. Represented by the data structure Mesh.
• External Boundary:
A face of a Block or Element that has no neighbor.
• Internal Boundary:
A boundary that is not an External Boundary.
• Face Neighbors (Rename C++ Neighbors class to FaceNeighbors):
The identities and Orientation of the neighbors in a particular direction of a given Element.
• External Boundary Condition:
A prescription for updating the solution on an External Boundary. Each External Boundary of Block has exactly one External Boundary Condition associated with it.