1#ifndef AMREX_EB2_IF_ROTATION_H_
2#define AMREX_EB2_IF_ROTATION_H_
3#include <AMReX_Config.H>
28 :
m_f(std::move(a_f)),
35#if (AMREX_SPACEDIM==2)
43 template <class U=F, std::enable_if_t<IsGPUable<U>::value,
int> = 0>
52#if (AMREX_SPACEDIM==3)
60 return m_f({p[0],
y,
z});
66 return m_f({
x, p[1],
z});
72 return m_f({
x,
y, p[2]});
77 template <class U=F, std::enable_if_t<IsGPUable<U>::value,
int> = 0>
#define AMREX_FORCE_INLINE
Definition AMReX_Extension.H:119
#define AMREX_GPU_HOST_DEVICE
Definition AMReX_GpuQualifiers.H:20
Rotate an implicit surface around one of the coordinate axes.
Definition AMReX_EB2_IF_Rotation.H:23
Real operator()(const RealArray &p) const noexcept
Definition AMReX_EB2_IF_Rotation.H:53
int m_dir
Definition AMReX_EB2_IF_Rotation.H:109
Real m_sin_angle
Definition AMReX_EB2_IF_Rotation.H:108
Real m_cos_angle
Definition AMReX_EB2_IF_Rotation.H:107
F m_f
Definition AMReX_EB2_IF_Rotation.H:106
RotationIF(F a_f, Real angle, int dir)
Store the child implicit function and rotation parameters.
Definition AMReX_EB2_IF_Rotation.H:27
amrex_real Real
Floating Point Type for Fields.
Definition AMReX_REAL.H:79
Definition AMReX_FabArrayBase.H:33
constexpr RotationIF< std::decay_t< F > > rotate(F &&f, const Real angle, const int dir)
Definition AMReX_EB2_IF_Rotation.H:118
Array< Real, 3 > RealArray
Definition AMReX_Array.H:28
Type trait that reports whether a functor derives from GPUable.
Definition AMReX_EB2_IF_Base.H:24