https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Protected Types | Protected Attributes | List of all members
KokkosExtremeValueBase< Base > Class Template Reference

#include <KokkosExtremeValueBase.h>

Inheritance diagram for KokkosExtremeValueBase< Base >:
[legend]

Public Member Functions

 KokkosExtremeValueBase (const InputParameters &parameters)
 
virtual void initialize () override
 
virtual void finalize () override
 
virtual Real getValue () const override
 
template<typename Derived >
KOKKOS_FUNCTION void computeExtremeValue (const unsigned int qp, Datum &datum, Real *result) const
 
template<typename Derived >
KOKKOS_FUNCTION void join (Real *result, const Real *source) const
 
template<typename Derived >
KOKKOS_FUNCTION void init (Real *result) const
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Types

enum class  ExtremeType { MAX , MIN , MAX_ABS }
 Type of extreme value we are going to compute. More...
 

Protected Attributes

enum KokkosExtremeValueBase::ExtremeType _type
 

Detailed Description

template<typename Base>
class KokkosExtremeValueBase< Base >

Definition at line 18 of file KokkosExtremeValueBase.h.

Member Enumeration Documentation

◆ ExtremeType

template<typename Base >
enum class KokkosExtremeValueBase::ExtremeType
strongprotected

Type of extreme value we are going to compute.

Enumerator
MAX 
MIN 
MAX_ABS 

Definition at line 41 of file KokkosExtremeValueBase.h.

Constructor & Destructor Documentation

◆ KokkosExtremeValueBase()

template<typename Base >
KokkosExtremeValueBase< Base >::KokkosExtremeValueBase ( const InputParameters parameters)

Member Function Documentation

◆ computeExtremeValue()

template<typename Base >
template<typename Derived >
KOKKOS_FUNCTION void KokkosExtremeValueBase< Base >::computeExtremeValue ( const unsigned int  qp,
Datum datum,
Real *  result 
) const

Definition at line 52 of file KokkosExtremeValueBase.h.

55{
56 auto pv = static_cast<const Derived *>(this)->getProxyValuePair(qp, datum);
57 auto rpv = Kokkos::make_pair(result[0], result[1]);
58
59 if ((_type == ExtremeType::MAX && pv > rpv) || (_type == ExtremeType::MIN && pv < rpv))
60 {
61 result[0] = pv.first;
62 result[1] = pv.second;
63 }
64 else if (_type == ExtremeType::MAX_ABS && Kokkos::abs(pv.first) > rpv.first)
65 {
66 result[0] = Kokkos::abs(pv.first);
67 result[1] = pv.second;
68 }
69}

◆ finalize()

template<typename Base >
virtual void KokkosExtremeValueBase< Base >::finalize ( )
overridevirtual

◆ getValue()

template<typename Base >
virtual Real KokkosExtremeValueBase< Base >::getValue ( ) const
overridevirtual

◆ init()

template<typename Base >
template<typename Derived >
KOKKOS_FUNCTION void KokkosExtremeValueBase< Base >::init ( Real *  result) const

Definition at line 94 of file KokkosExtremeValueBase.h.

95{
97 {
98 result[0] = Kokkos::Experimental::finite_min_v<Real>;
99 result[1] = Kokkos::Experimental::finite_min_v<Real>;
100 }
101 else if (_type == ExtremeType::MIN)
102 {
103 result[0] = Kokkos::Experimental::finite_max_v<Real>;
104 result[1] = Kokkos::Experimental::finite_max_v<Real>;
105 }
106}

◆ initialize()

template<typename Base >
virtual void KokkosExtremeValueBase< Base >::initialize ( )
overridevirtual

◆ join()

template<typename Base >
template<typename Derived >
KOKKOS_FUNCTION void KokkosExtremeValueBase< Base >::join ( Real *  result,
const Real *  source 
) const

Definition at line 74 of file KokkosExtremeValueBase.h.

75{
76 auto rpv = Kokkos::make_pair(result[0], result[1]);
77 auto spv = Kokkos::make_pair(source[0], source[1]);
78
79 if ((_type == ExtremeType::MAX && spv > rpv) || (_type == ExtremeType::MIN && spv < rpv))
80 {
81 result[0] = source[0];
82 result[1] = source[1];
83 }
84 else if (_type == ExtremeType::MAX_ABS && Kokkos::abs(spv.first) > rpv.first)
85 {
86 result[0] = Kokkos::abs(source[0]);
87 result[1] = source[1];
88 }
89}

◆ validParams()

template<typename Base >
static InputParameters KokkosExtremeValueBase< Base >::validParams ( )
static

Member Data Documentation

◆ _type

template<typename Base >
enum KokkosExtremeValueBase::ExtremeType KokkosExtremeValueBase< Base >::_type
protected

The documentation for this class was generated from the following file: