1 #ifndef ERF_SHOC_COLUMN_DATA_H_
2 #define ERF_SHOC_COLUMN_DATA_H_
7 #include <AMReX_Arena.H>
14 layout.
nx = bx.length(0);
15 layout.
ny = bx.length(1);
17 layout.
nlev = geom.Domain().length(2);
18 layout.
imin = bx.smallEnd(0);
19 layout.
jmin = bx.smallEnd(1);
20 layout.
kmin = geom.Domain().smallEnd(2);
21 layout.
kmax = geom.Domain().bigEnd(2);
56 amrex::Arena* arena = amrex::The_Async_Arena(),
61 const amrex::Box cell_box(amrex::IntVect(0,0,0),
62 amrex::IntVect(layout.
ncell-1, layout.
nlev-1, 0));
63 const amrex::Box iface_box(amrex::IntVect(0,0,0),
64 amrex::IntVect(layout.
ncell-1, layout.
nlev, 0));
65 const amrex::Box scal_box(amrex::IntVect(0,0,0),
66 amrex::IntVect(layout.
ncell-1, 0, 0));
68 auto make2 = [&] (amrex::FArrayBox& fab) { fab.resize(cell_box, 1, arena); };
69 auto make2i = [&] (amrex::FArrayBox& fab) { fab.resize(iface_box, 1, arena); };
70 auto make1 = [&] (amrex::FArrayBox& fab) { fab.resize(scal_box, 1, arena); };
72 make2(col.
zt); make2i(col.
zi); make2(col.
dz); make2(col.
p_mid); make2i(col.
p_int);
74 make2(col.
qv); make2(col.
qc); make2(col.
qi); make2(col.
qw); make2(col.
tabs); make2(col.
tke);
75 make2(col.
u); make2(col.
v); make2(col.
w); make2(col.
host_dse);
108 amrex::Arena* arena = amrex::The_Async_Arena(),
128 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
132 return (j - layout.
jmin) * layout.
nx + (i - layout.
imin);
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE int shoc_column_index(const ShocColumnLayout &layout, int i, int j)
Definition: ERF_ShocColumnData.H:130
void for_each_shoc_fab(ShocColumnData &col, F &&f)
Definition: ERF_ShocColumnData.H:27
ShocColumnLayout make_shoc_layout(const amrex::Box &bx, const amrex::Geometry &geom)
Definition: ERF_ShocColumnData.H:11
bool shoc_layout_fits(const ShocColumnLayout &active, const ShocColumnLayout &capacity)
Definition: ERF_ShocColumnData.H:93
void define_shoc_column_data(ShocColumnData &col, const ShocColumnLayout &layout, amrex::Arena *arena=amrex::The_Async_Arena(), shoc::InitRunOn init_run_on=shoc::default_init_run_on())
Definition: ERF_ShocColumnData.H:54
void reset_shoc_column_data(ShocColumnData &col, shoc::InitRunOn init_run_on=shoc::default_init_run_on())
Definition: ERF_ShocColumnData.H:45
amrex::Real Real
Definition: ERF_ShocInterface.H:19
Definition: ERF_ShocColumnData.H:103
bool m_defined
Definition: ERF_ShocColumnData.H:125
ShocColumnData col
Definition: ERF_ShocColumnData.H:105
amrex::Arena * m_arena
Definition: ERF_ShocColumnData.H:124
void ensure_capacity(const ShocColumnLayout &layout, amrex::Arena *arena=amrex::The_Async_Arena(), shoc::InitRunOn init_run_on=shoc::default_init_run_on())
Definition: ERF_ShocColumnData.H:107
ShocColumnLayout m_capacity_layout
Definition: ERF_ShocColumnData.H:123
InitRunOn
Definition: ERF_ShocGpuUtils.H:10
void set_fab_val(amrex::FArrayBox &fab, amrex::Real value, InitRunOn)
Definition: ERF_ShocGpuUtils.H:37
InitRunOn default_init_run_on()
Definition: ERF_ShocGpuUtils.H:27
Definition: ERF_ShocTypes.H:204
amrex::FArrayBox theta_v
Definition: ERF_ShocTypes.H:216
amrex::FArrayBox theta
Definition: ERF_ShocTypes.H:214
amrex::FArrayBox qc_tend
Definition: ERF_ShocTypes.H:271
amrex::FArrayBox theta_base
Definition: ERF_ShocTypes.H:261
amrex::FArrayBox v_tend
Definition: ERF_ShocTypes.H:274
amrex::FArrayBox shoc_cond
Definition: ERF_ShocTypes.H:246
amrex::FArrayBox qi
Definition: ERF_ShocTypes.H:220
amrex::FArrayBox buoy_prod
Definition: ERF_ShocTypes.H:239
amrex::FArrayBox dz
Definition: ERF_ShocTypes.H:210
amrex::FArrayBox diss_tke
Definition: ERF_ShocTypes.H:240
amrex::FArrayBox w_sec
Definition: ERF_ShocTypes.H:258
amrex::FArrayBox tk
Definition: ERF_ShocTypes.H:236
amrex::FArrayBox w3
Definition: ERF_ShocTypes.H:257
amrex::FArrayBox vw_sec
Definition: ERF_ShocTypes.H:255
amrex::FArrayBox surf_lat_flux
Definition: ERF_ShocTypes.H:277
amrex::FArrayBox ustar
Definition: ERF_ShocTypes.H:232
amrex::FArrayBox shoc_evap
Definition: ERF_ShocTypes.H:247
amrex::FArrayBox shoc_mix
Definition: ERF_ShocTypes.H:233
amrex::FArrayBox v_base
Definition: ERF_ShocTypes.H:266
amrex::FArrayBox wthv_sec
Definition: ERF_ShocTypes.H:241
amrex::FArrayBox shear_prod
Definition: ERF_ShocTypes.H:238
amrex::FArrayBox rho
Definition: ERF_ShocTypes.H:213
amrex::FArrayBox tke_base_state
Definition: ERF_ShocTypes.H:267
amrex::FArrayBox wqw_sec
Definition: ERF_ShocTypes.H:253
amrex::FArrayBox qv_base
Definition: ERF_ShocTypes.H:262
amrex::FArrayBox shoc_ql
Definition: ERF_ShocTypes.H:243
amrex::FArrayBox uw_sec
Definition: ERF_ShocTypes.H:254
amrex::FArrayBox w
Definition: ERF_ShocTypes.H:226
amrex::FArrayBox host_dse
Definition: ERF_ShocTypes.H:227
amrex::FArrayBox pblh
Definition: ERF_ShocTypes.H:230
amrex::FArrayBox qc
Definition: ERF_ShocTypes.H:219
amrex::FArrayBox surf_tau_v
Definition: ERF_ShocTypes.H:279
amrex::FArrayBox isotropy
Definition: ERF_ShocTypes.H:235
amrex::FArrayBox tke
Definition: ERF_ShocTypes.H:223
amrex::FArrayBox p_int
Definition: ERF_ShocTypes.H:212
amrex::FArrayBox qw_sec
Definition: ERF_ShocTypes.H:250
amrex::FArrayBox qi_base
Definition: ERF_ShocTypes.H:264
amrex::FArrayBox tkh
Definition: ERF_ShocTypes.H:237
amrex::FArrayBox exner
Definition: ERF_ShocTypes.H:215
amrex::FArrayBox u_base
Definition: ERF_ShocTypes.H:265
amrex::FArrayBox tke_tend
Definition: ERF_ShocTypes.H:275
amrex::FArrayBox qi_tend
Definition: ERF_ShocTypes.H:272
amrex::FArrayBox qc_base
Definition: ERF_ShocTypes.H:263
amrex::FArrayBox u_tend
Definition: ERF_ShocTypes.H:273
ShocColumnLayout layout
Definition: ERF_ShocTypes.H:205
amrex::FArrayBox zi
Definition: ERF_ShocTypes.H:209
amrex::FArrayBox tabs
Definition: ERF_ShocTypes.H:222
amrex::FArrayBox surf_sens_flux
Definition: ERF_ShocTypes.H:276
amrex::FArrayBox qw
Definition: ERF_ShocTypes.H:221
amrex::FArrayBox v
Definition: ERF_ShocTypes.H:225
amrex::FArrayBox zt
Definition: ERF_ShocTypes.H:208
amrex::FArrayBox qv
Definition: ERF_ShocTypes.H:218
amrex::FArrayBox p_mid
Definition: ERF_ShocTypes.H:211
amrex::FArrayBox wtke_sec
Definition: ERF_ShocTypes.H:256
amrex::FArrayBox u
Definition: ERF_ShocTypes.H:224
amrex::FArrayBox theta_tend
Definition: ERF_ShocTypes.H:269
amrex::FArrayBox obklen
Definition: ERF_ShocTypes.H:231
amrex::FArrayBox wqls_sec
Definition: ERF_ShocTypes.H:245
amrex::FArrayBox surf_tau_u
Definition: ERF_ShocTypes.H:278
amrex::FArrayBox qv_tend
Definition: ERF_ShocTypes.H:270
amrex::FArrayBox wthl_sec
Definition: ERF_ShocTypes.H:252
amrex::FArrayBox thl_sec
Definition: ERF_ShocTypes.H:249
amrex::FArrayBox shoc_ql2
Definition: ERF_ShocTypes.H:244
amrex::FArrayBox thetal_base
Definition: ERF_ShocTypes.H:260
amrex::FArrayBox qwthl_sec
Definition: ERF_ShocTypes.H:251
amrex::FArrayBox brunt
Definition: ERF_ShocTypes.H:234
amrex::FArrayBox shoc_cldfrac
Definition: ERF_ShocTypes.H:242
amrex::FArrayBox thetal
Definition: ERF_ShocTypes.H:217
Definition: ERF_ShocTypes.H:192
int imin
Definition: ERF_ShocTypes.H:197
int nlev
Definition: ERF_ShocTypes.H:196
int kmax
Definition: ERF_ShocTypes.H:200
int ncell
Definition: ERF_ShocTypes.H:195
int jmin
Definition: ERF_ShocTypes.H:198
int ny
Definition: ERF_ShocTypes.H:194
int nx
Definition: ERF_ShocTypes.H:193
int kmin
Definition: ERF_ShocTypes.H:199