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,
102 #if defined(ERF_USE_NETCDF)
128 add_moist_nudging_terms (
const amrex::MultiFab& S_data,
129 amrex::MultiFab& source,
132 const double& old_stage_time_total,
133 const double& start_bdy_time,
134 const double& final_bdy_time,
135 const double& bdy_time_interval,
138 const amrex::Geometry& geom,
139 amrex::Vector<amrex::Vector<amrex::FArrayBox>>& bdy_data_xlo,
140 amrex::Vector<amrex::Vector<amrex::FArrayBox>>& bdy_data_xhi,
141 amrex::Vector<amrex::Vector<amrex::FArrayBox>>& bdy_data_ylo,
142 amrex::Vector<amrex::Vector<amrex::FArrayBox>>& bdy_data_yhi,
143 std::unique_ptr<ReadBndryPlanes>& m_r2d,
147 const bool use_wrf_bdy_density,
148 const int bdy_moist_nudge_type);
153 const amrex::Vector<amrex::MultiFab>& S_data,
154 const amrex::MultiFab* z_phys_nd,
155 const amrex::MultiFab* z_phys_cc,
156 amrex::Vector<amrex::Real>& stretched_dz_h,
157 const amrex::MultiFab&
xvel,
158 const amrex::MultiFab&
yvel,
159 const amrex::MultiFab&
zvel,
160 amrex::MultiFab& xmom_source,
161 amrex::MultiFab& ymom_source,
162 amrex::MultiFab& zmom_source,
163 const amrex::MultiFab& base_state,
164 amrex::MultiFab* forest_drag,
165 amrex::MultiFab* terrain_blank,
166 amrex::MultiFab* terrain_blank_xface,
167 amrex::MultiFab* terrain_blank_yface,
168 amrex::MultiFab* terrain_blank_zface,
169 amrex::MultiFab* cosPhi_mf,
170 amrex::MultiFab* sinPhi_mf,
171 const amrex::Geometry geom,
173 amrex::Vector<std::unique_ptr<amrex::MultiFab>>& mapfac,
177 const amrex::Vector<amrex::Real*> d_rayleigh_ptrs_at_lev,
180 const amrex::Vector<amrex::Real*> d_sponge_ptrs_at_lev,
181 const amrex::Vector<amrex::MultiFab>* forecast_state_at_lev,
184 std::unique_ptr<amrex::MultiFab>& lsf_tendencies,
189 amrex::MultiFab& ymom_source,
190 amrex::MultiFab& zmom_source,
191 std::unique_ptr<amrex::iMultiFab>& xflux_imask_lev,
192 std::unique_ptr<amrex::iMultiFab>& yflux_imask_lev,
193 std::unique_ptr<amrex::iMultiFab>& zflux_imask_lev,
194 std::unique_ptr<amrex::MultiFab>& thin_xforce_lev,
195 std::unique_ptr<amrex::MultiFab>& thin_yforce_lev,
196 std::unique_ptr<amrex::MultiFab>& thin_zforce_lev);
198 #if defined(ERF_USE_NETCDF)
222 moist_set_rhs (
const amrex::Geometry& geom,
223 const amrex::Box& tbx,
224 const amrex::Array4<amrex::Real const>& new_cons,
225 const amrex::Array4<amrex::Real >& cell_rhs,
229 const double& start_bdy_time,
230 const double& final_bdy_time,
231 const double& bdy_time_interval,
234 const amrex::Box& domain,
235 amrex::Vector<amrex::Vector<amrex::FArrayBox>>& bdy_data_xlo,
236 amrex::Vector<amrex::Vector<amrex::FArrayBox>>& bdy_data_xhi,
237 amrex::Vector<amrex::Vector<amrex::FArrayBox>>& bdy_data_ylo,
238 amrex::Vector<amrex::Vector<amrex::FArrayBox>>& bdy_data_yhi,
239 std::unique_ptr<ReadBndryPlanes>& m_r2d);
243 const amrex::Geometry geom,
244 const amrex::Box& bx,
245 const amrex::Array4<amrex::Real>& cell_rhs,
246 const amrex::Array4<const amrex::Real>& cell_data,
247 const amrex::Array4<const amrex::Real>&
r0,
248 const amrex::Array4<const amrex::Real>& th0,
249 const amrex::Array4<const amrex::Real>& qv0,
250 const amrex::Array4<const amrex::Real>& z_phys_cc,
254 const amrex::Geometry geom,
255 const amrex::Box& tbx,
256 const amrex::Box& tby,
257 const amrex::Box& tbz,
258 const amrex::Array4<amrex::Real>& rho_u_rhs,
259 const amrex::Array4<amrex::Real>& rho_v_rhs,
260 const amrex::Array4<amrex::Real>& rho_w_rhs,
261 const amrex::Array4<const amrex::Real>& rho_u,
262 const amrex::Array4<const amrex::Real>& rho_v,
263 const amrex::Array4<const amrex::Real>& rho_w,
264 const amrex::Array4<const amrex::Real>&
r0,
265 const amrex::Array4<const amrex::Real>& z_phys_nd,
266 const amrex::Array4<const amrex::Real>& z_phys_cc);
269 const amrex::Geometry geom,
270 const amrex::Box& tbx,
271 const amrex::Box& tby,
272 const amrex::Array4<const amrex::Real>& cell_data,
273 const amrex::Array4<const amrex::Real>& z_phys_cc,
274 const amrex::Array4<amrex::Real>& rho_u_rhs,
275 const amrex::Array4<amrex::Real>& rho_v_rhs,
276 const amrex::Array4<const amrex::Real>& rho_u,
277 const amrex::Array4<const amrex::Real>& rho_v,
278 const amrex::Vector<amrex::Real*> d_sponge_ptrs_at_lev);
281 const amrex::Geometry geom,
282 const amrex::Box& tbx,
283 const amrex::Box& tby,
284 const amrex::Box& tbz,
285 const amrex::Array4<const amrex::Real>& z_phys_nd,
286 const amrex::Array4<amrex::Real>& rho_u_rhs,
287 const amrex::Array4<amrex::Real>& rho_v_rhs,
288 const amrex::Array4<amrex::Real>& rho_w_rhs,
289 const amrex::Array4<const amrex::Real>& rho_u,
290 const amrex::Array4<const amrex::Real>& rho_v,
291 const amrex::Array4<const amrex::Real>& rho_w,
292 const amrex::Array4<const amrex::Real>& rho_u_initial_state,
293 const amrex::Array4<const amrex::Real>& rho_v_initial_state,
294 const amrex::Array4<const amrex::Real>& rho_w_initial_state,
295 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:30
@ xvel
Definition: ERF_IndexDefines.H:218
@ zvel
Definition: ERF_IndexDefines.H:220
@ yvel
Definition: ERF_IndexDefines.H:219
@ p
Definition: ERF_WSM6.H:280
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:238
Definition: ERF_DataStruct.H:685
Definition: ERF_SpongeStruct.H:22
Runtime state and operations for turbulent perturbation forcing.
Definition: ERF_TurbPertStruct.H:26