17 template <
typename Base>
29 template <
typename Derived>
32 template <
typename Derived>
33 KOKKOS_FUNCTION
void join(
Real * result,
const Real * source)
const;
34 template <
typename Derived>
35 KOKKOS_FUNCTION
void init(
Real * result)
const;
49 template <
typename Base>
50 template <
typename Derived>
56 auto pv =
static_cast<const Derived *
>(
this)->getProxyValuePair(qp, datum);
57 auto rpv = Kokkos::make_pair(result[0], result[1]);
59 if ((_type == ExtremeType::MAX && pv > rpv) || (_type == ExtremeType::MIN && pv < rpv))
62 result[1] = pv.second;
64 else if (_type == ExtremeType::MAX_ABS &&
Kokkos::abs(pv.first) > rpv.first)
67 result[1] = pv.second;
71 template <
typename Base>
72 template <
typename Derived>
76 auto rpv = Kokkos::make_pair(result[0], result[1]);
77 auto spv = Kokkos::make_pair(source[0], source[1]);
79 if ((_type == ExtremeType::MAX && spv > rpv) || (_type == ExtremeType::MIN && spv < rpv))
81 result[0] = source[0];
82 result[1] = source[1];
84 else if (_type == ExtremeType::MAX_ABS &&
Kokkos::abs(spv.first) > rpv.first)
87 result[1] = source[1];
91 template <
typename Base>
92 template <
typename Derived>
96 if (_type == ExtremeType::MAX || _type == ExtremeType::MAX_ABS)
98 result[0] = Kokkos::Experimental::finite_min_v<Real>;
99 result[1] = Kokkos::Experimental::finite_min_v<Real>;
101 else if (_type == ExtremeType::MIN)
103 result[0] = Kokkos::Experimental::finite_max_v<Real>;
104 result[1] = Kokkos::Experimental::finite_max_v<Real>;
MetaPhysicL::DualNumber< V, D, asd > abs(const MetaPhysicL::DualNumber< V, D, asd > &a)
The Kokkos object that holds thread-private data in the parallel operations of any Kokkos object...
KOKKOS_FUNCTION void computeExtremeValue(const unsigned int qp, Datum &datum, Real *result) const
ExtremeType
Type of extreme value we are going to compute.
enum KokkosExtremeValueBase::ExtremeType _type
virtual Real getValue() const override
KokkosExtremeValueBase(const InputParameters ¶meters)
KOKKOS_FUNCTION void init(Real *result) const
static InputParameters validParams()
virtual void finalize() override
virtual void initialize() override
KOKKOS_FUNCTION void join(Real *result, const Real *source) const
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Base class for user-specific data.