1#ifndef AMREX_EB2_IF_POLYNOMIAL_H_
2#define AMREX_EB2_IF_POLYNOMIAL_H_
3#include <AMReX_Config.H>
39template <
unsigned int N>
49 m_sign( a_inside ? 1.0_rt : -1.0_rt )
58 retval += term.coef *
AMREX_D_TERM( std::pow(
x, term.powers[0]),
59 * std::pow(
y, term.powers[1]),
60 * std::pow(
z, term.powers[2]));
85 m_sign( a_inside ? 1.0_rt : -1.0_rt ),
100 retval += term.coef *
AMREX_D_TERM( std::pow(
x, term.powers[0]),
101 * std::pow(
y, term.powers[1]),
102 * std::pow(
z, term.powers[2]));
#define AMREX_FORCE_INLINE
Definition AMReX_Extension.H:119
#define AMREX_GPU_HOST_DEVICE
Definition AMReX_GpuQualifiers.H:20
#define AMREX_D_TERM(a, b, c)
Definition AMReX_SPACE.H:172
#define AMREX_D_DECL(a, b, c)
Definition AMReX_SPACE.H:171
GPU-ready polynomial implicit function with a fixed number of terms.
Definition AMReX_EB2_IF_Polynomial.H:43
Real m_sign
Definition AMReX_EB2_IF_Polynomial.H:72
GpuArray< PolyTerm, N > m_polynomial
Definition AMReX_EB2_IF_Polynomial.H:71
PolyIF(const GpuArray< PolyTerm, N > &a_polynomial, bool a_inside=true)
Store the polynomial terms and orientation (inside/outside).
Definition AMReX_EB2_IF_Polynomial.H:47
__host__ __device__ Real operator()(Real x, Real y, Real z) const noexcept
Evaluate the polynomial at explicit coordinates.
Definition AMReX_EB2_IF_Polynomial.H:54
Represents one monomial in a polynomial implicit function.
Definition AMReX_EB2_IF_Polynomial.H:29
Real coef
Coefficient of this polynomial term.
Definition AMReX_EB2_IF_Polynomial.H:33
IntVect powers
Powers of this polynomial term.
Definition AMReX_EB2_IF_Polynomial.H:36
Host-only dynamically-sized polynomial implicit function.
Definition AMReX_EB2_IF_Polynomial.H:78
PolynomialIF(PolynomialIF &&rhs)=default
int m_size
Definition AMReX_EB2_IF_Polynomial.H:116
PolynomialIF(const PolynomialIF &rhs)=default
Vector< PolyTerm > m_polynomial
Definition AMReX_EB2_IF_Polynomial.H:113
Real m_sign
Definition AMReX_EB2_IF_Polynomial.H:115
bool m_inside
Definition AMReX_EB2_IF_Polynomial.H:114
PolynomialIF(const Vector< PolyTerm > &a_polynomial, bool a_inside=true)
Store the term vector and orientation (inside/outside).
Definition AMReX_EB2_IF_Polynomial.H:82
PolynomialIF & operator=(const PolynomialIF &rhs)=delete
Real operator()(Real x, Real y, Real z) const noexcept
Definition AMReX_EB2_IF_Polynomial.H:96
This class is a thin wrapper around std::vector. Unlike vector, Vector::operator[] provides bound che...
Definition AMReX_Vector.H:28
amrex_real Real
Floating Point Type for Fields.
Definition AMReX_REAL.H:79
Definition AMReX_FabArrayBase.H:33
const int[]
Definition AMReX_BLProfiler.cpp:1664
Array< Real, 3 > RealArray
Definition AMReX_Array.H:28
Marker base that denotes an implicit function callable on device kernels.
Definition AMReX_EB2_IF_Base.H:19
Fixed-size array that can be used on GPU.
Definition AMReX_Array.H:43