7 #include "AMReX_MultiFab.H"
8 #include "AMReX_BCRec.H"
37 return moisture_indices.qc >= 0 && moisture_indices.qi >= 0 &&
38 moisture_indices.qr >= 0 && moisture_indices.qs >= 0 &&
39 moisture_indices.qg >= 0;
46 const bool use_wrf_bdy_qc_qi,
47 const bool separate_hydrometeors =
false)
50 if (use_wrf_bdy_qc_qi) {
52 if (moisture_indices.
qi >= 0 && comp == moisture_indices.
qi) {
55 if (separate_hydrometeors) {
78 amrex::Vector<int>
map;
79 amrex::Vector<int>
bnd;
85 const bool use_wrf_bdy_qc_qi,
86 const bool separate_hydrometeors)
92 for (
int comp = 0; comp <
NVAR_max; ++comp) {
102 for (
int comp = 0; comp <
NVAR_max; ++comp) {
104 comp, moisture_indices, use_wrf_bdy_qc_qi, separate_hydrometeors);
106 m.
map[comp] = bdy_var;
117 amrex::MultiFab&
theta,
118 const amrex::MultiFab&
qt,
119 const amrex::MultiFab&
qv,
120 const amrex::MultiFab* z_phys,
121 const amrex::Geometry& geom,
122 const bool& maintain_Th,
123 bool use_sfc =
false);
128 void ChopGrids2D (amrex::BoxArray& ba,
const amrex::Box& domain,
int target_size);
144 cons_to_prim (
const amrex::MultiFab& cons_state, amrex::MultiFab& S_prim,
int ng);
163 make_qt (
const amrex::MultiFab& cons_state, amrex::MultiFab&
qt,
int n_qstate_into_total);
187 const amrex::MultiFab& beta_fine,
const amrex::MultiFab& beta_crse,
188 const amrex::MultiFab& vol_fine,
189 int scomp,
int ncomp,
const amrex::IntVect& ratio);
212 const amrex::MultiFab& terrain_blank,
213 const amrex::MultiFab& z_phys_nd,
214 const amrex::MultiFab& z_phys_cc,
215 const amrex::Box& domain,
217 amrex::MultiFab* wall_height =
nullptr,
218 const amrex::MultiFab* wall_height_crse =
nullptr);
240 amrex::MultiFab& mask13,
241 amrex::MultiFab& mask23,
242 amrex::MultiFab& mask33,
243 const amrex::Box& domain,
265 std::pair<int, amrex::Real>
267 const amrex::BoxArray& fine_grids,
268 const amrex::BoxArray& crse_grids,
269 const amrex::DistributionMapping& crse_dmap,
270 const amrex::Geometry& crse_geom,
271 const amrex::IntVect& ratio,
278 void make_J (
const amrex::Geometry& geom,
279 amrex::MultiFab& z_phys_nd,
280 amrex::MultiFab& detJ_cc);
283 amrex::MultiFab& z_phys_nd,
286 amrex::MultiFab& az);
292 amrex::MultiFab& z_phys_nd,
293 amrex::MultiFab& z_phys_cc);
299 amrex::MultiFab& yvel_out,
300 amrex::MultiFab& zvel_out,
301 const amrex::MultiFab& cons_in,
302 const amrex::MultiFab& xmom_in,
303 const amrex::MultiFab& ymom_in,
304 const amrex::MultiFab& zmom_in,
305 const amrex::Box& domain,
306 const amrex::Vector<amrex::BCRec>& domain_bcs_type_h,
307 const amrex::MultiFab* c_vfrac =
nullptr
314 const amrex::IntVect & xvel_ngrow,
315 const amrex::MultiFab& yvel_in,
316 const amrex::IntVect & yvel_ngrow,
317 const amrex::MultiFab& zvel_in,
318 const amrex::IntVect & zvel_ngrow,
319 const amrex::MultiFab& cons_in,
320 amrex::MultiFab& xmom_out,
321 amrex::MultiFab& ymom_out,
322 amrex::MultiFab& zmom_out,
323 const amrex::Box& domain,
324 const amrex::Vector<amrex::BCRec>& domain_bcs_type_h,
325 const amrex::MultiFab* c_vfrac =
nullptr
333 amrex::MultiFab&
xmom, amrex::MultiFab&
ymom, amrex::MultiFab&
zmom,
334 const amrex::Box& domain,
const amrex::Vector<amrex::BCRec>& domain_bcs_type_h);
342 amrex::FArrayBox& bdy_data_ylo, amrex::FArrayBox& bdy_data_yhi,
343 amrex::Array<amrex::MultiFab*, AMREX_SPACEDIM>& area_vec,
344 const amrex::Geometry& geom,
353 amrex::FArrayBox& bdy_data_xlo,
354 amrex::FArrayBox& bdy_data_xhi,
355 amrex::FArrayBox& bdy_data_ylo,
356 amrex::FArrayBox& bdy_data_yhi,
357 amrex::Array<amrex::MultiFab*, AMREX_SPACEDIM>& area_vec,
358 const amrex::Geometry& geom,
359 const amrex::Vector<amrex::BCRec>& domain_bcs_type_h);
366 amrex::Array<amrex::MultiFab*, AMREX_SPACEDIM>& vels_vec,
367 amrex::Array<amrex::MultiFab*, AMREX_SPACEDIM>& area_vec,
368 const amrex::Geometry& geom);
375 const amrex::Box& domain,
381 const amrex::IntVect& ng_vect=amrex::IntVect(0,0,0),
382 const bool get_int_ng=
false);
389 const amrex::Box& domain,
390 const int& set_width,
395 const amrex::IntVect& ng_vect=amrex::IntVect(0,0,0));
401 const double& delta_t,
402 const double& start_bdy_time,
403 const double& final_bdy_time,
404 const double& bdy_time_interval,
407 const amrex::Geometry& geom,
408 amrex::Vector<amrex::MultiFab>& S_rhs,
409 amrex::Vector<amrex::MultiFab>& S_cur_data,
410 amrex::Vector<amrex::Vector<amrex::FArrayBox>>& bdy_data_xlo,
411 amrex::Vector<amrex::Vector<amrex::FArrayBox>>& bdy_data_xhi,
412 amrex::Vector<amrex::Vector<amrex::FArrayBox>>& bdy_data_ylo,
413 amrex::Vector<amrex::Vector<amrex::FArrayBox>>& bdy_data_yhi,
414 std::unique_ptr<ReadBndryPlanes>& m_r2d,
417 const bool use_wrf_bdy_density,
425 const double& delta_t,
427 const int& set_width,
428 const amrex::Geometry& geom,
433 amrex::Vector<amrex::BCRec>& domain_bcs_type,
434 amrex::Vector<amrex::MultiFab>& S_rhs_f,
435 amrex::Vector<amrex::MultiFab>& S_data_f);
443 amrex::MultiFab* vel_t_avg,
444 amrex::MultiFab&
xvel,
445 amrex::MultiFab&
yvel,
446 amrex::MultiFab&
zvel);
461 amrex::MultiFab* interval_means,
462 amrex::MultiFab&
xvel,
463 amrex::MultiFab&
yvel,
464 amrex::MultiFab&
zvel,
465 amrex::MultiFab&
cons);
494 const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM>&
dx,
495 const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM>& ProbLo,
496 const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM>& ProbHi,
498 const amrex::Box& bx_xlo,
499 const amrex::Box& bx_xhi,
500 const amrex::Box& bx_ylo,
501 const amrex::Box& bx_yhi,
502 const amrex::Array4<const amrex::Real>& arr_xlo,
503 const amrex::Array4<const amrex::Real>& arr_xhi,
504 const amrex::Array4<const amrex::Real>& arr_ylo,
505 const amrex::Array4<const amrex::Real>& arr_yhi,
506 const amrex::Array4<const amrex::Real>& data_arr,
507 const amrex::Array4<amrex::Real>& rhs_arr,
510 const int bdy_moist_nudge_type=0)
512 amrex::IntVect iv = bx_xlo.type();
524 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
544 amrex::Real delta = arr_xlo(i,j,k,0) - data_arr(i,j,k,icomp);
545 rhs_arr(i,j,k,icomp) += Factor*delta;
547 if (bdy_moist_nudge_type==2) {
554 rhs_arr(i,j,k,
RhoTheta_comp) += Factor * delta * cond_fac / exner_pi;
560 rhs_arr(i,j,k,
RhoTheta_comp) += Factor * delta * sub_fac / exner_pi;
564 for (
int n = 0; n < nq; n++) {
565 amrex::Real delta = arr_xlo(i,j,k,n) - data_arr(i,j,k,n+icomp);
566 rhs_arr(i,j,k,n+icomp) += Factor*delta;
570 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
590 amrex::Real delta = arr_xhi(i,j,k,0) - data_arr(i,j,k,icomp);
591 rhs_arr(i,j,k,icomp) += Factor*delta;
593 if (bdy_moist_nudge_type==2) {
600 rhs_arr(i,j,k,
RhoTheta_comp) += Factor * delta * cond_fac / exner_pi;
606 rhs_arr(i,j,k,
RhoTheta_comp) += Factor * delta * sub_fac / exner_pi;
610 for (
int n = 0; n < nq; n++) {
611 amrex::Real delta = arr_xhi(i,j,k,n) - data_arr(i,j,k,n+icomp);
612 rhs_arr(i,j,k,n+icomp) += Factor*delta;
618 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
631 amrex::Real delta = arr_ylo(i,j,k,0) - data_arr(i,j,k,icomp);
632 rhs_arr(i,j,k,icomp) += Factor*delta;
634 if (bdy_moist_nudge_type==2) {
641 rhs_arr(i,j,k,
RhoTheta_comp) += Factor * delta * cond_fac / exner_pi;
647 rhs_arr(i,j,k,
RhoTheta_comp) += Factor * delta * sub_fac / exner_pi;
651 for (
int n = 0; n < nq; n++) {
652 amrex::Real delta = arr_ylo(i,j,k,n) - data_arr(i,j,k,n+icomp);
653 rhs_arr(i,j,k,n+icomp) += Factor*delta;
657 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
670 amrex::Real delta = arr_yhi(i,j,k,0) - data_arr(i,j,k,icomp);
671 rhs_arr(i,j,k,icomp) += Factor*delta;
673 if (bdy_moist_nudge_type==2) {
680 rhs_arr(i,j,k,
RhoTheta_comp) += Factor * delta * cond_fac / exner_pi;
686 rhs_arr(i,j,k,
RhoTheta_comp) += Factor * delta * sub_fac / exner_pi;
690 for (
int n = 0; n < nq; n++) {
691 amrex::Real delta = arr_yhi(i,j,k,n) - data_arr(i,j,k,n+icomp);
692 rhs_arr(i,j,k,n+icomp) += Factor*delta;
706 const amrex::GpuArray<int,6>& moisture_comps,
709 const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM>&
dx,
710 const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM>& ProbLo,
711 const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM>& ProbHi,
713 const amrex::Box& bx_xlo,
714 const amrex::Box& bx_xhi,
715 const amrex::Box& bx_ylo,
716 const amrex::Box& bx_yhi,
717 const amrex::Array4<const amrex::Real>& arr_xlo,
718 const amrex::Array4<const amrex::Real>& arr_xhi,
719 const amrex::Array4<const amrex::Real>& arr_ylo,
720 const amrex::Array4<const amrex::Real>& arr_yhi,
721 const amrex::Array4<const amrex::Real>& data_arr,
722 const amrex::Array4<amrex::Real>& rhs_arr)
724 const amrex::IntVect iv = bx_xlo.type();
729 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
736 const amrex::Real xi = (x_end -
x) / (x_end - ProbLo[0]);
739 const amrex::Real factor = amrex::max(xi*xi, amrex::max(eta_lo,eta_hi)*amrex::max(eta_lo,eta_hi)) * F1;
740 for (
int n = 0; n < n_targets; ++n) {
741 const int comp = moisture_comps[n];
743 rhs_arr(i,j,k,comp) += factor * (arr_xlo(i,j,k,n) - data_arr(i,j,k,comp));
747 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
754 const amrex::Real xi = (
x - x_strt) / (ProbHi[0] - x_strt);
758 const amrex::Real factor = amrex::max(xi*xi, eta*eta) * F1;
759 for (
int n = 0; n < n_targets; ++n) {
760 const int comp = moisture_comps[n];
762 rhs_arr(i,j,k,comp) += factor * (arr_xhi(i,j,k,n) - data_arr(i,j,k,comp));
768 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
772 const amrex::Real eta = (y_end -
y) / (y_end - ProbLo[1]);
774 for (
int n = 0; n < n_targets; ++n) {
775 const int comp = moisture_comps[n];
777 rhs_arr(i,j,k,comp) += factor * (arr_ylo(i,j,k,n) - data_arr(i,j,k,comp));
781 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
785 const amrex::Real eta = (
y - y_strt) / (ProbHi[1] - y_strt);
787 for (
int n = 0; n < n_targets; ++n) {
788 const int comp = moisture_comps[n];
790 rhs_arr(i,j,k,comp) += factor * (arr_yhi(i,j,k,n) - data_arr(i,j,k,comp));
802 const amrex::GpuArray<int,3>& moisture_comps,
804 const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM>&
dx,
805 const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM>& ProbLo,
806 const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM>& ProbHi,
808 const amrex::Box& bx_xlo,
809 const amrex::Box& bx_xhi,
810 const amrex::Box& bx_ylo,
811 const amrex::Box& bx_yhi,
812 const amrex::Array4<const amrex::Real>& arr_xlo,
813 const amrex::Array4<const amrex::Real>& arr_xhi,
814 const amrex::Array4<const amrex::Real>& arr_ylo,
815 const amrex::Array4<const amrex::Real>& arr_yhi,
816 const amrex::Array4<const amrex::Real>& data_arr,
817 const amrex::Array4<amrex::Real>& rhs_arr)
819 const amrex::GpuArray<int,6> extended_comps = {
820 moisture_comps[0], moisture_comps[1], moisture_comps[2], -1, -1, -1};
822 extended_comps, 3, width,
dx, ProbLo, ProbHi, F1,
823 bx_xlo, bx_xhi, bx_ylo, bx_yhi,
824 arr_xlo, arr_xhi, arr_ylo, arr_yhi, data_arr, rhs_arr);
834 const amrex::iMultiFab& imask,
835 const int nghost = 0)
837 for (amrex::MFIter mfi(dst,amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi)
839 const amrex::Box& bx = mfi.growntilebox(nghost);
842 auto dstFab = dst.array(mfi);
843 const auto maskFab = imask.const_array(mfi);
844 ParallelFor(bx, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
846 dstFab(i,j,k) *= maskFab(i,j,k);
862 const amrex::iMultiFab& imask,
863 const int nghost = 0)
865 for (amrex::MFIter mfi(dst,amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi)
867 const amrex::Box& bx = mfi.growntilebox(nghost);
870 auto dstFab = dst.array(mfi);
871 const auto maskFab = imask.const_array(mfi);
872 ParallelFor(bx, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
874 dstFab(i,j,k) *= (1-maskFab(i,j,k));
891 amrex::Vector<amrex::IntVect>& xfaces,
892 amrex::Vector<amrex::IntVect>& yfaces,
893 amrex::Vector<amrex::IntVect>& zfaces,
894 const amrex::Geometry& geomdata,
895 std::unique_ptr<amrex::MultiFab>& z_phys_cc);
911 AMREX_GPU_HOST_DEVICE
919 return p0 * ( (
z - z1) * (
z - z2) ) / ( (
z0 - z1) * (
z0 - z2) )
920 + p1 * ( (
z -
z0) * (
z - z2) ) / ( (z1 -
z0) * (z1 - z2) )
921 + p2 * ( (
z -
z0) * (
z - z1) ) / ( (z2 -
z0) * (z2 - z1) );
948 const double t_mag = std::max({std::abs(time), std::abs(t_old), std::abs(t_new)});
949 const double tol = std::max(1.e-8 * std::abs(t_new - t_old),
966 inline amrex::Vector<amrex::MultiFab*>
971 return {&old_mf, &new_mf};
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real getExnergivenRTh(const amrex::Real rhotheta, const amrex::Real rdOcp, const amrex::Real qv=amrex::Real(0))
Definition: ERF_EOS.H:156
#define Rho_comp
Definition: ERF_IndexDefines.H:53
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE int cons_bc_comp(int n) noexcept
Definition: ERF_IndexDefines.H:140
#define RhoTheta_comp
Definition: ERF_IndexDefines.H:54
#define RhoQ2_comp
Definition: ERF_IndexDefines.H:67
#define NVAR_max
Definition: ERF_IndexDefines.H:37
#define RhoQ3_comp
Definition: ERF_IndexDefines.H:68
#define RhoQ1_comp
Definition: ERF_IndexDefines.H:66
Real z0
Definition: ERF_InitCustomPertVels_ScalarAdvDiff.H:12
const Real rdOcp
Definition: ERF_InitCustomPert_ABL.H:72
const Real dx
Definition: ERF_InitCustomPert_ABL.H:44
Physical constants and tuning parameters used only by the moisture and cloud-physics code.
constexpr amrex::Real lsub
Definition: ERF_MicrophysicsConstants.H:111
constexpr amrex::Real lcond
Definition: ERF_MicrophysicsConstants.H:109
ParallelFor(fab_box, [=] AMREX_GPU_DEVICE(int i, int j, int k) { qrcuten_arr(i, j, k)=Real(0);qscuten_arr(i, j, k)=Real(0);qicuten_arr(i, j, k)=Real(0);})
Dimensionless numeric literals and pure mathematical constants.
constexpr amrex::Real one
Definition: ERF_NumericalConstants.H:37
constexpr amrex::Real zero
Definition: ERF_NumericalConstants.H:36
constexpr amrex::Real myhalf
Definition: ERF_NumericalConstants.H:41
amrex::Real Real
Definition: ERF_ShocInterface.H:19
void immersed_wall_dist(amrex::MultiFab &wdist, const amrex::MultiFab &terrain_blank, const amrex::MultiFab &z_phys_nd, const amrex::MultiFab &z_phys_cc, const amrex::Box &domain, amrex::Real small_volfrac, amrex::MultiFab *wall_height=nullptr, const amrex::MultiFab *wall_height_crse=nullptr)
RealBdyConsMaps real_bdy_cons_maps(const bool read_density, const MoistureComponentIndices &moisture_indices, const bool use_wrf_bdy_qc_qi, const bool separate_hydrometeors)
Definition: ERF_Utils.H:83
void WeatherDataInterpolation(const double time)
void MomentumToVelocity(amrex::MultiFab &xvel_out, amrex::MultiFab &yvel_out, amrex::MultiFab &zvel_out, const amrex::MultiFab &cons_in, const amrex::MultiFab &xmom_in, const amrex::MultiFab &ymom_in, const amrex::MultiFab &zmom_in, const amrex::Box &domain, const amrex::Vector< amrex::BCRec > &domain_bcs_type_h, const amrex::MultiFab *c_vfrac=nullptr)
std::pair< int, amrex::Real > if_cf_surface_mismatch(const amrex::MultiFab &fine_tb, const amrex::BoxArray &fine_grids, const amrex::BoxArray &crse_grids, const amrex::DistributionMapping &crse_dmap, const amrex::Geometry &crse_geom, const amrex::IntVect &ratio, amrex::Real warn)
void compute_influx_outflux_bdy(amrex::FArrayBox &bdy_data_xlo, amrex::FArrayBox &bdy_data_xhi, amrex::FArrayBox &bdy_data_ylo, amrex::FArrayBox &bdy_data_yhi, amrex::Array< amrex::MultiFab *, AMREX_SPACEDIM > &area_vec, const amrex::Geometry &geom, amrex::Real &influx, amrex::Real &outflux, const int n)
void VelocityToMomentum(const amrex::MultiFab &xvel_in, const amrex::IntVect &xvel_ngrow, const amrex::MultiFab &yvel_in, const amrex::IntVect &yvel_ngrow, const amrex::MultiFab &zvel_in, const amrex::IntVect &zvel_ngrow, const amrex::MultiFab &cons_in, amrex::MultiFab &xmom_out, amrex::MultiFab &ymom_out, amrex::MultiFab &zmom_out, const amrex::Box &domain, const amrex::Vector< amrex::BCRec > &domain_bcs_type_h, const amrex::MultiFab *c_vfrac=nullptr)
void rebalance_columns(amrex::MultiFab &rho, amrex::MultiFab &theta, const amrex::MultiFab &qt, const amrex::MultiFab &qv, const amrex::MultiFab *z_phys, const amrex::Geometry &geom, const bool &maintain_Th, bool use_sfc=false)
amrex::Vector< amrex::MultiFab * > select_time_data(TimeLevelSel sel, amrex::MultiFab &old_mf, amrex::MultiFab &new_mf)
Definition: ERF_Utils.H:967
void cons_to_prim(const amrex::MultiFab &cons_state, amrex::MultiFab &S_prim, int ng)
void make_ib_wall_face_masks(const amrex::MultiFab &terrain_blank, amrex::MultiFab &mask13, amrex::MultiFab &mask23, amrex::MultiFab &mask33, const amrex::Box &domain, amrex::Real small_volfrac, int spacing=0, amrex::Real dz=amrex::Real(1.0), amrex::Real z0=amrex::Real(0.1))
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool wrf_bdy_has_separate_hydrometeors(const MoistureComponentIndices &moisture_indices) noexcept
Definition: ERF_Utils.H:35
void fill_wall_dist_ghost_cells(amrex::MultiFab &wdist, const amrex::Geometry &geom)
void Accumulate_Interval_Means(double dt, double &t_mean_cnt, amrex::MultiFab *interval_means, amrex::MultiFab &xvel, amrex::MultiFab &yvel, amrex::MultiFab &zvel, amrex::MultiFab &cons)
void enforceInOutSolvability_bdy(const amrex::MultiFab &rho0, amrex::FArrayBox &bdy_data_xlo, amrex::FArrayBox &bdy_data_xhi, amrex::FArrayBox &bdy_data_ylo, amrex::FArrayBox &bdy_data_yhi, amrex::Array< amrex::MultiFab *, AMREX_SPACEDIM > &area_vec, const amrex::Geometry &geom, const amrex::Vector< amrex::BCRec > &domain_bcs_type_h)
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real quad_interp_1d(amrex::Real z, amrex::Real z0, amrex::Real p0, amrex::Real z1, amrex::Real p1, amrex::Real z2, amrex::Real p2)
Definition: ERF_Utils.H:914
void fine_compute_interior_ghost_rhs(const double &time, const double &delta_t, const int &width, const int &set_width, const amrex::Geometry &geom, ERFFillPatcher *FPr_c, ERFFillPatcher *FPr_u, ERFFillPatcher *FPr_v, ERFFillPatcher *FPr_w, amrex::Vector< amrex::BCRec > &domain_bcs_type, amrex::Vector< amrex::MultiFab > &S_rhs_f, amrex::Vector< amrex::MultiFab > &S_data_f)
void thinbody_wall_dist(std::unique_ptr< amrex::MultiFab > &wdist, amrex::Vector< amrex::IntVect > &xfaces, amrex::Vector< amrex::IntVect > &yfaces, amrex::Vector< amrex::IntVect > &zfaces, const amrex::Geometry &geomdata, std::unique_ptr< amrex::MultiFab > &z_phys_cc)
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real wrf_moisture_target(const amrex::Real rho, const amrex::Real q_n, const amrex::Real q_np1, const amrex::Real alpha) noexcept
Definition: ERF_Utils.H:22
amrex::BoxArray ERFPostProcessBaseGrids(const amrex::Box &domain, bool decompose_in_z)
void make_zcc(const amrex::Geometry &geom, amrex::MultiFab &z_phys_nd, amrex::MultiFab &z_phys_cc)
void realbdy_bc_bxs_xy(const amrex::Box &bx, const amrex::Box &domain, const int &set_width, amrex::Box &bx_xlo, amrex::Box &bx_xhi, amrex::Box &bx_ylo, amrex::Box &bx_yhi, const amrex::IntVect &ng_vect=amrex::IntVect(0, 0, 0))
void Time_Avg_Vel_atCC(double dt, double &t_avg_cnt, amrex::MultiFab *vel_t_avg, amrex::MultiFab &xvel, amrex::MultiFab &yvel, amrex::MultiFab &zvel)
void realbdy_interior_bxs_xy(const amrex::Box &bx, const amrex::Box &domain, const int &width, amrex::Box &bx_xlo, amrex::Box &bx_xhi, amrex::Box &bx_ylo, amrex::Box &bx_yhi, const amrex::IntVect &ng_vect=amrex::IntVect(0, 0, 0), const bool get_int_ng=false)
AMREX_GPU_HOST AMREX_FORCE_INLINE void realbdy_compute_relaxation(const int &icomp, const int &num_var, const int &width, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dx, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &ProbLo, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &ProbHi, const amrex::Real &F1, const amrex::Box &bx_xlo, const amrex::Box &bx_xhi, const amrex::Box &bx_ylo, const amrex::Box &bx_yhi, const amrex::Array4< const amrex::Real > &arr_xlo, const amrex::Array4< const amrex::Real > &arr_xhi, const amrex::Array4< const amrex::Real > &arr_ylo, const amrex::Array4< const amrex::Real > &arr_yhi, const amrex::Array4< const amrex::Real > &data_arr, const amrex::Array4< amrex::Real > &rhs_arr, const amrex::Real &c_p, const amrex::Real &rdOcp, const int bdy_moist_nudge_type=0)
Definition: ERF_Utils.H:491
AMREX_GPU_HOST AMREX_FORCE_INLINE void ApplyInvertedMask(amrex::MultiFab &dst, const amrex::iMultiFab &imask, const int nghost=0)
Definition: ERF_Utils.H:861
int wrf_bdy_var_for_moisture_component(const int comp, const MoistureComponentIndices &moisture_indices, const bool use_wrf_bdy_qc_qi, const bool separate_hydrometeors=false)
Definition: ERF_Utils.H:44
void make_J(const amrex::Geometry &geom, amrex::MultiFab &z_phys_nd, amrex::MultiFab &detJ_cc)
AMREX_GPU_HOST AMREX_FORCE_INLINE void ApplyMask(amrex::MultiFab &dst, const amrex::iMultiFab &imask, const int nghost=0)
Definition: ERF_Utils.H:833
void realbdy_compute_interior_ghost_rhs(const double &total_time, const double &delta_t, const double &start_bdy_time, const double &final_bdy_time, const double &bdy_time_interval, const amrex::Real &nudge_factor, int width, const amrex::Geometry &geom, amrex::Vector< amrex::MultiFab > &S_rhs, amrex::Vector< amrex::MultiFab > &S_cur_data, amrex::Vector< amrex::Vector< amrex::FArrayBox >> &bdy_data_xlo, amrex::Vector< amrex::Vector< amrex::FArrayBox >> &bdy_data_xhi, amrex::Vector< amrex::Vector< amrex::FArrayBox >> &bdy_data_ylo, amrex::Vector< amrex::Vector< amrex::FArrayBox >> &bdy_data_yhi, std::unique_ptr< ReadBndryPlanes > &m_r2d, const amrex::Real &c_p, const amrex::Real &rdOcp, const bool use_wrf_bdy_density, const amrex::Real &bdy_rho_nudge_factor)
void if_average_down(const amrex::MultiFab &S_fine, amrex::MultiFab &S_crse, const amrex::MultiFab &beta_fine, const amrex::MultiFab &beta_crse, const amrex::MultiFab &vol_fine, int scomp, int ncomp, const amrex::IntVect &ratio)
void ConvertForProjection(const amrex::MultiFab &den_div, const amrex::MultiFab &den_mlt, amrex::MultiFab &xmom, amrex::MultiFab &ymom, amrex::MultiFab &zmom, const amrex::Box &domain, const amrex::Vector< amrex::BCRec > &domain_bcs_type_h)
void ChopGrids2D(amrex::BoxArray &ba, const amrex::Box &domain, int target_size)
void enforceInOutSolvability(int lev, amrex::Array< amrex::MultiFab *, AMREX_SPACEDIM > &vels_vec, amrex::Array< amrex::MultiFab *, AMREX_SPACEDIM > &area_vec, const amrex::Geometry &geom)
TimeLevelSel select_time_level(double time, double t_old, double t_new)
Definition: ERF_Utils.H:946
AMREX_GPU_HOST AMREX_FORCE_INLINE void realbdy_compute_moisture_relaxation(const amrex::GpuArray< int, 6 > &moisture_comps, const int n_targets, const int &width, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dx, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &ProbLo, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &ProbHi, const amrex::Real &F1, const amrex::Box &bx_xlo, const amrex::Box &bx_xhi, const amrex::Box &bx_ylo, const amrex::Box &bx_yhi, const amrex::Array4< const amrex::Real > &arr_xlo, const amrex::Array4< const amrex::Real > &arr_xhi, const amrex::Array4< const amrex::Real > &arr_ylo, const amrex::Array4< const amrex::Real > &arr_yhi, const amrex::Array4< const amrex::Real > &data_arr, const amrex::Array4< amrex::Real > &rhs_arr)
Definition: ERF_Utils.H:705
TimeLevelSel
Definition: ERF_Utils.H:927
void make_areas(const amrex::Geometry &geom, amrex::MultiFab &z_phys_nd, amrex::MultiFab &ax, amrex::MultiFab &ay, amrex::MultiFab &az)
void make_qt(const amrex::MultiFab &cons_state, amrex::MultiFab &qt, int n_qstate_into_total)
Definition: ERF_FillPatcher.H:9
@ ymom
Definition: ERF_IndexDefines.H:274
@ zmom
Definition: ERF_IndexDefines.H:275
@ xmom
Definition: ERF_IndexDefines.H:273
@ rho
Definition: ERF_Kessler.H:25
@ theta
Definition: ERF_Kessler.H:26
@ qt
Definition: ERF_Kessler.H:30
@ qv
Definition: ERF_Kessler.H:31
@ ng
Definition: ERF_Morrison.H:51
@ QG
Definition: ERF_IndexDefines.H:184
@ QR
Definition: ERF_IndexDefines.H:182
@ QS
Definition: ERF_IndexDefines.H:183
@ R
Definition: ERF_IndexDefines.H:170
@ QV
Definition: ERF_IndexDefines.H:169
@ T
Definition: ERF_IndexDefines.H:168
@ QC
Definition: ERF_IndexDefines.H:171
@ QI
Definition: ERF_IndexDefines.H:172
@ alpha
Definition: ERF_SLM.H:151
@ xvel
Definition: ERF_IndexDefines.H:255
@ cons
Definition: ERF_IndexDefines.H:254
@ zvel
Definition: ERF_IndexDefines.H:257
@ yvel
Definition: ERF_IndexDefines.H:256
@ dz
Definition: ERF_AdvanceWDM6.cpp:273
@ q
Definition: ERF_WSM6.H:294
real(c_double), parameter p0
Definition: ERF_module_model_constants.F90:40
real(c_double), parameter epsilon
Definition: ERF_module_model_constants.F90:12
The moisture data carried by the active microphysics scheme.
Definition: ERF_DataStruct.H:251
int qs
snow
Definition: ERF_DataStruct.H:266
int qr
rain
Definition: ERF_DataStruct.H:265
int qi
cloud ice
Definition: ERF_DataStruct.H:264
int qv
water vapor
Definition: ERF_DataStruct.H:262
int qc
cloud liquid water
Definition: ERF_DataStruct.H:263
int qg
graupel
Definition: ERF_DataStruct.H:267
Definition: ERF_Utils.H:76
amrex::Vector< int > map
Definition: ERF_Utils.H:78
amrex::Vector< int > bnd
Definition: ERF_Utils.H:79
amrex::Vector< int > read
Definition: ERF_Utils.H:77