3 #include <AMReX_REAL.H>
5 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
6 amrex::Real
interpolate_1d(
const amrex::Real* alpha,
const amrex::Real* beta,
7 const amrex::Real alpha_interp,
const int alpha_size)
14 amrex::Real beta_interp;
18 for (
int i = 0; i < alpha_size; ++i) {
19 if (alpha[i] == alpha_interp) {
20 beta_interp = beta[i];
27 const amrex::Real* alpha_begin = &alpha[0];
28 const amrex::Real* alpha_end = &alpha[alpha_size];
29 amrex::Real max = *std::max_element(alpha_begin, alpha_end);
30 amrex::Real min = *std::min_element(alpha_begin, alpha_end);
31 if (alpha_interp >= min && alpha_interp <= max)
33 for (
int i = 0; i < alpha_size; ++i)
35 if (alpha_interp >= alpha[i] && alpha_interp <= alpha[i + 1])
38 amrex::Real y0 = beta[i];
39 amrex::Real y1 = beta[i + 1];
40 amrex::Real
x = alpha_interp;
41 amrex::Real x0 = alpha[i];
42 amrex::Real x1 = alpha[i + 1];
43 beta_interp = y0 + (y1 - y0)*(
x - x0) / (x1 - x0);
51 if (alpha_interp >= *alpha_end)
53 i = alpha_end - alpha_begin - 1;
59 amrex::Real y0 = beta[i];
60 amrex::Real y1 = beta[i + 1];
61 amrex::Real
x = alpha_interp;
62 amrex::Real x0 = alpha[i];
63 amrex::Real x1 = alpha[i + 1];
64 beta_interp = y0 + ((
x - x0) / (x1 - x0)) * (y1 - y0);
69 using namespace amrex;
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real interpolate_1d(const amrex::Real *alpha, const amrex::Real *beta, const amrex::Real alpha_interp, const int alpha_size)
Definition: REMORA_Math.H:6