1 #ifndef ERF_INTEGRATION_H_
2 #define ERF_INTEGRATION_H_
4 #include <AMReX_MultiFab.H>
5 #include <AMReX_EBMultiFabUtil.H>
6 #include <AMReX_TableData.H>
21 const amrex::Vector<amrex::MultiFab>& S_data,
22 const amrex::MultiFab & S_prim,
23 const amrex::MultiFab &
qt,
24 amrex::MultiFab& buoyancy,
25 const amrex::Geometry geom,
27 const amrex::MultiFab& base_state,
34 const amrex::Geometry& geom,
35 amrex::Vector<amrex::MultiFab>& S_data,
36 const amrex::MultiFab&
p0,
37 const amrex::MultiFab& z_phys_nd,
38 const amrex::MultiFab& z_phys_cc,
39 amrex::Vector<std::unique_ptr<amrex::MultiFab>>& mapfac,
41 amrex::Vector<amrex::MultiFab>& gradp);
44 const amrex::Geometry& geom,
45 const amrex::MultiFab& z_phys_nd,
46 const amrex::MultiFab& z_phys_cc,
47 amrex::Vector<std::unique_ptr<amrex::MultiFab>>& mapfac,
49 amrex::Vector<amrex::MultiFab>& gradp,
53 const amrex::Geometry& geom,
54 const amrex::MultiFab& z_phys_cc,
55 amrex::Vector<std::unique_ptr<amrex::MultiFab>>& mapfac,
57 amrex::Vector<amrex::MultiFab>& gradp,
61 const amrex::Geometry& geom,
62 const amrex::MultiFab& z_phys_nd,
64 amrex::Vector<amrex::MultiFab>& gradp,
68 const amrex::Geometry& geom,
69 const amrex::MultiFab& z_phys_nd,
70 const amrex::MultiFab& z_phys_cc,
71 amrex::Vector<std::unique_ptr<amrex::MultiFab>>& mapfac,
72 amrex::Vector<amrex::MultiFab>& gradp,
76 double dt,
double time,
77 const amrex::Vector<amrex::MultiFab>& S_data,
78 const amrex::MultiFab& S_prim,
79 amrex::MultiFab& cc_source,
80 const amrex::MultiFab& base_state,
81 const amrex::MultiFab* z_phys_cc,
82 const amrex::MultiFab&
xvel,
83 const amrex::MultiFab&
yvel,
84 const amrex::MultiFab&
zvel,
85 const amrex::MultiFab* qheating_rates,
86 amrex::MultiFab* terrain_blank,
87 const amrex::Geometry geom,
89 amrex::Vector<std::unique_ptr<amrex::MultiFab>>& mapfac,
90 const amrex::MultiFab* rhotheta_src,
91 const amrex::MultiFab* rhoqt_src,
93 const amrex::Vector<amrex::Real*> d_rayleigh_ptrs_at_lev,
96 const amrex::Table1D<amrex::Real> r_plane_avg,
97 const amrex::Table1D<amrex::Real> t_plane_avg,
100 #if defined(ERF_USE_NETCDF)
126 add_moist_nudging_terms (
const amrex::MultiFab& S_data,
127 amrex::MultiFab& source,
130 const double& old_stage_time_total,
131 const double& start_bdy_time,
132 const double& final_bdy_time,
133 const double& bdy_time_interval,
136 const amrex::Geometry& geom,
137 amrex::Vector<amrex::Vector<amrex::FArrayBox>>& bdy_data_xlo,
138 amrex::Vector<amrex::Vector<amrex::FArrayBox>>& bdy_data_xhi,
139 amrex::Vector<amrex::Vector<amrex::FArrayBox>>& bdy_data_ylo,
140 amrex::Vector<amrex::Vector<amrex::FArrayBox>>& bdy_data_yhi,
141 std::unique_ptr<ReadBndryPlanes>& m_r2d,
145 const bool use_wrf_bdy_density,
146 const int bdy_moist_nudge_type);
151 const amrex::Vector<amrex::MultiFab>& S_data,
152 const amrex::MultiFab* z_phys_nd,
153 const amrex::MultiFab* z_phys_cc,
154 amrex::Vector<amrex::Real>& stretched_dz_h,
155 const amrex::MultiFab&
xvel,
156 const amrex::MultiFab&
yvel,
157 const amrex::MultiFab&
zvel,
158 amrex::MultiFab& xmom_source,
159 amrex::MultiFab& ymom_source,
160 amrex::MultiFab& zmom_source,
161 const amrex::MultiFab& base_state,
162 amrex::MultiFab* forest_drag,
163 amrex::MultiFab* terrain_blank,
164 amrex::MultiFab* terrain_blank_xface,
165 amrex::MultiFab* terrain_blank_yface,
166 amrex::MultiFab* terrain_blank_zface,
167 amrex::MultiFab* cosPhi_mf,
168 amrex::MultiFab* sinPhi_mf,
169 const amrex::Geometry geom,
171 amrex::Vector<std::unique_ptr<amrex::MultiFab>>& mapfac,
175 const amrex::Vector<amrex::Real*> d_rayleigh_ptrs_at_lev,
178 const amrex::Vector<amrex::Real*> d_sponge_ptrs_at_lev,
179 const amrex::Vector<amrex::MultiFab>* forecast_state_at_lev,
182 std::unique_ptr<amrex::MultiFab>& lsf_tendencies,
187 amrex::MultiFab& ymom_source,
188 amrex::MultiFab& zmom_source,
189 std::unique_ptr<amrex::iMultiFab>& xflux_imask_lev,
190 std::unique_ptr<amrex::iMultiFab>& yflux_imask_lev,
191 std::unique_ptr<amrex::iMultiFab>& zflux_imask_lev,
192 std::unique_ptr<amrex::MultiFab>& thin_xforce_lev,
193 std::unique_ptr<amrex::MultiFab>& thin_yforce_lev,
194 std::unique_ptr<amrex::MultiFab>& thin_zforce_lev);
196 #if defined(ERF_USE_NETCDF)
220 moist_set_rhs (
const amrex::Geometry& geom,
221 const amrex::Box& tbx,
222 const amrex::Array4<amrex::Real const>& new_cons,
223 const amrex::Array4<amrex::Real >& cell_rhs,
227 const double& start_bdy_time,
228 const double& final_bdy_time,
229 const double& bdy_time_interval,
232 const amrex::Box& domain,
233 amrex::Vector<amrex::Vector<amrex::FArrayBox>>& bdy_data_xlo,
234 amrex::Vector<amrex::Vector<amrex::FArrayBox>>& bdy_data_xhi,
235 amrex::Vector<amrex::Vector<amrex::FArrayBox>>& bdy_data_ylo,
236 amrex::Vector<amrex::Vector<amrex::FArrayBox>>& bdy_data_yhi,
237 std::unique_ptr<ReadBndryPlanes>& m_r2d);
241 const amrex::Geometry geom,
242 const amrex::Box& bx,
243 const amrex::Array4<amrex::Real>& cell_rhs,
244 const amrex::Array4<const amrex::Real>& cell_data,
245 const amrex::Array4<const amrex::Real>&
r0,
246 const amrex::Array4<const amrex::Real>& th0,
247 const amrex::Array4<const amrex::Real>& qv0,
248 const amrex::Array4<const amrex::Real>& z_phys_cc,
252 const amrex::Geometry geom,
253 const amrex::Box& tbx,
254 const amrex::Box& tby,
255 const amrex::Box& tbz,
256 const amrex::Array4<amrex::Real>& rho_u_rhs,
257 const amrex::Array4<amrex::Real>& rho_v_rhs,
258 const amrex::Array4<amrex::Real>& rho_w_rhs,
259 const amrex::Array4<const amrex::Real>& rho_u,
260 const amrex::Array4<const amrex::Real>& rho_v,
261 const amrex::Array4<const amrex::Real>& rho_w,
262 const amrex::Array4<const amrex::Real>&
r0,
263 const amrex::Array4<const amrex::Real>& z_phys_nd,
264 const amrex::Array4<const amrex::Real>& z_phys_cc);
267 const amrex::Geometry geom,
268 const amrex::Box& tbx,
269 const amrex::Box& tby,
270 const amrex::Array4<const amrex::Real>& cell_data,
271 const amrex::Array4<const amrex::Real>& z_phys_cc,
272 const amrex::Array4<amrex::Real>& rho_u_rhs,
273 const amrex::Array4<amrex::Real>& rho_v_rhs,
274 const amrex::Array4<const amrex::Real>& rho_u,
275 const amrex::Array4<const amrex::Real>& rho_v,
276 const amrex::Vector<amrex::Real*> d_sponge_ptrs_at_lev);
279 const amrex::Geometry geom,
280 const amrex::Box& tbx,
281 const amrex::Box& tby,
282 const amrex::Box& tbz,
283 const amrex::Array4<const amrex::Real>& z_phys_nd,
284 const amrex::Array4<amrex::Real>& rho_u_rhs,
285 const amrex::Array4<amrex::Real>& rho_v_rhs,
286 const amrex::Array4<amrex::Real>& rho_w_rhs,
287 const amrex::Array4<const amrex::Real>& rho_u,
288 const amrex::Array4<const amrex::Real>& rho_v,
289 const amrex::Array4<const amrex::Real>& rho_w,
290 const amrex::Array4<const amrex::Real>& rho_u_initial_state,
291 const amrex::Array4<const amrex::Real>& rho_v_initial_state,
292 const amrex::Array4<const amrex::Real>& rho_w_initial_state,
293 const amrex::Array4<const amrex::Real>& cons_initial_state);
Declares the embedded-boundary factory manager used by ERF levels.
const Real rdOcp
Definition: ERF_InitCustomPert_ABL.H:72
amrex::Real Real
Definition: ERF_ShocInterface.H:19
Owns and exposes cell-centered and face-centered EB factories.
Definition: ERF_EB.H:24
@ qt
Definition: ERF_Kessler.H:29
@ xvel
Definition: ERF_IndexDefines.H:215
@ zvel
Definition: ERF_IndexDefines.H:217
@ yvel
Definition: ERF_IndexDefines.H:216
@ p
Definition: ERF_WSM6.H:191
real(c_double), parameter p0
Definition: ERF_module_model_constants.F90:40
real(kind=kind_phys), parameter, private r0
Definition: ERF_module_mp_wdm6.F90:75
Definition: ERF_LargeScaleForcingData.H:31
The moisture data carried by the active microphysics scheme.
Definition: ERF_DataStruct.H:195
Definition: ERF_DataStruct.H:634
Definition: ERF_SpongeStruct.H:22
Runtime state and operations for turbulent perturbation forcing.
Definition: ERF_TurbPertStruct.H:25