1#ifndef AMREX_EB2_IF_INTERSECTION_H_
2#define AMREX_EB2_IF_INTERSECTION_H_
3#include <AMReX_Config.H>
22 return std::forward<F>(f)(p);
25 template <
typename F,
typename... Fs>
28 return amrex::min(std::forward<F>(f)(p),
do_min(p, std::forward<Fs>(fs)...));
38 template <
typename F,
typename... Fs>
55 return op_impl(p, std::make_index_sequence<
sizeof...(Fs)>());
58 template <
class U=
IntersectionIF<Fs...>, std::enable_if_t<IsGPUable<U>::value,
int> = 0>
67 template <std::size_t... Is>
68 [[nodiscard]]
inline Real
op_impl (
const RealArray& p, std::index_sequence<Is...>)
const noexcept
73 template <std::size_t... Is>
81template <
class Head,
class... Tail>
#define AMREX_GPU_HOST_DEVICE
Definition AMReX_GpuQualifiers.H:20
Definition AMReX_EB2_IF_Intersection.H:49
Real operator()(const RealArray &p) const noexcept
Definition AMReX_EB2_IF_Intersection.H:53
Real op_impl(const RealArray &p, std::index_sequence< Is... >) const noexcept
Definition AMReX_EB2_IF_Intersection.H:68
AMREX_GPU_HOST_DEVICE Real op_impl(AMREX_D_DECL(Real x, Real y, Real z), std::index_sequence< Is... >) const noexcept
Definition AMReX_EB2_IF_Intersection.H:75
Definition AMReX_Tuple.H:93
AMREX_GPU_HOST_DEVICE constexpr GpuTuple()=default
Real do_min(const RealArray &p, F &&f) noexcept
Definition AMReX_EB2_IF_Intersection.H:20
Definition AMReX_FabArrayBase.H:32
constexpr IntersectionIF< std::decay_t< Fs > ... > makeIntersection(Fs &&... fs)
Definition AMReX_EB2_IF_Intersection.H:91
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE constexpr const T & min(const T &a, const T &b) noexcept
Definition AMReX_Algorithm.H:21
Array< Real, AMREX_SPACEDIM > RealArray
Definition AMReX_Array.H:26
Definition AMReX_EB2_IF_Base.H:15