4#ifndef refinement_criterion_h
5#define refinement_criterion_h
7#include <prismspf/config.h>
13PRISMS_PF_BEGIN_NAMESPACE
15namespace GridRefinement
20 enum RefinementFlags : std::uint8_t
39 inline RefinementFlags
40 operator|(
const RefinementFlags flag_1,
const RefinementFlags flag_2)
42 return static_cast<RefinementFlags
>(
static_cast<unsigned int>(flag_1) |
43 static_cast<unsigned int>(flag_2));
47 inline RefinementFlags &
48 operator|=(RefinementFlags &flag_1,
const RefinementFlags flag_2)
50 flag_1 = flag_1 | flag_2;
55 inline RefinementFlags
56 operator&(
const RefinementFlags flag_1,
const RefinementFlags flag_2)
58 return static_cast<RefinementFlags
>(
static_cast<unsigned int>(flag_1) &
59 static_cast<unsigned int>(flag_2));
63 inline RefinementFlags &
64 operator&=(RefinementFlags &flag_1,
const RefinementFlags flag_2)
66 flag_1 = flag_1 & flag_2;
77 std::string variable_name;
78 unsigned int variable_index = 0;
79 RefinementFlags criterion_type = RefinementFlags::nothing;
80 double value_lower_bound = DBL_MAX;
81 double value_upper_bound = DBL_MAX;
82 double gradient_lower_bound = DBL_MAX;
87 [[nodiscard]] std::string
90 if (criterion_type == RefinementFlags::nothing)
94 if (((criterion_type & RefinementFlags::value) != 0U) &&
95 ((criterion_type & RefinementFlags::gradient) != 0U))
97 return "Value and gradient";
99 if ((criterion_type & RefinementFlags::value) != 0U)
103 if ((criterion_type & RefinementFlags::gradient) != 0U)
108 return "Unknown criterion";
113PRISMS_PF_END_NAMESPACE
Definition refinement_criterion.h:75
std::string criterion_to_string() const
Convert refinement criterion type to string.
Definition refinement_criterion.h:88