20 amrex::Print() <<
" IN Z LEVELS " << std::endl;
21 int max_level = zlevels_stag.size()-1;
23 for (
int lev = 0; lev <= max_level; lev++)
25 auto dx = geom[lev].CellSizeArray();
26 const Box& domain = geom[lev].Domain();
27 int nz = domain.length(2)+1;
29 zlevels_stag[lev].resize(nz);
31 stretched_dz_h[lev].resize(domain.length(2));
33 if (grid_stretching_ratio == 0) {
35 for (
int k = 0; k < nz; k++)
37 zlevels_stag[lev][k] = k * dx[2];
39 for (
int k = 0; k < nz-1; k++)
41 stretched_dz_h[lev][k] = dx[2];
43 }
else if (lev == 0) {
45 zlevels_stag[lev][0] = zsurf;
47 stretched_dz_h[lev][0] = dz0;
48 Print() <<
"Stretched grid levels at level : " << lev <<
" is " << zsurf;
49 for (
int k = 1; k < nz; k++)
51 zlevels_stag[lev][k] = zlevels_stag[lev][k-1] + dz;
53 stretched_dz_h[lev][k] = dz;
55 Print() <<
" " << zlevels_stag[lev][k];
56 dz *= grid_stretching_ratio;
60 int rr = ref_ratio[lev-1][2];
62 for (
int k = 0; k < nz-1; k++)
64 stretched_dz_h[lev][k] = (zlevels_stag[lev][k+1] - zlevels_stag[lev][k]);
73 int n_zlevels =
pp.countval(
"terrain_z_levels");
76 int nz = geom[0].Domain().length(2)+1;
77 if (n_zlevels != nz) {
78 Print() <<
"You supplied " << n_zlevels <<
" staggered terrain_z_levels " << std::endl;
79 Print() <<
"but n_cell+1 in the z-direction is " << nz << std::endl;
80 Abort(
"You must specify a z_level for every value of k");
83 if (grid_stretching_ratio > 0) {
84 Print() <<
"Note: Found terrain_z_levels, ignoring grid_stretching_ratio" << std::endl;
87 pp.getarr(
"terrain_z_levels", zlevels_stag[0], 0, nz);
92 AMREX_ALWAYS_ASSERT(zlevels_stag[0][0] == 0);
94 for (
int lev = 1; lev <= max_level; lev++) {
95 int rr = ref_ratio[lev-1][2];
99 for (
int lev = 0; lev <= max_level; lev++) {
100 int nz_zlevs = zlevels_stag[lev].size();
101 for (
int k = 0; k < nz_zlevs-1; k++)
103 stretched_dz_h[lev][k] = (zlevels_stag[lev][k+1] - zlevels_stag[lev][k]);
108 for (
int lev = 0; lev <= max_level; lev++) {
109 stretched_dz_d[lev].resize(stretched_dz_h[lev].size());
110 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:219