Line data Source code
1 0 : \cond NEVER 2 : Distributed under the MIT License. 3 : See LICENSE.txt for details. 4 : \endcond 5 : # Domain Concepts {#domain_concepts} 6 : 7 : \tableofcontents 8 : 9 : * Computational Domain:<br> 10 : The region of spacetime on which a numerical simulation is performed. 11 : 12 : * Inertial Coordinate Frame:<br> 13 : A global coordinate frame covering the computational domain that is also the 14 : coordinate frame in which the initial (boundary) value problem that is being 15 : solved is specified. Denoted by Frame::Inertial. 16 : 17 : * Logical Coordinate Frame:<br> The coordinate frame of a reference 18 : cell. In the cell the logical coordinates cover the interval 19 : \f$[-1, 1]\f$ in each dimension. Currently the logical coordinates 20 : are Cartesian. 21 : 22 : * CoordinateMap "Coordinate Map":<br> 23 : A mapping between two coordinate frames. Coordinate maps are allowed to be 24 : time-dependent, as long as the time coordinate itself is unchanged. 25 : 26 : * Direction:<br> 27 : A logical coordinate axis and a label "Upper" or "Lower" depending on whether 28 : the Direction is aligned with or anti-aligned with the logical coordinate 29 : axis, respectively. 30 : 31 : * Block:<br> 32 : The computational domain is partitioned into a set of non-overlapping, 33 : distorted reference cells called Blocks. Each Block must have at most one 34 : neighboring Block in each Direction. The reference cell is embedded into a 35 : subset of the computational domain using a Coordinate Map from the 36 : logical frame of the Block to the global inertial frame. Blocks are 37 : identified by unique integral values. 38 : 39 : * Block Logical Coordinate Frame:<br> 40 : The logical coordinate frame of a Block, denoted by Frame::BlockLogical. 41 : The only requirement upon the logical coordinate frames of neighboring Blocks 42 : is that they have the same Coordinate Map from their logical coordinate frame 43 : to the global inertial frame on their shared boundary up to a mapping that 44 : swaps or negates the logical coordinate axes. In other words, at each point 45 : on their shared boundary, the logical coordinates of the two blocks are 46 : equal after possibly applying a permutation and sign flips. 47 : 48 : * Grid Coordinate Frame:<br> 49 : For time-dependent coordinate maps, it is useful (e.g. for computational 50 : efficiency) to split the Coordinate Map from Frame::BlockLogical to 51 : Frame::Inertial into a composition of two maps. This is done by introducing 52 : an intermediate coordinate frame (denoted by Frame::Grid) such that the 53 : mapping from Frame::BlockLogical to Frame::Grid is time-independent, and 54 : the mapping from Frame::Grid to Frame::Inertial is time-dependent. 55 : 56 : * Orientation:<br> 57 : The information of how the Block Logical Coordinates of neighboring Blocks are 58 : related. 59 : 60 : * \ref BlockNeighbor "Block Neighbor":<br> 61 : The identity and Orientation of a neighboring Block of a given Block. 62 : 63 : * Element:<br> A reference cell that is a refined subregion of a Block 64 : defined by its Segments in each dimension. The properties of the 65 : Element (e.g coordinate map) are inherited from its Block, i.e. it 66 : is self-similar to the Block. 67 : 68 : * Refinement Level:<br> 69 : The number of times a Block is split in half in a given dimension. 70 : 71 : * Segment:<br> In each dimension, the specific subset of the block 72 : logical coordinate interval \f$[-1, 1]\f$ defined by the Refinement 73 : Level and an integer label such that the Segment's interval is 74 : \f$[-1 + 2 \frac{i}{N}, -1 + 2 \frac{i+1}{N}]\f$ where \f$i\f$ is 75 : the integer label and \f$N = 2^{(\textrm{Refinement Level})}\f$ is 76 : the number of segments on the Refinement Level. 77 : 78 : * Element Logical Coordinate Frame:<br> 79 : The logical coordinate frame of an Element. In each dimension, the Element 80 : Logical Coordinates are related to the Block Logical Coordinates by an affine 81 : mapping of the interval \f$[-1, 1]\f$ to the interval covered by the Segment 82 : in that dimension. 83 : 84 : * \ref SegmentId "Segment Identifier":<br> 85 : The Refinement Level and an integer labeling a Segment. 86 : 87 : * \ref ElementId "Element Identifier":<br> 88 : The Block Identifier containing the Element and a Segment Identifier 89 : in each dimension. 90 : 91 : * External Boundary:<br> 92 : A face of a Block or Element that has no neighbor. 93 : 94 : * Internal Boundary:<br> 95 : A boundary that is not an External Boundary. 96 : 97 : * Neighbors:<br> 98 : The identities and Orientation of the neighboring Elements of a given Element 99 : in a particular Direction . 100 : 101 : * External Boundary Condition:<br> 102 : A prescription for updating the solution on an External Boundary. Each 103 : External Boundary of a Block has exactly one External Boundary Condition 104 : associated with it.