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 Spectral { 10 : 11 : /// \brief The portion of a Segment (or the interval \f$[-1, 1]\f$) 12 : /// covered by a mesh. 13 : /// 14 : /// \details SegmentSize is used to denote the relationship between two meshes 15 : /// (in each dimension) such as: 16 : /// - a face mesh and a mortar mesh when computing boundary corrections on the 17 : /// mortars between neighboring elements. In this case the face mesh will 18 : /// always have SegmentSize::Full, and the mortar mesh can have any value. 19 : /// - a parent mesh and a child mesh in a h-refinement hierarchy. In this case 20 : /// the parent mesh will have SegmentSize::Full, while the child mesh will 21 : /// have either SegmentSize::UpperHalf or SegmentSize::LowerHalf. 22 : /// - for p-preojection, the source and target meshes should use 23 : /// SegmentSize::Full 24 0 : enum class SegmentSize : uint8_t { 25 : Uninitialized = 0, 26 : Full = 1, 27 : UpperHalf = 2, 28 : LowerHalf = 3 29 : }; 30 : 31 0 : std::ostream& operator<<(std::ostream& os, SegmentSize segment_size); 32 : } // namespace Spectral