20 int max_level = zlevels_stag.size()-1;
22 for (
int lev = 0; lev <= max_level; lev++)
24 auto dx = geom[lev].CellSizeArray();
25 const Box& domain = geom[lev].Domain();
26 int nz = domain.length(2)+1;
28 zlevels_stag[lev].resize(nz);
30 stretched_dz_h[lev].resize(domain.length(2));
32 if (grid_stretching_ratio == 0) {
34 for (
int k = 0; k < nz; k++)
36 zlevels_stag[lev][k] = k * dx[2];
38 for (
int k = 0; k < nz-1; k++)
40 stretched_dz_h[lev][k] = dx[2];
42 }
else if (lev == 0) {
44 zlevels_stag[lev][0] = zsurf;
46 stretched_dz_h[lev][0] = dz0;
47 Print() <<
"Stretched grid levels at level : " << lev <<
" is " << zsurf;
48 for (
int k = 1; k < nz; k++)
50 zlevels_stag[lev][k] = zlevels_stag[lev][k-1] + dz;
52 stretched_dz_h[lev][k] = dz;
54 Print() <<
" " << zlevels_stag[lev][k];
55 dz *= grid_stretching_ratio;
59 int rr = ref_ratio[lev-1][2];
61 for (
int k = 0; k < nz-1; k++)
63 stretched_dz_h[lev][k] = (zlevels_stag[lev][k+1] - zlevels_stag[lev][k]);
72 int n_zlevels =
pp.countval(
"terrain_z_levels");
75 int nz = geom[0].Domain().length(2)+1;
76 if (n_zlevels != nz) {
77 Print() <<
"You supplied " << n_zlevels <<
" staggered terrain_z_levels " << std::endl;
78 Print() <<
"but n_cell+1 in the z-direction is " << nz << std::endl;
79 Abort(
"You must specify a z_level for every value of k");
82 if (grid_stretching_ratio > 0) {
83 Print() <<
"Note: Found terrain_z_levels, ignoring grid_stretching_ratio" << std::endl;
86 pp.getarr(
"terrain_z_levels", zlevels_stag[0], 0, nz);
91 AMREX_ALWAYS_ASSERT(zlevels_stag[0][0] == 0);
93 for (
int lev = 1; lev <= max_level; lev++) {
94 int rr = ref_ratio[lev-1][2];
98 for (
int lev = 0; lev <= max_level; lev++) {
99 int nz_zlevs = zlevels_stag[lev].size();
100 for (
int k = 0; k < nz_zlevs-1; k++)
102 stretched_dz_h[lev][k] = (zlevels_stag[lev][k+1] - zlevels_stag[lev][k]);
107 for (
int lev = 0; lev <= max_level; lev++) {
108 stretched_dz_d[lev].resize(stretched_dz_h[lev].size());
109 Gpu::copy(Gpu::hostToDevice, stretched_dz_h[lev].begin(), stretched_dz_h[lev].end(), stretched_dz_d[lev].begin());
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
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real pp(amrex::Real y)
Definition: ERF_MicrophysicsUtils.H:230
amrex::Real Real
Definition: ERF_ShocInterface.H:16
real(c_double), private rr
Definition: ERF_module_mp_morr_two_moment.F90:223