https://mooseframework.inl.gov
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  ExtremeType { ExtremeType::MAX, ExtremeType::MIN, ExtremeType::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 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.

42  {
43  MAX,
44  MIN,
45  MAX_ABS
46  } _type;
enum KokkosExtremeValueBase::ExtremeType _type

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 }
MetaPhysicL::DualNumber< V, D, asd > abs(const MetaPhysicL::DualNumber< V, D, asd > &a)
Definition: EigenADReal.h:50
enum KokkosExtremeValueBase::ExtremeType _type

◆ 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 }
enum KokkosExtremeValueBase::ExtremeType _type

◆ 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 }
MetaPhysicL::DualNumber< V, D, asd > abs(const MetaPhysicL::DualNumber< V, D, asd > &a)
Definition: EigenADReal.h:50
enum KokkosExtremeValueBase::ExtremeType _type

◆ 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: