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>
23 const amrex::Vector<amrex::MultiFab>& S_data,
24 const amrex::MultiFab & S_prim,
25 const amrex::MultiFab &
qt,
26 amrex::MultiFab& buoyancy,
27 const amrex::Geometry geom,
29 const amrex::MultiFab& base_state,
36 const amrex::Geometry& geom,
37 amrex::Vector<amrex::MultiFab>& S_data,
38 const amrex::MultiFab&
p0,
39 const amrex::MultiFab& z_phys_nd,
40 const amrex::MultiFab& z_phys_cc,
41 amrex::Vector<std::unique_ptr<amrex::MultiFab>>& mapfac,
43 amrex::Vector<amrex::MultiFab>& gradp);
46 const amrex::Geometry& geom,
47 const amrex::MultiFab& z_phys_nd,
48 const amrex::MultiFab& z_phys_cc,
49 amrex::Vector<std::unique_ptr<amrex::MultiFab>>& mapfac,
51 amrex::Vector<amrex::MultiFab>& gradp,
55 const amrex::Geometry& geom,
56 const amrex::MultiFab& z_phys_cc,
57 amrex::Vector<std::unique_ptr<amrex::MultiFab>>& mapfac,
59 amrex::Vector<amrex::MultiFab>& gradp,
63 const amrex::Geometry& geom,
64 const amrex::MultiFab& z_phys_nd,
66 amrex::Vector<amrex::MultiFab>& gradp,
70 const amrex::Geometry& geom,
71 const amrex::MultiFab& z_phys_nd,
72 const amrex::MultiFab& z_phys_cc,
73 amrex::Vector<std::unique_ptr<amrex::MultiFab>>& mapfac,
74 amrex::Vector<amrex::MultiFab>& gradp,
78 double dt,
double time,
79 const amrex::Vector<amrex::MultiFab>& S_data,
80 const amrex::MultiFab& S_prim,
81 amrex::MultiFab& cc_source,
82 const amrex::MultiFab& base_state,
83 const amrex::MultiFab* z_phys_cc,
84 const amrex::MultiFab&
xvel,
85 const amrex::MultiFab&
yvel,
86 const amrex::MultiFab&
zvel,
87 const amrex::MultiFab* qheating_rates,
88 amrex::MultiFab* terrain_blank,
89 const amrex::Geometry geom,
91 amrex::Vector<std::unique_ptr<amrex::MultiFab>>& mapfac,
92 const amrex::MultiFab* rhotheta_src,
93 const amrex::MultiFab* rhoqt_src,
95 const amrex::Vector<amrex::Real*> d_rayleigh_ptrs_at_lev,
98 const amrex::Table1D<amrex::Real> r_plane_avg,
99 const amrex::Table1D<amrex::Real> t_plane_avg,
100 const amrex::MultiFab* forest_drag,
101 const amrex::MultiFab* cons_old,
103 amrex::MultiFab* ib_wall_hfx =
nullptr,
104 amrex::MultiFab* ib_wall_ktarget =
nullptr);
106 #if defined(ERF_USE_NETCDF)
132 add_moist_nudging_terms (
const amrex::MultiFab& S_data,
133 amrex::MultiFab& source,
136 const double& old_stage_time_total,
137 const double& start_bdy_time,
138 const double& final_bdy_time,
139 const double& bdy_time_interval,
142 const amrex::Geometry& geom,
143 amrex::Vector<amrex::Vector<amrex::FArrayBox>>& bdy_data_xlo,
144 amrex::Vector<amrex::Vector<amrex::FArrayBox>>& bdy_data_xhi,
145 amrex::Vector<amrex::Vector<amrex::FArrayBox>>& bdy_data_ylo,
146 amrex::Vector<amrex::Vector<amrex::FArrayBox>>& bdy_data_yhi,
147 std::unique_ptr<ReadBndryPlanes>& m_r2d,
151 const bool use_wrf_bdy_density,
152 const int bdy_moist_nudge_type);
157 const amrex::Vector<amrex::MultiFab>& S_data,
158 const amrex::MultiFab* z_phys_nd,
159 const amrex::MultiFab* z_phys_cc,
160 amrex::Vector<amrex::Real>& stretched_dz_h,
161 const amrex::MultiFab&
xvel,
162 const amrex::MultiFab&
yvel,
163 const amrex::MultiFab&
zvel,
164 amrex::MultiFab& xmom_source,
165 amrex::MultiFab& ymom_source,
166 amrex::MultiFab& zmom_source,
167 const amrex::MultiFab& base_state,
168 amrex::MultiFab* forest_drag,
169 amrex::MultiFab* terrain_blank,
170 amrex::MultiFab* terrain_blank_xface,
171 amrex::MultiFab* terrain_blank_yface,
172 amrex::MultiFab* terrain_blank_zface,
173 amrex::MultiFab* cosPhi_mf,
174 amrex::MultiFab* sinPhi_mf,
175 const amrex::Geometry geom,
177 amrex::Vector<std::unique_ptr<amrex::MultiFab>>& mapfac,
181 const amrex::Vector<amrex::Real*> d_rayleigh_ptrs_at_lev,
184 const amrex::Vector<amrex::Real*> d_sponge_ptrs_at_lev,
185 const amrex::Vector<amrex::MultiFab>* forecast_state_at_lev,
188 std::unique_ptr<amrex::MultiFab>& lsf_tendencies,
193 amrex::MultiFab& ymom_source,
194 amrex::MultiFab& zmom_source,
195 std::unique_ptr<amrex::iMultiFab>& xflux_imask_lev,
196 std::unique_ptr<amrex::iMultiFab>& yflux_imask_lev,
197 std::unique_ptr<amrex::iMultiFab>& zflux_imask_lev,
198 std::unique_ptr<amrex::MultiFab>& thin_xforce_lev,
199 std::unique_ptr<amrex::MultiFab>& thin_yforce_lev,
200 std::unique_ptr<amrex::MultiFab>& thin_zforce_lev);
202 #if defined(ERF_USE_NETCDF)
226 moist_set_rhs (
const amrex::Geometry& geom,
227 const amrex::Box& tbx,
228 const amrex::Array4<amrex::Real const>& new_cons,
229 const amrex::Array4<amrex::Real >& cell_rhs,
233 const double& start_bdy_time,
234 const double& final_bdy_time,
235 const double& bdy_time_interval,
238 const amrex::Box& domain,
239 amrex::Vector<amrex::Vector<amrex::FArrayBox>>& bdy_data_xlo,
240 amrex::Vector<amrex::Vector<amrex::FArrayBox>>& bdy_data_xhi,
241 amrex::Vector<amrex::Vector<amrex::FArrayBox>>& bdy_data_ylo,
242 amrex::Vector<amrex::Vector<amrex::FArrayBox>>& bdy_data_yhi,
243 std::unique_ptr<ReadBndryPlanes>& m_r2d);
247 const amrex::Geometry geom,
248 const amrex::Box& bx,
249 const amrex::Array4<amrex::Real>& cell_rhs,
250 const amrex::Array4<const amrex::Real>& cell_data,
251 const amrex::Array4<const amrex::Real>&
r0,
252 const amrex::Array4<const amrex::Real>& th0,
253 const amrex::Array4<const amrex::Real>& qv0,
254 const amrex::Array4<const amrex::Real>& z_phys_cc,
258 const amrex::Geometry geom,
259 const amrex::Box& tbx,
260 const amrex::Box& tby,
261 const amrex::Box& tbz,
262 const amrex::Array4<amrex::Real>& rho_u_rhs,
263 const amrex::Array4<amrex::Real>& rho_v_rhs,
264 const amrex::Array4<amrex::Real>& rho_w_rhs,
265 const amrex::Array4<const amrex::Real>& rho_u,
266 const amrex::Array4<const amrex::Real>& rho_v,
267 const amrex::Array4<const amrex::Real>& rho_w,
268 const amrex::Array4<const amrex::Real>&
r0,
269 const amrex::Array4<const amrex::Real>& z_phys_nd,
270 const amrex::Array4<const amrex::Real>& z_phys_cc);
273 const amrex::Geometry geom,
274 const amrex::Box& tbx,
275 const amrex::Box& tby,
276 const amrex::Array4<const amrex::Real>& cell_data,
277 const amrex::Array4<const amrex::Real>& z_phys_cc,
278 const amrex::Array4<amrex::Real>& rho_u_rhs,
279 const amrex::Array4<amrex::Real>& rho_v_rhs,
280 const amrex::Array4<const amrex::Real>& rho_u,
281 const amrex::Array4<const amrex::Real>& rho_v,
282 const amrex::Vector<amrex::Real*> d_sponge_ptrs_at_lev);
285 const amrex::Geometry geom,
286 const amrex::Box& tbx,
287 const amrex::Box& tby,
288 const amrex::Box& tbz,
289 const amrex::Array4<const amrex::Real>& z_phys_nd,
290 const amrex::Array4<amrex::Real>& rho_u_rhs,
291 const amrex::Array4<amrex::Real>& rho_v_rhs,
292 const amrex::Array4<amrex::Real>& rho_w_rhs,
293 const amrex::Array4<const amrex::Real>& rho_u,
294 const amrex::Array4<const amrex::Real>& rho_v,
295 const amrex::Array4<const amrex::Real>& rho_w,
296 const amrex::Array4<const amrex::Real>& rho_u_initial_state,
297 const amrex::Array4<const amrex::Real>& rho_v_initial_state,
298 const amrex::Array4<const amrex::Real>& rho_w_initial_state,
299 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:26
@ qt
Definition: ERF_Kessler.H:30
@ xvel
Definition: ERF_IndexDefines.H:255
@ zvel
Definition: ERF_IndexDefines.H:257
@ yvel
Definition: ERF_IndexDefines.H:256
@ p
Definition: ERF_WSM6.H:301
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:251
Definition: ERF_DataStruct.H:715
Definition: ERF_SpongeStruct.H:22
Runtime state and operations for turbulent perturbation forcing.
Definition: ERF_TurbPertStruct.H:42