Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include <cstdint> 7 : #include <iosfwd> 8 : 9 : namespace domain { 10 : 11 : /// \brief The type of face for a Block or Element 12 : /// 13 : /// \details For a face with neighboring Blocks (or Elements) the FaceType is 14 : /// determined by whether the block logical coordinates of the neighboring 15 : /// Blocks (or Elements) have conforming block logical coordinates on their 16 : /// interface. Block logical coordinates are considered to be conforming if 17 : /// they are identical (i.e. an aligned OrientationMap) or related by a 18 : /// discrete rotation (i.e. a valid non-aligned OrientationMap). 19 : /// 20 : /// \note FaceType::Topological is for the faces of an Element or Block with a 21 : /// Topology other than I1 (e.g. the angular directions of an S2 topology). The 22 : /// face is not on the external boundary, and has no neighboring Block or 23 : /// Element. 24 1 : enum class FaceType : uint8_t { 25 : /// Used to denote an uninitialized value 26 : Uninitialized = 0, 27 : /// Used to denote a face on an external boundary 28 : External, 29 : /// Used to denote a face that is not on the external boundary, and that has 30 : /// no neighboring Block or Element (e.g. the angular directions of an S2 31 : /// topology). 32 : Topological, 33 : /// Used to denote a face shared with one or more conforming, aligned 34 : /// neighbors 35 : ConformingAligned, 36 : /// Used to denote a face shared with one or more conforming, unaligned 37 : /// neighbors 38 : ConformingUnaligned, 39 : /// Used to denote a face shared with a single non-conforming neighbor 40 : SingleNonconforming, 41 : /// Used to denote a face shared with multiple non-conforming neighbors 42 : MultipleNonconforming, 43 : }; 44 : 45 : /// Output operator for a FaceType. 46 1 : std::ostream& operator<<(std::ostream& os, FaceType face_type); 47 : } // namespace domain