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
|