1 #ifndef Initialization_1D_H
2 #define Initialization_1D_H
3 #include <AMReX_REAL.H>
11 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
12 amrex::Real
interpolate_1d (
const amrex::Real* alpha,
const amrex::Real* beta,
13 const amrex::Real alpha_interp,
const int alpha_size)
15 amrex::Real beta_interp = -1.0e34;
19 for (
int i = 0; i < alpha_size; ++i) {
20 if (alpha[i] == alpha_interp) {
21 beta_interp = beta[i];
28 amrex::Real alpha_min = alpha[0];
29 amrex::Real alpha_max = alpha[alpha_size-1];
30 if (alpha_interp >= alpha_min && alpha_interp <= alpha_max)
32 for (
int i = 0; i < alpha_size; ++i)
34 if (alpha_interp >= alpha[i] && alpha_interp <= alpha[i + 1])
37 amrex::Real y0 = beta[i];
38 amrex::Real y1 = beta[i + 1];
39 amrex::Real
x = alpha_interp;
40 amrex::Real x0 = alpha[i];
41 amrex::Real x1 = alpha[i + 1];
42 beta_interp = y0 + (y1 - y0)*(
x - x0) / (x1 - x0);
51 if (alpha_interp > alpha_max)
55 else if (alpha_interp >= alpha_min)
57 amrex::Abort(
"interpolate_1d: we shouldn't be here!");
60 amrex::Real y0 = beta[i];
61 amrex::Real y1 = beta[i + 1];
62 amrex::Real
x = alpha_interp;
63 amrex::Real x0 = alpha[i];
64 amrex::Real x1 = alpha[i + 1];
65 beta_interp = y0 + ((
x - x0) / (x1 - x0)) * (y1 - y0);
86 const amrex::Vector<amrex::Real>& zorig,
90 const int Nz = zorig.size();
91 const int Nz_refined = refine_fac*(Nz-1) + 1;
93 AMREX_ALWAYS_ASSERT(znew.size() == Nz_refined-1);
95 AMREX_ALWAYS_ASSERT(znew.size() == Nz_refined);
97 amrex::Vector<amrex::Real> znew_stag(Nz_refined);
98 for (
int k=0; k < Nz; ++k) {
99 znew_stag[refine_fac*k] = zorig[k];
101 if (refine_fac > 1) {
102 for (
int k=0; k < Nz-1; ++k) {
103 amrex::Real z1 = zorig[k];
104 amrex::Real dz = zorig[k+1] - z1;
105 for (
int koff=1; koff < refine_fac; ++koff) {
106 znew_stag[refine_fac*k + koff] = amrex::Real(koff)/refine_fac * dz + z1;
111 for (
int k=0; k < Nz_refined-1; ++k) {
112 znew[k] = 0.5*(znew_stag[k] + znew_stag[k+1]);
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: ERF_Interpolation_1D.H:12
AMREX_FORCE_INLINE void expand_and_interpolate_1d(amrex::Vector< amrex::Real > &znew, const amrex::Vector< amrex::Real > &zorig, int refine_fac, bool destag=false)
Definition: ERF_Interpolation_1D.H:85