27 "Type of extreme value to return. 'max' "
28 "returns the maximum value. 'min' returns "
29 "the minimum value. 'max_abs' returns the maximum of the absolute value.");
43 if (_type == ExtremeType::MAX || _type == ExtremeType::MAX_ABS)
45 std::make_pair(-std::numeric_limits<Real>::max(), -std::numeric_limits<Real>::max());
46 else if (_type == ExtremeType::MIN)
48 std::make_pair(std::numeric_limits<Real>::max(), std::numeric_limits<Real>::max());
55 const auto pv = getProxyValuePair();
57 if ((_type == ExtremeType::MAX && pv > _proxy_value) ||
58 (_type == ExtremeType::MIN && pv < _proxy_value))
60 else if (_type == ExtremeType::MAX_ABS && std::abs(pv.first) > _proxy_value.first)
61 _proxy_value = std::make_pair(std::abs(pv.first), pv.second);
68 return _proxy_value.second;
75 if (_type == ExtremeType::MAX || _type == ExtremeType::MAX_ABS)
76 this->gatherProxyValueMax(_proxy_value.first, _proxy_value.second);
77 else if (_type == ExtremeType::MIN)
78 this->gatherProxyValueMin(_proxy_value.first, _proxy_value.second);
87 if (((_type == ExtremeType::MAX || _type == ExtremeType::MAX_ABS) &&
88 pps._proxy_value > _proxy_value) ||
89 (_type == ExtremeType::MIN && pps._proxy_value < _proxy_value))
ExtremeType
Type of extreme value we are going to compute.
virtual void initialize() override
virtual void computeExtremeValue()
Get the extreme value with a functor element argument.
std::pair< libMesh::Real, libMesh::Real > _proxy_value
Extreme value and proxy value at the same point.
virtual void finalize() override
virtual void threadJoin(const UserObject &y) override
virtual libMesh::Real getValue() const override
static InputParameters validParams()
ExtremeValueBase(const InputParameters ¶meters)
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Base class for user-specific data.