13 #include <AMReX_AmrCore.H>
14 #include <AMReX_BCRec.H>
15 #include <AMReX_Print.H>
17 #include <AMReX_ParallelDescriptor.H>
18 #include <AMReX_ParmParse.H>
19 #include <AMReX_MultiFabUtil.H>
20 #include <AMReX_FillPatchUtil.H>
21 #include <AMReX_VisMF.H>
22 #include <AMReX_PhysBCFunct.H>
23 #include <AMReX_YAFluxRegister.H>
24 #include <AMReX_ErrorList.H>
25 #include <AMReX_EBFabFactory.H>
26 #include <AMReX_EBMultiFabUtil.H>
27 #include <AMReX_TableData.H>
34 #include <AMReX_FFT_Poisson.H>
37 #ifdef AMREX_MEM_PROFILING
38 #include <AMReX_MemProfiler.H>
68 #ifdef ERF_USE_PARTICLES
81 #ifdef ERF_USE_WINDFARM
88 #ifdef ERF_USE_EAMXX_SHOC
98 #include <AMReX_Lazy.H>
101 #ifndef AMREX_USE_MPI
102 using amrex::MPI_COMM_WORLD;
103 using amrex::MPI_Comm;
106 #ifdef ERF_USE_MULTIBLOCK
107 class MultiBlockContainer;
120 :
public amrex::AmrCore
139 ERF& operator= (
ERF&& other) noexcept = delete;
145 ERF& operator= (const
ERF& other) = delete;
152 bool use_two_way_coupling,
153 bool use_state_contract);
159 amrex::DistributionMapping& dm);
174 const
amrex::MultiFab*& lat_cc) const;
226 amrex::Vector<int>& can_fill)
const;
241 const amrex::Vector<const amrex::MultiFab*>& weight_mf,
242 const amrex::Vector<const amrex::iMultiFab*>& index_mf,
243 int max_stencil_size,
244 const amrex::MultiFab* dst_mskr =
nullptr,
245 const amrex::MultiFab* dst_msku =
nullptr,
246 const amrex::MultiFab* dst_mskv =
nullptr);
262 const amrex::iMultiFab* erf_coverage =
nullptr);
274 const amrex::MultiFab& cc_vel,
276 amrex::TagBoxArray* tags =
nullptr);
279 const amrex::MultiFab& cc_vel,
312 const amrex::Vector<std::array<amrex::Real, 2>>& points_xy);
315 amrex::Vector<std::array<amrex::Real, 2>>& points_xy);
318 const amrex::MultiFab& mf_cc_vel,
319 int& hurricane_eye_i_glob,
320 int& hurricane_eye_j_glob,
325 const amrex::Geometry& geom,
326 const amrex::Vector<amrex::MultiFab>& S_data,
327 int& hurricane_eye_i_glob,
328 int& hurricane_eye_j_glob,
333 const amrex::Geometry& geom,
334 const amrex::MultiFab& mf_cc_vel,
335 const amrex::Vector<amrex::MultiFab>& S_data,
336 int& hurricane_eye_i_glob,
337 int& hurricane_eye_j_glob,
342 const amrex::Geometry& geom,
343 const amrex::Vector<amrex::MultiFab>& S_data,
354 const amrex::MultiFab& mf_cc_vel,
358 const amrex::Geometry& geom,
359 const amrex::MultiFab& mf_cons_var,
363 const int& hurricane_eye_j_glob,
382 void Interp2DArrays (
int lev,
const amrex::BoxArray& my_ba2d,
const amrex::DistributionMapping& my_dm);
386 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::MultiFab>>>& field_lev,
387 const amrex::BoxArray& my_ba2d,
const amrex::DistributionMapping& my_dm);
409 amrex::MultiFab&
cons,
410 const amrex::Vector<int>& cons_comps,
411 const amrex::Vector<amrex::MultiFab*>& mom);
421 amrex::Array<amrex::MultiFab const*,AMREX_SPACEDIM> rho0_u_const,
422 amrex::MultiFab
const& mf_mx, amrex::MultiFab
const& mf_my,
423 amrex::MultiFab
const& mf_vx, amrex::MultiFab
const& mf_uy,
424 amrex::MultiFab
const& ax_in, amrex::MultiFab
const& ay_in,
425 amrex::MultiFab
const& dJ_in,
426 amrex::Geometry
const& geom_at_lev);
437 void project_momenta (
int lev,
double l_time,
double l_dt, amrex::Vector<amrex::MultiFab >& vars,
446 const amrex::MultiFab& pz,
const amrex::MultiFab& pmu,
const amrex::MultiFab& pmv,
447 amrex::MultiFab& cOm, amrex::MultiFab& cRu, amrex::MultiFab& cRv);
449 amrex::MultiFab& omega_t, amrex::MultiFab& rhou_g, amrex::MultiFab& rhov_g,
450 amrex::Vector<int>& slab_box);
452 amrex::MultiFab& omega_t, amrex::Vector<int>& slab_box);
454 const amrex::Vector<int>& slab_box);
457 const amrex::MultiFab& yold,
const amrex::MultiFab& ynew,
458 const amrex::Vector<double>& times);
479 amrex::MultiFab&
zmom);
482 amrex::Gpu::DeviceVector<amrex::Real>
make_sub_dz (
int lev,
const amrex::Box& subdomain);
498 void make_subdomains (
const amrex::BoxList& ba, amrex::Vector<amrex::BoxArray>& bins);
501 void build_fft_solvers (
int lev);
502 void solve_with_fft (
int lev,
int isub,
const amrex::Box& subdomain,
503 amrex::MultiFab& rhs, amrex::MultiFab&
p,
504 amrex::Array<amrex::MultiFab,AMREX_SPACEDIM>& fluxes);
507 amrex::MultiFab& rhs, amrex::MultiFab&
p,
508 amrex::Array<amrex::MultiFab,AMREX_SPACEDIM>& fluxes,
509 amrex::MultiFab& ax_sub, amrex::MultiFab& ay_sub,
510 amrex::MultiFab& az_sub,
511 amrex::MultiFab& dJ_sub, amrex::MultiFab& znd_sub,
516 amrex::MultiFab& rhs, amrex::MultiFab&
phi,
517 amrex::Array<amrex::MultiFab,AMREX_SPACEDIM>& fluxes,
518 amrex::Array<amrex::MultiFab const*,AMREX_SPACEDIM>
const&
sigma);
520 amrex::MultiFab& rhs, amrex::MultiFab&
p,
521 amrex::Array<amrex::MultiFab,AMREX_SPACEDIM>& fluxes,
522 amrex::MultiFab& ax_sub, amrex::MultiFab& ay_sub,
523 amrex::MultiFab& az_sub,
524 amrex::MultiFab& , amrex::MultiFab& znd_sub);
526 void ImposeBCsOnPhi (
int lev, amrex::MultiFab&
phi,
const amrex::Box& subdomain);
550 bool writeNow (
double cur_time,
const int nstep,
const int plot_int,
551 const double plot_per,
const double dt_0,
double& last_file_time);
580 const amrex::MultiFab*& sens_flux,
581 const amrex::MultiFab*& laten_flux)
const;
587 const amrex::MultiFab*& sens_flux,
588 const amrex::MultiFab*& laten_flux)
const;
613 void FillBdyCCVels (amrex::MultiFab& mf_cc_vel, amrex::Geometry& lev_geom);
615 void sample_points (
int ifile,
int lev,
double time, amrex::IntVect cell, amrex::MultiFab& mf);
616 void sample_lines (
int ifile,
int lev,
double time, amrex::IntVect cell, amrex::MultiFab& mf);
619 amrex::Gpu::HostVector<amrex::Real>& h_avg_u , amrex::Gpu::HostVector<amrex::Real>& h_avg_v,
620 amrex::Gpu::HostVector<amrex::Real>& h_avg_w , amrex::Gpu::HostVector<amrex::Real>& h_avg_rho,
621 amrex::Gpu::HostVector<amrex::Real>& h_avg_th , amrex::Gpu::HostVector<amrex::Real>& h_avg_ksgs,
622 amrex::Gpu::HostVector<amrex::Real>& h_avg_Kmv , amrex::Gpu::HostVector<amrex::Real>& h_avg_Khv,
623 amrex::Gpu::HostVector<amrex::Real>& h_avg_qv , amrex::Gpu::HostVector<amrex::Real>& h_avg_qc,
624 amrex::Gpu::HostVector<amrex::Real>& h_avg_qr ,
625 amrex::Gpu::HostVector<amrex::Real>& h_avg_wqv , amrex::Gpu::HostVector<amrex::Real>& h_avg_wqc,
626 amrex::Gpu::HostVector<amrex::Real>& h_avg_wqr ,
627 amrex::Gpu::HostVector<amrex::Real>& h_avg_qi , amrex::Gpu::HostVector<amrex::Real>& h_avg_qs,
628 amrex::Gpu::HostVector<amrex::Real>& h_avg_qg ,
629 amrex::Gpu::HostVector<amrex::Real>& h_avg_uu , amrex::Gpu::HostVector<amrex::Real>& h_avg_uv,
630 amrex::Gpu::HostVector<amrex::Real>& h_avg_uw,
631 amrex::Gpu::HostVector<amrex::Real>& h_avg_vv , amrex::Gpu::HostVector<amrex::Real>& h_avg_vw,
632 amrex::Gpu::HostVector<amrex::Real>& h_avg_ww,
633 amrex::Gpu::HostVector<amrex::Real>& h_avg_uth , amrex::Gpu::HostVector<amrex::Real>& h_avg_vth,
634 amrex::Gpu::HostVector<amrex::Real>& h_avg_wth, amrex::Gpu::HostVector<amrex::Real>& h_avg_thth,
635 amrex::Gpu::HostVector<amrex::Real>& h_avg_ku, amrex::Gpu::HostVector<amrex::Real>& h_avg_kv,
636 amrex::Gpu::HostVector<amrex::Real>& h_avg_kw,
637 amrex::Gpu::HostVector<amrex::Real>& h_avg_p,
638 amrex::Gpu::HostVector<amrex::Real>& h_avg_pu, amrex::Gpu::HostVector<amrex::Real>& h_avg_pv,
639 amrex::Gpu::HostVector<amrex::Real>& h_avg_pw, amrex::Gpu::HostVector<amrex::Real>& h_avg_wthv,
640 amrex::Gpu::HostVector<amrex::Real>& h_avg_thv);
642 amrex::Gpu::HostVector<amrex::Real>& h_avg_u , amrex::Gpu::HostVector<amrex::Real>& h_avg_v,
643 amrex::Gpu::HostVector<amrex::Real>& h_avg_w , amrex::Gpu::HostVector<amrex::Real>& h_avg_rho,
644 amrex::Gpu::HostVector<amrex::Real>& h_avg_th , amrex::Gpu::HostVector<amrex::Real>& h_avg_ksgs,
645 amrex::Gpu::HostVector<amrex::Real>& h_avg_Kmv , amrex::Gpu::HostVector<amrex::Real>& h_avg_Khv,
646 amrex::Gpu::HostVector<amrex::Real>& h_avg_qv , amrex::Gpu::HostVector<amrex::Real>& h_avg_qc,
647 amrex::Gpu::HostVector<amrex::Real>& h_avg_qr ,
648 amrex::Gpu::HostVector<amrex::Real>& h_avg_wqv , amrex::Gpu::HostVector<amrex::Real>& h_avg_wqc,
649 amrex::Gpu::HostVector<amrex::Real>& h_avg_wqr ,
650 amrex::Gpu::HostVector<amrex::Real>& h_avg_qi , amrex::Gpu::HostVector<amrex::Real>& h_avg_qs,
651 amrex::Gpu::HostVector<amrex::Real>& h_avg_qg ,
652 amrex::Gpu::HostVector<amrex::Real>& h_avg_uu , amrex::Gpu::HostVector<amrex::Real>& h_avg_uv,
653 amrex::Gpu::HostVector<amrex::Real>& h_avg_uw,
654 amrex::Gpu::HostVector<amrex::Real>& h_avg_vv , amrex::Gpu::HostVector<amrex::Real>& h_avg_vw,
655 amrex::Gpu::HostVector<amrex::Real>& h_avg_ww,
656 amrex::Gpu::HostVector<amrex::Real>& h_avg_uth , amrex::Gpu::HostVector<amrex::Real>& h_avg_vth,
657 amrex::Gpu::HostVector<amrex::Real>& h_avg_wth, amrex::Gpu::HostVector<amrex::Real>& h_avg_thth,
658 amrex::Gpu::HostVector<amrex::Real>& h_avg_ku, amrex::Gpu::HostVector<amrex::Real>& h_avg_kv,
659 amrex::Gpu::HostVector<amrex::Real>& h_avg_kw,
660 amrex::Gpu::HostVector<amrex::Real>& h_avg_p,
661 amrex::Gpu::HostVector<amrex::Real>& h_avg_pu, amrex::Gpu::HostVector<amrex::Real>& h_avg_pv,
662 amrex::Gpu::HostVector<amrex::Real>& h_avg_pw, amrex::Gpu::HostVector<amrex::Real>& h_avg_wthv,
663 amrex::Gpu::HostVector<amrex::Real>& h_avg_thv);
665 void derive_stress_profiles (amrex::Gpu::HostVector<amrex::Real>& h_avg_tau11, amrex::Gpu::HostVector<amrex::Real>& h_avg_tau12,
666 amrex::Gpu::HostVector<amrex::Real>& h_avg_tau13, amrex::Gpu::HostVector<amrex::Real>& h_avg_tau22,
667 amrex::Gpu::HostVector<amrex::Real>& h_avg_tau23, amrex::Gpu::HostVector<amrex::Real>& h_avg_tau33,
668 amrex::Gpu::HostVector<amrex::Real>& h_avg_hfx3, amrex::Gpu::HostVector<amrex::Real>& h_avg_q1fx3,
669 amrex::Gpu::HostVector<amrex::Real>& h_avg_q2fx3, amrex::Gpu::HostVector<amrex::Real>& h_avg_diss);
670 void derive_stress_profiles_stag (amrex::Gpu::HostVector<amrex::Real>& h_avg_tau11, amrex::Gpu::HostVector<amrex::Real>& h_avg_tau12,
671 amrex::Gpu::HostVector<amrex::Real>& h_avg_tau13, amrex::Gpu::HostVector<amrex::Real>& h_avg_tau22,
672 amrex::Gpu::HostVector<amrex::Real>& h_avg_tau23, amrex::Gpu::HostVector<amrex::Real>& h_avg_tau33,
673 amrex::Gpu::HostVector<amrex::Real>& h_avg_hfx3, amrex::Gpu::HostVector<amrex::Real>& h_avg_q1fx3,
674 amrex::Gpu::HostVector<amrex::Real>& h_avg_q2fx3, amrex::Gpu::HostVector<amrex::Real>& h_avg_diss);
677 amrex::Gpu::HostVector<amrex::Real>& h_avg_wsub, amrex::Gpu::HostVector<amrex::Real>& h_avg_thtend,
678 amrex::Gpu::HostVector<amrex::Real>& h_avg_qhtend, amrex::Gpu::HostVector<amrex::Real>& h_avg_tvtend,
679 amrex::Gpu::HostVector<amrex::Real>& h_avg_qvtend, amrex::Gpu::HostVector<amrex::Real>& h_avg_qcvtend,
680 amrex::Gpu::HostVector<amrex::Real>& h_avg_tnudge, amrex::Gpu::HostVector<amrex::Real>& h_avg_qnudge,
681 amrex::Gpu::HostVector<amrex::Real>& h_avg_unudge, amrex::Gpu::HostVector<amrex::Real>& h_avg_vnudge);
685 volWgtSumMF (
int lev,
const amrex::MultiFab& mf,
int comp,
686 const amrex::MultiFab& dJ,
const amrex::MultiFab& mfx,
const amrex::MultiFab& mfy,
687 bool finemask,
bool local =
true);
691 amrex::MultiFab& mf_2d,
const amrex::MultiFab& dJ);
695 int action_interval,
double action_per);
701 const amrex::DistributionMapping& dm)
override;
707 const amrex::DistributionMapping& dm)
override;
717 const amrex::DistributionMapping& dm)
override;
720 double estTimeStep (
int lev,
long& dt_fast_ratio)
const;
735 #ifdef ERF_USE_WW3_COUPLING
737 void send_to_ww3 (
int lev);
739 void read_waves (
int lev);
748 amrex::Vector<amrex::MultiFab>& state_old,
749 amrex::Vector<amrex::MultiFab>& state_new,
750 amrex::MultiFab& xvel_old, amrex::MultiFab& yvel_old, amrex::MultiFab& zvel_old,
751 amrex::MultiFab& xvel_new, amrex::MultiFab& yvel_new, amrex::MultiFab& zvel_new,
752 amrex::MultiFab& source, amrex::MultiFab& xmom_src,
753 amrex::MultiFab& ymom_src, amrex::MultiFab& zmom_src,
754 amrex::MultiFab& buoyancy, amrex::Geometry fine_geom,
755 double dt,
double time);
758 amrex::MultiFab& cons_in,
759 const double& dt_advance,
760 const int& iteration,
768 amrex::MultiFab& cons_in,
769 amrex::MultiFab& xvel_in,
770 amrex::MultiFab& yvel_in,
772 const double& dt_advance);
775 amrex::MultiFab& cons_in,
776 amrex::MultiFab& u_in,
777 amrex::MultiFab& v_in,
779 const amrex::Geometry& geom,
781 amrex::MultiFab& eddyDiffs_in);
784 amrex::MultiFab& cons_in,
785 const double& dt_advance);
787 #ifdef ERF_USE_EAMXX_SHOC
788 void compute_shoc_tendencies (
int lev,
789 amrex::MultiFab*
cons,
790 amrex::MultiFab*
xvel,
791 amrex::MultiFab*
yvel,
792 amrex::MultiFab*
zvel,
794 amrex::MultiFab*
tau13,
795 amrex::MultiFab*
tau23,
796 amrex::MultiFab* hfx3,
797 amrex::MultiFab* qfx3,
798 amrex::MultiFab* eddyDiffs,
800 const double& dt_advance);
804 amrex::MultiFab*
cons,
805 amrex::MultiFab*
xvel,
806 amrex::MultiFab*
yvel,
807 amrex::MultiFab*
zvel,
809 amrex::MultiFab*
tau13,
810 amrex::MultiFab*
tau23,
811 amrex::MultiFab* hfx3,
812 amrex::MultiFab* qfx3,
813 amrex::MultiFab* eddyDiffs,
815 const double& dt_advance);
824 bool Write3DPlotFile (
int which, PlotFileType plotfile_type, amrex::Vector<std::string> plot_var_names);
825 void Write2DPlotFile (
int which, PlotFileType plotfile_type, amrex::Vector<std::string> plot_var_names);
827 bool interval_diagnostic_consumed);
835 const amrex::Vector<const amrex::MultiFab*> &mf,
836 const amrex::Vector<const amrex::MultiFab*> &mf_nd,
837 const amrex::Vector<std::string> &varnames,
838 const amrex::Vector<amrex::Geometry>& my_geom,
840 const amrex::Vector<int> &level_steps,
841 const amrex::Vector<amrex::IntVect>& my_ref_ratio,
842 const std::string &versionName =
"HyperCLaw-V1.1",
843 const std::string &levelPrefix =
"Level_",
844 const std::string &mfPrefix =
"Cell",
845 const amrex::Vector<std::string>& extra_dirs = amrex::Vector<std::string>())
const;
850 const amrex::Vector<amrex::BoxArray> &bArray,
851 const amrex::Vector<std::string> &varnames,
852 const amrex::Vector<amrex::Geometry>& my_geom,
854 const amrex::Vector<int> &level_steps,
855 const amrex::Vector<amrex::IntVect>& my_ref_ratio,
856 const std::string &versionName,
857 const std::string &levelPrefix,
858 const std::string &mfPrefix)
const;
877 const amrex::Vector<std::string>& plot_var_names,
878 const amrex::Vector<std::string>& varnames,
879 const amrex::Vector<plotfile2d::Plotfile2DOutputDescriptor>& output_descriptors,
880 amrex::MultiFab& mf_dst,
884 const amrex::Vector<std::string>& plot_var_names,
886 amrex::MultiFab& mf_dst,
898 bool sync_solution =
true);
914 amrex::MultiFab&
dens, amrex::MultiFab&
pres, amrex::MultiFab&
pi,
915 amrex::MultiFab& th, amrex::MultiFab&
qv,
916 std::unique_ptr<amrex::MultiFab>& z_cc);
950 const amrex::MultiFab&
xvel,
const amrex::MultiFab&
yvel);
952 const amrex::MultiFab&
xvel,
const amrex::MultiFab&
yvel,
const amrex::MultiFab&
zvel);
958 void init_thin_body (
int lev,
const amrex::BoxArray& ba,
const amrex::DistributionMapping& dm);
961 const std::string& filename,
962 const std::unique_ptr<amrex::MultiFab>&
z_phys_nd,
963 amrex::Vector<amrex::Vector<amrex::MultiFab>>& forecast_state);
966 const std::string& filename,
967 amrex::Vector<amrex::MultiFab>& surface_state);
972 amrex::Vector<std::unique_ptr<amrex::MultiFab>>&
z_phys_nd,
973 bool regrid_forces_file_read);
977 amrex::Vector<std::unique_ptr<amrex::MultiFab>>&
z_phys_nd,
978 bool regrid_forces_file_read);
981 amrex::MultiFab& mf_cc_pert,
982 amrex::MultiFab& cons_pert,
983 amrex::MultiFab& xvel_pert,
984 amrex::MultiFab& yvel_pert,
985 amrex::MultiFab& zvel_pert);
988 amrex::MultiFab& mf_cc_pert);
991 amrex::MultiFab& mf_cc_pert);
1003 #ifdef ERF_USE_MULTIBLOCK
1006 ERF (
const amrex::RealBox& rb,
int max_level_in,
1007 const amrex::Vector<int>& n_cell_in,
int coord,
1008 const amrex::Vector<amrex::IntVect>& ref_ratio,
1009 const amrex::Array<int,AMREX_SPACEDIM>& is_per,
1010 std::string prefix);
1013 void Evolve_MB (
int MBstep,
int max_block_step);
1019 void SetMultiBlockPointer (MultiBlockContainer *mbc) { m_mbc = mbc; }
1022 std::vector<amrex::Box> domain_p;
1025 amrex::Vector<amrex::Vector<amrex::MultiFab> >
vars_new;
1026 amrex::Vector<amrex::Vector<amrex::MultiFab> >
vars_old;
1029 amrex::Vector<amrex::Vector<amrex::MultiFab> >
gradp;
1032 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
vel_t_avg;
1055 const amrex::Vector<amrex::MultiFab*>& mfs,
1057 bool cons_only =
false);
1059 #ifdef ERF_USE_NETCDF
1061 void fill_from_realbdy (
const amrex::Vector<amrex::MultiFab*>& mfs,
1066 amrex::IntVect ngvect_cons,
1067 amrex::IntVect ngvect_vels);
1070 #ifdef ERF_USE_NETCDF
1085 void init_from_wrfinput (
int lev, amrex::MultiFab&
mf_PSFC,
bool read_atmos_state =
true);
1086 void init_from_metgrid (
int lev);
1088 void init_lsm_from_metgrid (
int lev,
const std::string& fname,
const std::string& date);
1089 void init_from_ncfile (
int lev);
1096 void rebuild_base_state_from_wrfinput (
int lev, amrex::MultiFab& base_state_mf);
1102 void restore_base_state_params_on_restart ();
1105 #ifdef ERF_USE_WINDFARM
1106 void init_windfarm (
int lev);
1107 void advance_windfarm (
const amrex::Geometry& a_geom,
1108 const double& dt_advance,
1109 amrex::MultiFab& cons_in,
1110 amrex::MultiFab& U_old,
1111 amrex::MultiFab& V_old,
1112 amrex::MultiFab& W_old,
1113 amrex::MultiFab& mf_vars_windfarm,
1114 const amrex::MultiFab& mf_Nturb,
1115 const amrex::MultiFab& mf_SMark,
1116 const double& time);
1127 bool do_full_state_and_momenta =
true);
1155 void init_zphys (
int lev,
double elapsed_time);
1217 void init_stuff (
int lev,
const amrex::BoxArray& ba,
const amrex::DistributionMapping& dm,
1218 amrex::Vector<amrex::MultiFab>& lev_new, amrex::Vector<amrex::MultiFab>& lev_old,
1219 amrex::MultiFab& tmp_base_state,
1220 std::unique_ptr<amrex::MultiFab>& tmp_zphys_nd);
1236 int source_lev = -1,
bool source_is_raw_input =
false,
1237 bool initialize_now =
false);
1245 #ifdef ERF_USE_WINDFARM
1247 void initializeWindFarm (
const int&);
1259 const amrex::Vector<amrex::MultiFab*>& mfs_vel,
1260 bool cons_only=
false);
1264 const amrex::Vector<amrex::MultiFab*>& mfs_vel,
1265 const amrex::Vector<amrex::MultiFab*>& mfs_mom,
1266 bool fillset=
true,
bool cons_only=
false);
1277 const amrex::Vector<amrex::MultiFab*>& mfs_vel,
1278 const amrex::Vector<amrex::MultiFab*>& mfs_mom,
1279 int ng_cons,
int ng_vel,
bool cons_only,
int icomp_cons,
int ncomp_cons);
1287 void timeStep (
int lev,
double time,
int iteration);
1290 void Advance (
int lev,
double time,
double dt_lev,
int iteration,
int ncycle);
1315 void ComputeDt (
int step = -1,
double cur_time_d = 0.0);
1321 static amrex::Vector<std::string>
PlotFileVarNames (amrex::Vector<std::string> plot_var_names);
1324 void setPlotVariables (
const std::string& pp_plot_var_names, amrex::Vector<std::string>& plot_var_names);
1327 amrex::Vector<std::string>& a_plot_var_names);
1328 void setPlotVariables2D (
const std::string& pp_plot_var_names, amrex::Vector<std::string>& plot_var_names);
1330 void appendPlotVariables (
const std::string& pp_plot_var_names, amrex::Vector<std::string>& plot_var_names);
1332 void setSubVolVariables (
const std::string& pp_subvol_var_names, amrex::Vector<std::string>& subvol_var_names);
1334 #ifdef ERF_USE_NETCDF
1336 void init_from_wrfbdy (amrex::Vector<amrex::FArrayBox*> x_vel_lateral,
1337 amrex::Vector<amrex::FArrayBox*> y_vel_lateral,
1338 amrex::Vector<amrex::FArrayBox*> z_vel_lateral,
1339 amrex::Vector<amrex::FArrayBox*> T_lateral);
1341 static double start_bdy_time;
1342 static double final_bdy_time;
1344 static double start_low_time;
1345 static double final_low_time;
1347 static double bdy_time_interval;
1348 static double low_time_interval;
1360 amrex::Vector<amrex::Vector<amrex::FArrayBox>> bdy_data_xlo;
1361 amrex::Vector<amrex::Vector<amrex::FArrayBox>> bdy_data_xhi;
1362 amrex::Vector<amrex::Vector<amrex::FArrayBox>> bdy_data_ylo;
1363 amrex::Vector<amrex::Vector<amrex::FArrayBox>> bdy_data_yhi;
1365 amrex::Vector<amrex::Vector<amrex::FArrayBox>> low_data_zlo;
1369 void init_fine_low_slices (
int lev,
bool restarting);
1372 void read_own_low_slice (
int lev,
int itime, std::unique_ptr<SurfaceLayer>& SurfLayer);
1375 void check_own_low_file_times (
int lev);
1378 void read_psfc_from_own_init_file (
int lev);
1381 amrex::Box nest_box_from_own_init_file (
int lev);
1432 void post_update (amrex::MultiFab& state_mf,
double time,
const amrex::Geometry& geom);
1433 void fill_rhs (amrex::MultiFab& rhs_mf,
const amrex::MultiFab& state_mf,
double time,
const amrex::Geometry& geom);
1438 std::unique_ptr<ProblemBase>
prob =
nullptr;
1466 amrex::Vector<double>
dt;
1469 #ifndef ERF_USE_MULTIBLOCK
1472 amrex::Vector<amrex::Vector<amrex::MultiFab> >
vars_new;
1473 amrex::Vector<amrex::Vector<amrex::MultiFab> >
vars_old;
1476 amrex::Vector<amrex::Vector<amrex::MultiFab> >
gradp;
1488 amrex::Vector<std::unique_ptr<MRISplitIntegrator<amrex::Vector<amrex::MultiFab> > > >
mri_integrator_mem;
1508 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
Qv_prim;
1509 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
Qr_prim;
1531 amrex::Vector<amrex::Vector<amrex::MultiFab*>>
qmoist;
1532 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
precip;
1536 #ifdef ERF_USE_WINDFARM
1537 std::unique_ptr<WindFarm> windfarm;
1538 amrex::Vector<amrex::MultiFab> Nturb;
1539 amrex::Vector<amrex::MultiFab> vars_windfarm;
1542 amrex::Vector<amrex::MultiFab> SMark;
1552 amrex::Vector<amrex::Vector<amrex::MultiFab*>>
lsm_data;
1554 amrex::Vector<amrex::Vector<amrex::MultiFab*>>
lsm_flux;
1563 amrex::Vector<std::unique_ptr<LargeScaleForcingData>>
lsf_fine;
1565 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
lsf_data;
1567 amrex::Vector<std::unique_ptr<IRadiation>>
rad;
1585 #ifdef ERF_USE_EAMXX_SHOC
1586 amrex::Vector<std::unique_ptr<SHOCInterface>> eamxx_shoc_interface;
1603 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::MultiFab>>>
Tau;
1604 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::MultiFab>>>
Tau_corr;
1609 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::MultiFab>>>
sst_lev;
1610 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::MultiFab>>>
tsk_lev;
1611 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::iMultiFab>>>
lmask_lev;
1616 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::MultiFab>>>
urb_frac_lev;
1626 amrex::Vector<amrex::Vector<amrex::Vector<std::unique_ptr<amrex::MultiFab>>>>
Tau_EB;
1627 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
hfx3_EB;
1628 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
qfx3_EB;
1637 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
detJ_cc;
1638 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
ax;
1639 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
ay;
1646 amrex::DistributionMapping
fdm;
1649 amrex::DistributionMapping
sdm;
1664 amrex::DistributionMapping
fdm;
1665 amrex::Array<amrex::BoxArray, AMREX_SPACEDIM>
sba;
1666 amrex::Array<amrex::DistributionMapping, AMREX_SPACEDIM>
sdm;
1667 amrex::Array<amrex::Vector<int>, AMREX_SPACEDIM>
slab_box;
1668 amrex::Array<amrex::Vector<amrex::Box>, AMREX_SPACEDIM>
slab_faces;
1669 amrex::Array<amrex::Vector<amrex::MultiFab>, AMREX_SPACEDIM>
flux;
1673 amrex::Array<amrex::MultiFab, AMREX_SPACEDIM>
tgt;
1682 const amrex::Array<amrex::MultiFab, AMREX_SPACEDIM>& rec,
1683 const amrex::MultiFab& rho_w_old,
const amrex::MultiFab& rho_w_new);
1684 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
az;
1689 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
ax_src;
1690 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
ay_src;
1691 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
az_src;
1696 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
z_t_rk;
1700 amrex::Vector<std::unique_ptr<IBFaceSet>>
m_ibseb;
1729 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
walldist;
1732 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::MultiFab>>>
mapfac;
1744 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
Hwave;
1745 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
Lwave;
1771 amrex::Array<amrex::Array<erf_wall_scalar_bc::WallScalarBCIntent, AMREX_SPACEDIM*2>,
NBCVAR_max>
1807 static double last_fire_plot_time;
1902 const std::string& mf_name,
1904 int scomp,
int dcomp,
int ncomp,
1905 const amrex::IntVect& dst_ghosts,
1906 bool src_ghosts =
false);
1913 const std::string& mf_name,
1915 int scomp,
int dcomp,
int ncomp,
1916 const amrex::IntVect& dst_ghosts,
1917 bool src_ghosts =
false);
1965 const amrex::Vector<std::string>
derived_names {
"temp",
"theta",
"KE",
"scalar",
"soundspeed",
1966 "reflectivity",
"max_reflectivity",
"precipitable",
"mucape",
1967 "vorticity_x",
"vorticity_y",
"vorticity_z",
1968 "helicity",
"local_helicity",
"vort_stretching",
1970 "pres_hse",
"dens_hse",
"theta_hse",
"pi_hse",
"qv_hse",
1971 "pressure",
"pert_pres",
"pert_dens",
1972 "buoyancy",
"eq_pot_temp",
"VPD",
1973 #ifdef ERF_USE_WINDFARM
1974 "num_turb",
"SMark0",
"SMark1",
1976 "dpdx",
"dpdy",
"dpdz",
"pres_hse_x",
"pres_hse_y",
1977 "z_phys",
"detJ",
"h_xi",
"h_eta",
"h_zeta",
1978 "mapfac",
"lat_m",
"lon_m",
1980 "u_t_avg",
"v_t_avg",
"w_t_avg",
"umag_t_avg",
1982 "u_mean",
"v_mean",
"w_mean",
"theta_mean",
1983 "uu_mean",
"vv_mean",
"ww_mean",
"uw_mean",
"vw_mean",
"wtheta_mean",
1984 "uu_fluct",
"vv_fluct",
"ww_fluct",
"uw_fluct",
"vw_fluct",
"wtheta_fluct",
"tke_resolved",
1994 "Rt",
"cmu",
"cmu_prime",
1998 "pblh",
"shoc_cldfrac",
"shoc_ql",
"shoc_ql2",
"shoc_cond",
1999 "wqls_sec",
"wthv_sec",
"w_sec",
2000 "thl_sec",
"qw_sec",
"qwthl_sec",
"wthl_sec",
"wqw_sec",
"w3",
2001 "brunt",
"isotropy",
"shear_prod",
"buoy_prod",
"diss_tke",
2007 "moist_density",
"qv",
"qc",
"qi",
"qrain",
"qsnow",
"qgraup",
2008 "qt",
"qn",
"qp",
"qsat",
"nc",
"ni",
"nr",
"ns",
"ng",
"nn",
2009 "rain_accum",
"snow_accum",
"graupel_accum",
"precip_accum",
2010 "rel_humidity",
"condensation_rate",
2013 "ibseb_nfaces",
"ibseb_tskin",
2014 "ibseb_sw_abs",
"ibseb_shadow",
2015 "ibseb_lw_net",
"ibseb_f_sky",
"ibseb_H",
"ibseb_G",
2018 ,
"qsrc_sw",
"qsrc_lw",
2019 "Tau11",
"Tau12",
"Tau13",
"Tau21",
"Tau22",
"Tau23",
"Tau31",
"Tau32",
"Tau33",
2020 "hfx1",
"hfx2",
"hfx3",
"q1fx1",
"q1fx2",
"q1fx3",
"q2fx3"
2030 "precipitable",
"mucape"};
2038 #ifdef ERF_USE_PARTICLES
2040 ParticleData particleData;
2043 bool m_use_tracer_particles;
2046 void readTracersParams ();
2049 void initializeTracers ( amrex::ParGDBBase*,
2050 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>&,
2054 void restartTracers ( amrex::ParGDBBase*,
const std::string& );
2057 void evolveTracers (
int,
2059 amrex::Vector<amrex::Vector<amrex::MultiFab>>&,
2060 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& );
2064 #ifdef ERF_USE_MULTIBLOCK
2065 MultiBlockContainer *m_mbc =
nullptr;
2126 amrex::Vector<amrex::BoxArray>
ba1d;
2127 amrex::Vector<amrex::BoxArray>
ba2d;
2143 amrex::Vector<amrex::Array<std::unique_ptr<amrex::iMultiFab>,AMREX_SPACEDIM+1>>
cf_implicit_mask;
2146 const amrex::DistributionMapping& dm,
2147 const amrex::IntVect&
ng);
2153 const amrex::DistributionMapping& dm);
2170 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
mf_PSFC;
2189 amrex::Vector<amrex::Gpu::DeviceVector<amrex::Real> >
d_w_subsid;
2192 amrex::Vector<amrex::Gpu::DeviceVector<amrex::Real> >
d_u_geos;
2195 amrex::Vector<amrex::Gpu::DeviceVector<amrex::Real> >
d_v_geos;
2199 amrex::Vector<amrex::Real>& u_geos,
2200 amrex::Gpu::DeviceVector<amrex::Real>& u_geos_d,
2201 amrex::Vector<amrex::Real>& v_geos,
2202 amrex::Gpu::DeviceVector<amrex::Real>& v_geos_d,
2203 const amrex::Geometry& lgeom,
2204 const amrex::Vector<amrex::Real>& zlev_stag);
2216 amrex::Vector<amrex::Vector<amrex::Gpu::DeviceVector<amrex::Real> > >
d_sponge_ptrs;
2236 std::unique_ptr<WriteBndryPlanes>
m_w2d =
nullptr;
2237 std::unique_ptr<ReadBndryPlanes>
m_r2d =
nullptr;
2243 std::unique_ptr<FireCoupler> m_fire_coupler =
nullptr;
2245 std::string m_fire_plot_file {
"plt_fire_"};
2246 int m_fire_plot_int = -1;
2267 static AMREX_FORCE_INLINE
2361 return static_cast<int>(
datalog.size());
2432 int numCores = amrex::ParallelDescriptor::NProcs();
2434 numCores = numCores * omp_get_max_threads();
2438 numCores * (amrex::ParallelDescriptor::second() -
startCPUTime) +
2446 if (amrex::ParallelDescriptor::IOProcessor())
2448 datalog[i] = std::make_unique<std::fstream>();
2449 datalog[i]->open(filename.c_str(),std::ios::out|std::ios::app);
2451 amrex::FileOpenFailed(filename);
2454 amrex::ParallelDescriptor::Barrier(
"ERF::setRecordDataInfo");
2459 if (amrex::ParallelDescriptor::IOProcessor())
2461 der_datalog[i] = std::make_unique<std::fstream>();
2462 der_datalog[i]->open(filename.c_str(),std::ios::out|std::ios::app);
2464 amrex::FileOpenFailed(filename);
2467 amrex::ParallelDescriptor::Barrier(
"ERF::setRecordDerDataInfo");
2472 if (amrex::ParallelDescriptor::IOProcessor())
2475 tot_e_datalog[i]->open(filename.c_str(),std::ios::out|std::ios::app);
2477 amrex::FileOpenFailed(filename);
2480 amrex::ParallelDescriptor::Barrier(
"ERF::setRecordEnergyDataInfo");
2485 amrex::MultiFab dummy(grids[lev],dmap[lev],1,0);
2486 for (amrex::MFIter mfi(dummy); mfi.isValid(); ++mfi)
2488 const amrex::Box& bx = mfi.validbox();
2489 if (bx.contains(cell)) {
2490 sampleptlog[i] = std::make_unique<std::fstream>();
2491 sampleptlog[i]->open(filename.c_str(),std::ios::out|std::ios::app);
2493 amrex::FileOpenFailed(filename);
2497 amrex::ParallelDescriptor::Barrier(
"ERF::setRecordSamplePointInfo");
2504 if (amrex::ParallelDescriptor::IOProcessor())
2507 samplelinelog[i]->open(filename.c_str(),std::ios::out|std::ios::app);
2509 amrex::FileOpenFailed(filename);
2512 amrex::ParallelDescriptor::Barrier(
"ERF::setRecordSampleLineInfo");
2538 amrex::Vector<std::unique_ptr<std::fstream> >
datalog;
2564 amrex::Vector<std::unique_ptr<eb_>>
eb;
2576 AMREX_ASSERT(lev >= 0 && lev <
eb.size() &&
eb[lev] !=
nullptr);
2586 [[nodiscard]] amrex::EBFArrayBoxFactory
const&
2588 AMREX_ASSERT(lev >= 0 && lev <
eb.size() &&
eb[lev] !=
nullptr);
2589 AMREX_ASSERT(
eb[lev]->get_const_factory() !=
nullptr);
2590 return *(
eb[lev]->get_const_factory());
2605 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::FFT::Poisson<amrex::MultiFab>>>> m_3D_poisson;
2606 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::FFT::PoissonHybrid<amrex::MultiFab>>>> m_2D_poisson;
2613 double artifact_time_seconds)
const;
2617 static void print_usage (MPI_Comm , std::ostream& );
2618 static void print_error (MPI_Comm ,
const std::string& msg);
@ tau23
Definition: ERF_DataStruct.H:49
@ tau13
Definition: ERF_DataStruct.H:49
Declares the embedded-boundary factory manager used by ERF levels.
#define USE_FC_FACTORY
Select native AMReX face-centered factories instead of ERF auxiliary factories.
Definition: ERF_EB.H:102
Contains the Eulerian microphysics class.
The atmosphere side of the fire coupling, shared by every fire engine.
Compact list of the wall faces of resolved buildings on one AMR level.
#define NBCVAR_max
Definition: ERF_IndexDefines.H:42
amrex::Real sigma
Definition: ERF_InitCustomPert_DataAssimilation_ISV.H:11
Contains the Lagrangian microphysics class.
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
std::string name
Definition: ERF_Plotfile2DCatalog.cpp:116
amrex::Real Real
Definition: ERF_ShocInterface.H:19
amrex::Vector< std::string > station_vars_3d
Definition: ERF.H:2529
void MakeHorizontalAverages()
Definition: ERF.cpp:4387
amrex::Vector< amrex::MultiFab > rU_new
Definition: ERF.H:1513
static int last_check_file_step
Definition: ERF.H:1798
amrex::Vector< std::unique_ptr< amrex::MultiFab > > walldist
Definition: ERF.H:1729
void average_down_precip_accumulators(int lev)
Definition: ERF_AdvanceMicrophysics.cpp:216
void ConfigureDriverAtmosToOceanCoupling(bool use_coupling_driver, bool use_two_way_coupling, bool use_state_contract)
Definition: ERF_to_REMORA.cpp:247
amrex::Vector< amrex::Vector< amrex::Vector< amrex::Real > > > h_sponge_ptrs
Definition: ERF.H:2208
amrex::Array< int, AMREX_SPACEDIM *2 > m_th_file_face
Definition: ERF.H:1778
void GetOceanToAtmosSurfaceLayout(amrex::BoxArray &ba, amrex::DistributionMapping &dm)
Definition: ERF_to_REMORA.cpp:263
bool metgrid_basic_linear
Definition: ERF.H:2111
amrex::Vector< amrex::Vector< amrex::Box > > boxes_at_level
Definition: ERF.H:1442
amrex::Vector< std::string > samplelinelogname
Definition: ERF.H:2550
void ReportTerrainSlopeFactor(int lev, bool force)
Definition: ERF_ComputeTimestep.cpp:263
int max_step
Definition: ERF.H:1825
void HurricaneTracker(int lev, double time, const amrex::MultiFab &cc_vel, const amrex::Real velmag_threshold, amrex::TagBoxArray *tags=nullptr)
Definition: ERF_RefineHurricane.cpp:147
bool metgrid_debug_msf
Definition: ERF.H:2109
AMREX_FORCE_INLINE std::ostream & DerDataLog(int i)
Definition: ERF.H:2352
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::MultiFab > > > mapfac
Definition: ERF.H:1732
void setRayleighRefFromSounding(bool restarting)
Set Rayleigh mean profiles from input sounding.
Definition: ERF_InitRayleigh.cpp:85
static bool diffusive_dt_limit
Definition: ERF.H:1852
void init_only(int lev, double time)
Definition: ERF.cpp:3273
bool plot_surfmodel
Definition: ERF.H:1941
void BuildPlot3DScratch(const amrex::Vector< std::string > &plot_var_names, Plot3DScratch &scratch, int max_lev=-1, bool sync_solution=true)
Definition: ERF_Plotfile.cpp:312
void turbPert_amplitude_w(const int lev)
Definition: ERF_InitTurbPert.cpp:509
amrex::Vector< std::unique_ptr< MRISplitIntegrator< amrex::Vector< amrex::MultiFab > > > > mri_integrator_mem
Definition: ERF.H:1488
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > column_kextent
Definition: ERF.H:2137
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > d_sinesq_stag_ptrs
Definition: ERF.H:2220
void check_vels_for_nans(amrex::MultiFab const &xvel, amrex::MultiFab const &yvel, amrex::MultiFab const &zvel)
Definition: ERF.cpp:4682
void ibseb_write_checkpoint(const std::string &checkpointname, int lev) const
Definition: ERF_IBSEB.cpp:547
void Evolve()
Definition: ERF.cpp:152
amrex::Vector< amrex::MultiFab > avg_xmom
Definition: ERF.H:1495
amrex::Vector< std::string > urban_data_name
Definition: ERF.H:1556
amrex::Vector< amrex::MultiFab > pp_inc
Definition: ERF.H:1491
amrex::Real m_warned_coupled_sst_max
Definition: ERF.H:1186
void cf_flux_history_record(int crse_lev, int fast_step, int n_sub, amrex::Real t_beg, amrex::Real t_end, const amrex::Array< amrex::MultiFab, AMREX_SPACEDIM > &rec, const amrex::MultiFab &rho_w_old, const amrex::MultiFab &rho_w_new)
Definition: ERF_CFFluxHistory.cpp:167
amrex::Vector< ERFFillPatcher > FPr_u
Definition: ERF.H:1598
std::unique_ptr< SurfaceModel > m_SurfaceModel
Definition: ERF.H:1547
amrex::Vector< amrex::IntVect > sampleline
Definition: ERF.H:2551
void PackAtmosphericStates(amrex::Vector< amrex::MultiFab * > &states, double time, const amrex::Vector< const amrex::MultiFab * > &weight_mf, const amrex::Vector< const amrex::iMultiFab * > &index_mf, int max_stencil_size, const amrex::MultiFab *dst_mskr=nullptr, const amrex::MultiFab *dst_msku=nullptr, const amrex::MultiFab *dst_mskv=nullptr)
Definition: ERF_to_REMORA.cpp:370
amrex::Vector< std::string > subvol3d_var_names
Definition: ERF.H:1952
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SFS_q1fx3_lev
Definition: ERF.H:1621
amrex::Vector< double > t_new
Definition: ERF.H:1464
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Hwave_onegrid
Definition: ERF.H:1746
amrex::Vector< amrex::Vector< amrex::MultiFab > > vars_new
Definition: ERF.H:1472
void set_cf_fill_options(int lev, bool on)
Definition: ERF_CoarseFineFaces.cpp:1107
void FillCoarsePatch(int lev, double time)
Definition: ERF_FillCoarsePatch.cpp:20
void WriteAtIntermediateTime(int nstep, double time)
Definition: ERF.cpp:261
void Interp2DTimeSlice(int lev, int n, amrex::Vector< amrex::Vector< std::unique_ptr< amrex::MultiFab >>> &field_lev, const amrex::BoxArray &my_ba2d, const amrex::DistributionMapping &my_dm)
Definition: ERF.cpp:3037
ERF(ERF &&) noexcept=delete
bool writeNow(double cur_time, const int nstep, const int plot_int, const double plot_per, const double dt_0, double &last_file_time)
Definition: ERF.cpp:4594
static constexpr int column_kextent_hi_sentinel
Definition: ERF.H:2150
static double startCPUTime
Definition: ERF.H:2426
void FillBdyCCVels(amrex::MultiFab &mf_cc_vel, amrex::Geometry &lev_geom)
Definition: ERF_FillBdyCCVels.cpp:17
AMREX_FORCE_INLINE int NumSampleLineLogs() noexcept
Definition: ERF.H:2395
static double last_plot2d_file_time_1
Definition: ERF.H:1802
static void print_tpls(std::ostream &)
Definition: ERF_ConsoleIO.cpp:148
amrex::Vector< amrex::Real > dz_min
Definition: ERF.H:2265
void HurricaneEyeTracker(const SolverChoice &solverChoice, const amrex::MultiFab &mf_cc_vel, int &hurricane_eye_i_glob, int &hurricane_eye_j_glob, amrex::Real &hurricane_eye_latitude, amrex::Real &hurricane_eye_longitude)
Definition: ERF_HurricaneDiagnostics.cpp:964
amrex::Vector< amrex::MultiFab > lagged_delta_rt
Definition: ERF.H:1494
amrex::Real plane_sampling_per
Definition: ERF.H:2519
std::string DataLogName(int i) const noexcept
The filename of the ith datalog file.
Definition: ERF.H:2554
void make_lsm_at_level(int lev, bool from_regrid=false, int source_lev=-1, bool source_is_raw_input=false, bool initialize_now=false)
Definition: ERF_MakeNewLevel.cpp:1835
std::string plot2d_file_2
Definition: ERF.H:1923
double m_plot3d_per_2
Definition: ERF.H:1934
static double bndry_output_planes_per
Definition: ERF.H:2175
amrex::Vector< std::unique_ptr< amrex::MultiFab > > thin_yforce
Definition: ERF.H:1791
void SetDriverAtmosToOceanStateContract(bool use_state_contract)
Definition: ERF_to_REMORA.cpp:257
void ErrorEst(int lev, amrex::TagBoxArray &tags, amrex::Real time, int ngrow) override
Definition: ERF_Tagging.cpp:34
bool cf_anelastic_stage1(int lev) const
Definition: ERF_CoarseFineFaces.cpp:852
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SFS_hfx3_lev
Definition: ERF.H:1619
amrex::Vector< amrex::Vector< amrex::Real > > h_w_subsid
Definition: ERF.H:2188
static void print_banner(MPI_Comm, std::ostream &)
Definition: ERF_ConsoleIO.cpp:65
void volWgtColumnSum(int lev, const amrex::MultiFab &mf, int comp, amrex::MultiFab &mf_2d, const amrex::MultiFab &dJ)
Definition: ERF_VolWgtSum.cpp:104
bool projection_uses_terrain_solver(int lev) const
Definition: ERF_PoissonSolve.cpp:86
amrex::Vector< std::unique_ptr< ShocDriver > > native_shoc_driver
Definition: ERF.H:1589
amrex::Vector< std::unique_ptr< std::fstream > > datalog
Definition: ERF.H:2538
std::string MakeFilename_EyeTracker_maxvel(int nstep)
Definition: ERF_TrackerOutput.cpp:69
BaseStateParams wrf_bsp
Definition: ERF.H:2162
amrex::Vector< ERFFillPatcher > FPr_v
Definition: ERF.H:1599
int cf_set_width
Definition: ERF.H:1596
void initializeEB()
Definition: ERF_EBInit.cpp:23
std::unique_ptr< amrex::MultiFab > wrf_MUB
Definition: ERF.H:2166
void setPlotVariables(const std::string &pp_plot_var_names, amrex::Vector< std::string > &plot_var_names)
Definition: ERF_Plotfile.cpp:20
amrex::Gpu::DeviceVector< amrex::Real > d_havg_temperature
Definition: ERF.H:2229
void post_timestep(int nstep, double time, double dt_lev)
Definition: ERF.cpp:657
std::unique_ptr< amrex::MultiFab > wrf_C1H
Definition: ERF.H:2164
std::string erfbdy_file
Definition: ERF.H:2123
void init_obs_nudging()
Definition: ERF.cpp:2565
static int last_plot2d_file_step_2
Definition: ERF.H:1797
int station_sampling_interval
Definition: ERF.H:2524
bool ibseb_after_radiation() const
Definition: ERF.H:943
bool init_Dirichlet_bc_data(const std::string input_file)
Definition: ERF_InitBCs.cpp:798
IBSEBParams ibseb_params
Definition: ERF.H:1699
bool cf_flux_history_active(int crse_lev) const
Definition: ERF_CFFluxHistory.cpp:65
const int timeprecision
Definition: ERF.H:1818
bool cf_zface_coarse_data(int lev, double time, bool conserved_rho, amrex::MultiFab &omega_t, amrex::MultiFab &rhou_g, amrex::MultiFab &rhov_g, amrex::Vector< int > &slab_box)
Definition: ERF_CoarseFineFaces.cpp:365
amrex::Vector< amrex::Vector< amrex::MultiFab * > > urban_data
Definition: ERF.H:1555
void setRecordDataInfo(int i, const std::string &filename)
Definition: ERF.H:2444
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SFS_hfx1_lev
Definition: ERF.H:1619
void canonicalizePlot3DVariables(amrex::Vector< std::string > &plot_var_names)
Definition: ERF_Plotfile.cpp:58
amrex::Vector< std::array< amrex::Real, 2 > > hurricane_eye_track_xy
Definition: ERF.H:285
void SurfaceDataInterpolation(const int nlevs, const double time, amrex::Vector< std::unique_ptr< amrex::MultiFab >> &z_phys_nd, bool regrid_forces_file_read)
Definition: ERF_SurfaceDataInterpolation.cpp:186
amrex::Vector< amrex::BoxArray > ba2d
Definition: ERF.H:2127
void make_ib_wall_face_masks_lev(int lev)
Definition: ERF_PoissonWallDist.cpp:735
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_extdir_vals
Definition: ERF.H:1763
void turbPert_update_automatic(int lev, double time)
Definition: ERF_InitTurbPert.cpp:147
void init_stations()
Definition: ERF_StationSampler.cpp:717
void init_from_input_sounding(int lev)
Definition: ERF_InitFromInputSounding.cpp:148
void erf_enforce_hse(int lev, amrex::MultiFab &dens, amrex::MultiFab &pres, amrex::MultiFab &pi, amrex::MultiFab &th, amrex::MultiFab &qv, std::unique_ptr< amrex::MultiFab > &z_cc)
Definition: ERF_Init1D.cpp:227
amrex::Vector< amrex::Vector< amrex::MultiFab > > gradp
Definition: ERF.H:1476
bool has_own_low_file(int lev) const
Definition: ERF.cpp:2606
std::string plot3d_file_1
Definition: ERF.H:1920
bool immersed_forcing_active(int lev) const noexcept
Definition: ERF.H:1160
eb_ const & get_eb(int lev) const noexcept
Definition: ERF.H:2575
amrex::Gpu::DeviceVector< amrex::Real > d_havg_qv
Definition: ERF.H:2231
amrex::Vector< std::unique_ptr< amrex::MultiFab > > qfx3_EB
Definition: ERF.H:1628
static bool plot_file_on_restart
Definition: ERF.H:1813
amrex::Vector< amrex::Vector< amrex::MultiFab > > bckgnd_state
Definition: ERF.H:299
amrex::Long m_warned_coupled_sst_nan
Definition: ERF.H:1187
static int mg_verbose
Definition: ERF.H:2069
double m_check_per
Definition: ERF.H:1950
void ReadParameters()
Definition: ERF.cpp:3459
static double sum_per
Definition: ERF.H:2077
static amrex::Vector< std::string > PlotFileVarNames(amrex::Vector< std::string > plot_var_names)
Definition: ERF_Plotfile.cpp:290
amrex::Vector< amrex::Vector< amrex::MultiFab > > forecast_state_interp
Definition: ERF.H:294
bool FindInitialEye(int lev, const amrex::MultiFab &cc_vel, const amrex::Real velmag_threshold, amrex::Real &eye_x, amrex::Real &eye_y)
Definition: ERF_RefineHurricane.cpp:31
void InitializeFromFile()
amrex::Vector< std::unique_ptr< ERFPhysBCFunct_cons > > physbcs_cons
Definition: ERF.H:1500
amrex::Vector< double > dt
Definition: ERF.H:1466
static double stop_time
Definition: ERF.H:1829
void advance_lsm(int lev, amrex::MultiFab &cons_in, amrex::MultiFab &xvel_in, amrex::MultiFab &yvel_in, const double &time, const double &dt_advance)
Definition: ERF_AdvanceLSM.cpp:50
amrex::Vector< std::unique_ptr< amrex::MultiFab > > mf_PSFC
Definition: ERF.H:2170
void flush_stations() const
Definition: ERF_StationSampler.cpp:1656
ERF()
Definition: ERF_Constructors.cpp:177
amrex::Vector< std::unique_ptr< amrex::MultiFab > > z_phys_nd_src
Definition: ERF.H:1686
amrex::Vector< std::unique_ptr< amrex::MultiFab > > detJ_cc
Definition: ERF.H:1637
void seb_surface_layer_fluxes(int lev, const amrex::MultiFab *&sens_flux, const amrex::MultiFab *&laten_flux) const
Definition: ERF.cpp:548
amrex::Vector< std::string > lsm_flux_name
Definition: ERF.H:1553
void cf_anelastic_record(int levc, int nrk)
Definition: ERF_CoarseFineFaces.cpp:809
amrex::Vector< std::unique_ptr< amrex::MultiFab > > z_phys_cc
Definition: ERF.H:1635
amrex::Vector< amrex::BoxArray > slope_report_grids
Definition: ERF.H:1859
amrex::Vector< std::unique_ptr< eb_ > > eb
Definition: ERF.H:2564
amrex::Vector< std::unique_ptr< amrex::MultiFab > > eddyDiffs_lev
Definition: ERF.H:1605
static SolverChoice solverChoice
Definition: ERF.H:2033
static constexpr int column_kextent_lo_sentinel
Definition: ERF.H:2149
amrex::Vector< std::unique_ptr< amrex::MultiFab > > hfx3_EB
Definition: ERF.H:1627
int mean_vars_time_reset_done
Definition: ERF.H:1486
amrex::Vector< int > m_cf_stage1
Definition: ERF.H:466
amrex::Vector< ERFFillPatcher > FPr_c
Definition: ERF.H:1597
void WriteGenericPlotfileHeaderWithTerrain(std::ostream &HeaderFile, int nlevels, const amrex::Vector< amrex::BoxArray > &bArray, const amrex::Vector< std::string > &varnames, const amrex::Vector< amrex::Geometry > &my_geom, double time, const amrex::Vector< int > &level_steps, const amrex::Vector< amrex::IntVect > &my_ref_ratio, const std::string &versionName, const std::string &levelPrefix, const std::string &mfPrefix) const
Definition: ERF_Plotfile.cpp:2340
void update_box_for_refinement(std::string &ref_prefix, int &lev_for_box, amrex::RealBox &real_box, const double time)
Definition: ERF_RefineBox.cpp:372
void advance_urban(int lev, amrex::MultiFab &cons_in, amrex::MultiFab &u_in, amrex::MultiFab &v_in, const amrex::Real &dt_advance, const amrex::Geometry &geom, const amrex::MultiFab *z_phys_nd, amrex::MultiFab &eddyDiffs_in)
Definition: ERF_AdvanceUrban.cpp:9
amrex::Vector< amrex::DistributionMapping > dm_chkfile
Definition: ERF.H:1886
bool plot_rad
Definition: ERF.H:1591
TwoStreamRadiation two_stream_rad
Definition: ERF.H:1582
amrex::Vector< amrex::Real > diffusive_fourier_warned
Definition: ERF.H:1857
amrex::Vector< std::array< amrex::Real, 2 > > hurricane_tracker_circle
Definition: ERF.H:289
static bool use_fft
Definition: ERF.H:2070
amrex::Vector< std::unique_ptr< amrex::MultiFab > > ib_wall_face13
Definition: ERF.H:1712
bool m_plot_face_vels
Definition: ERF.H:1937
amrex::Vector< std::array< amrex::Real, 2 > > hurricane_maxvel_vs_time
Definition: ERF.H:287
void turbPert_update(const int lev, const double dt)
Definition: ERF_InitTurbPert.cpp:454
void sum_derived_quantities(double time)
Definition: ERF_WriteScalarProfiles.cpp:217
amrex::Vector< amrex::MultiFab > base_state_new
Definition: ERF.H:1741
std::string plot3d_file_2
Definition: ERF.H:1921
void ibseb_set_two_stream_sun(int lev, amrex::Real time)
Definition: ERF_IBSEB.cpp:430
amrex::Vector< std::unique_ptr< amrex::MultiFab > > az
Definition: ERF.H:1684
int regrid_int
Definition: ERF.H:1873
void sample_stations(amrex::Real time)
Definition: ERF_StationSampler.cpp:1340
void RegisterCoarseMomentumCF(int levc, const amrex::MultiFab &xold, const amrex::MultiFab &xnew, const amrex::MultiFab &yold, const amrex::MultiFab &ynew, const amrex::Vector< double > ×)
Definition: ERF_CoarseFineFaces.cpp:573
bool write_erfbdy
Definition: ERF.H:2120
void solve_with_gmres(int lev, const amrex::Box &subdomain, amrex::MultiFab &rhs, amrex::MultiFab &p, amrex::Array< amrex::MultiFab, AMREX_SPACEDIM > &fluxes, amrex::MultiFab &ax_sub, amrex::MultiFab &ay_sub, amrex::MultiFab &az_sub, amrex::MultiFab &, amrex::MultiFab &znd_sub)
Definition: ERF_SolveWithGMRES.cpp:28
amrex::Vector< amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > > d_sponge_ptrs
Definition: ERF.H:2216
amrex::Vector< std::unique_ptr< amrex::MultiFab > > precip
Definition: ERF.H:1532
amrex::Vector< long > dt_mri_ratio
Definition: ERF.H:1467
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::MultiFab > > > Tau
Definition: ERF.H:1603
amrex::Vector< std::unique_ptr< amrex::MultiFab > > vel_t_avg
Definition: ERF.H:1479
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SFS_q2fx3_lev
Definition: ERF.H:1622
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::iMultiFab > > > lmask_lev
Definition: ERF.H:1611
void GetFillableAtmosToOceanLanes(bool state_contract, amrex::Vector< int > &can_fill) const
Definition: ERF_to_REMORA.cpp:300
AMREX_FORCE_INLINE int NumSamplePointLogs() noexcept
Definition: ERF.H:2381
amrex::Vector< amrex::Real > h_havg_pressure
Definition: ERF.H:2224
void update_diffusive_arrays(int lev, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm)
Definition: ERF_MakeNewArrays.cpp:742
bool regrid_level_0_on_restart_in_effect
Definition: ERF.H:1887
std::unique_ptr< amrex::MultiFab > wrf_PHB
Definition: ERF.H:2168
static int verbose
Definition: ERF.H:2068
amrex::Vector< amrex::Real > h_havg_qc
Definition: ERF.H:2226
amrex::Vector< std::unique_ptr< ERFPhysBCFunct_w > > physbcs_w
Definition: ERF.H:1503
static int nghost_eb_basic()
Definition: ERF.H:2593
void derive_diag_profiles_stag(double time, amrex::Gpu::HostVector< amrex::Real > &h_avg_u, amrex::Gpu::HostVector< amrex::Real > &h_avg_v, amrex::Gpu::HostVector< amrex::Real > &h_avg_w, amrex::Gpu::HostVector< amrex::Real > &h_avg_rho, amrex::Gpu::HostVector< amrex::Real > &h_avg_th, amrex::Gpu::HostVector< amrex::Real > &h_avg_ksgs, amrex::Gpu::HostVector< amrex::Real > &h_avg_Kmv, amrex::Gpu::HostVector< amrex::Real > &h_avg_Khv, amrex::Gpu::HostVector< amrex::Real > &h_avg_qv, amrex::Gpu::HostVector< amrex::Real > &h_avg_qc, amrex::Gpu::HostVector< amrex::Real > &h_avg_qr, amrex::Gpu::HostVector< amrex::Real > &h_avg_wqv, amrex::Gpu::HostVector< amrex::Real > &h_avg_wqc, amrex::Gpu::HostVector< amrex::Real > &h_avg_wqr, amrex::Gpu::HostVector< amrex::Real > &h_avg_qi, amrex::Gpu::HostVector< amrex::Real > &h_avg_qs, amrex::Gpu::HostVector< amrex::Real > &h_avg_qg, amrex::Gpu::HostVector< amrex::Real > &h_avg_uu, amrex::Gpu::HostVector< amrex::Real > &h_avg_uv, amrex::Gpu::HostVector< amrex::Real > &h_avg_uw, amrex::Gpu::HostVector< amrex::Real > &h_avg_vv, amrex::Gpu::HostVector< amrex::Real > &h_avg_vw, amrex::Gpu::HostVector< amrex::Real > &h_avg_ww, amrex::Gpu::HostVector< amrex::Real > &h_avg_uth, amrex::Gpu::HostVector< amrex::Real > &h_avg_vth, amrex::Gpu::HostVector< amrex::Real > &h_avg_wth, amrex::Gpu::HostVector< amrex::Real > &h_avg_thth, amrex::Gpu::HostVector< amrex::Real > &h_avg_ku, amrex::Gpu::HostVector< amrex::Real > &h_avg_kv, amrex::Gpu::HostVector< amrex::Real > &h_avg_kw, amrex::Gpu::HostVector< amrex::Real > &h_avg_p, amrex::Gpu::HostVector< amrex::Real > &h_avg_pu, amrex::Gpu::HostVector< amrex::Real > &h_avg_pv, amrex::Gpu::HostVector< amrex::Real > &h_avg_pw, amrex::Gpu::HostVector< amrex::Real > &h_avg_wthv, amrex::Gpu::HostVector< amrex::Real > &h_avg_thv)
Definition: ERF_Write1DProfiles_stag.cpp:361
void post_update(amrex::MultiFab &state_mf, double time, const amrex::Geometry &geom)
void AverageDownMoistStateTo(int crse_lev)
Conservation-preserving fine-to-coarse average of RhoTheta and the active moist conserved components ...
Definition: ERF_AverageDown.cpp:300
amrex::Vector< amrex::Array< amrex::MultiFab, 2 > > m_cf_step_flux
Definition: ERF.H:468
amrex::Vector< double > last_subvol_time
Definition: ERF.H:1811
void FillForecastStateMultiFabs(const int lev, const std::string &filename, const std::unique_ptr< amrex::MultiFab > &z_phys_nd, amrex::Vector< amrex::Vector< amrex::MultiFab >> &forecast_state)
Definition: ERF_WeatherDataInterpolation.cpp:72
amrex::Vector< std::unique_ptr< std::fstream > > samplelinelog
Definition: ERF.H:2549
amrex::Vector< std::unique_ptr< amrex::MultiFab > > terrain_blanking
Definition: ERF.H:1705
amrex::Vector< std::unique_ptr< amrex::MultiFab > > terrain_blanking_xface
Definition: ERF.H:1706
void setRecordSampleLineInfo(int i, const std::string &filename)
Definition: ERF.H:2502
std::unique_ptr< Microphysics > micro
Definition: ERF.H:1523
void surface_flux_sources(int lev, const amrex::MultiFab *&sens_flux, const amrex::MultiFab *&laten_flux) const
Definition: ERF_Plotfile2D.cpp:176
int m_plot2d_int_2
Definition: ERF.H:1928
amrex::Vector< amrex::MultiFab > base_state
Definition: ERF.H:1740
void fill_rhs(amrex::MultiFab &rhs_mf, const amrex::MultiFab &state_mf, double time, const amrex::Geometry &geom)
void GetEnsembleCheckpointName(int da_iter, int ens_no)
AMREX_FORCE_INLINE amrex::YAFluxRegister * getAdvFluxReg(int lev)
Definition: ERF.H:2338
int m_plot3d_int_1
Definition: ERF.H:1925
amrex::Vector< amrex::Real > h_havg_density
Definition: ERF.H:2222
amrex::Vector< int > m_skin_uncoupled_warned
Definition: ERF.H:575
static double last_plot2d_file_time_2
Definition: ERF.H:1803
amrex::Vector< std::unique_ptr< amrex::MultiFab > > z_phys_nd_new
Definition: ERF.H:1693
void create_background_state_for_ensemble(int lev, amrex::MultiFab &mf_cc_pert, amrex::MultiFab &cons_pert, amrex::MultiFab &xvel_pert, amrex::MultiFab &yvel_pert, amrex::MultiFab &zvel_pert)
Definition: ERF_InitForEnsemble.cpp:740
const amrex::Vector< std::string > derived_subvol_names
Definition: ERF.H:2029
amrex::Vector< std::array< amrex::Real, 2 > > hurricane_minpressure_vs_time
Definition: ERF.H:288
bool metgrid_retain_sfc
Definition: ERF.H:2114
void AverageDownTo(int crse_lev, int scomp, int ncomp, bool do_full_state_and_momenta=true)
Definition: ERF_AverageDown.cpp:36
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Qv_prim
Definition: ERF.H:1508
static int sum_interval
Definition: ERF.H:2075
static int pert_interval
Definition: ERF.H:2076
amrex::Real line_sampling_per
Definition: ERF.H:2518
void restart()
Definition: ERF.cpp:3213
void ibseb_report(int nstep, amrex::Real time)
Definition: ERF_IBSEB.cpp:568
void check_if_cf_mismatch(int lev)
Definition: ERF_MakeNewArrays.cpp:1387
amrex::Vector< double > t_avg_cnt
Definition: ERF.H:1480
static int last_plot3d_file_step_2
Definition: ERF.H:1795
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SFS_q1fx2_lev
Definition: ERF.H:1621
amrex::Vector< double > fixed_fast_dt
Definition: ERF.H:1868
amrex::IntVect & SampleLine(int i)
Definition: ERF.H:2414
void build_fine_mask(int lev, amrex::MultiFab &fine_mask)
Definition: ERF_VolWgtSum.cpp:159
void HurricaneMaxVelTracker(const amrex::Geometry &geom, const amrex::MultiFab &mf_cc_vel, const double &time)
Definition: ERF_HurricaneDiagnostics.cpp:690
amrex::Real station_sampling_per
Definition: ERF.H:2525
amrex::Real calday
Definition: ERF.H:1577
int file_name_digits
Definition: ERF.H:2085
amrex::Vector< amrex::MultiFab > rV_new
Definition: ERF.H:1515
std::string PlotFileName(int lev) const
static bool diffusive_dt_check
Definition: ERF.H:1851
void ComputeGlobalMinLocation(const SolverChoice &sc, const amrex::Geometry &geom, const amrex::Vector< amrex::MultiFab > &S_data, amrex::Real *d_val_min_ptr, int *d_i_min_ptr, int *d_j_min_ptr, amrex::Real &global_val_min, int &global_i_min, int &global_j_min, amrex::Real &hurricane_eye_latitude, amrex::Real &hurricane_eye_longitude)
Definition: ERF_HurricaneDiagnostics.cpp:79
void initialize_integrator(int lev, amrex::MultiFab &cons_mf, amrex::MultiFab &vel_mf)
Definition: ERF_MakeNewArrays.cpp:1318
amrex::Vector< std::unique_ptr< amrex::MultiFab > > thin_zforce
Definition: ERF.H:1792
amrex::Vector< std::string > plot3d_var_names_2
Definition: ERF.H:1955
void WeatherDataInterpolation(const int nlevs, const double time, amrex::Vector< std::unique_ptr< amrex::MultiFab >> &z_phys_nd, bool regrid_forces_file_read)
Definition: ERF_WeatherDataInterpolation.cpp:400
amrex::Vector< amrex::BCRec > domain_bcs_type
Definition: ERF.H:1756
TopographicShading topographic_radiation
Definition: ERF.H:1583
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Qr_prim
Definition: ERF.H:1509
void ibseb_check_refined_levels() const
Definition: ERF_IBSEB.cpp:218
void resolve_station_stencils()
Definition: ERF_StationSampler.cpp:1005
void apply_gaussian_smoothing_to_perturbations(const int lev, amrex::MultiFab &mf_cc_pert)
Definition: ERF_InitForEnsemble.cpp:119
std::string pp_prefix
Definition: ERF.H:1044
std::string SampleLineLogName(int i) const noexcept
The filename of the ith samplelinelog file.
Definition: ERF.H:2561
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::MultiFab > > > sst_lev
Definition: ERF.H:1609
amrex::Vector< amrex::TableData< amrex::Real, 1 > > t_plane_avg
Definition: ERF.H:1415
amrex::Vector< std::string > plot2d_var_names_1
Definition: ERF.H:1956
void init_phys_bcs(bool &read_prim_theta)
Definition: ERF_InitBCs.cpp:26
amrex::Vector< std::unique_ptr< amrex::MultiFab > > thin_xforce
Definition: ERF.H:1790
AMREX_FORCE_INLINE int NumSamplePoints() noexcept
Definition: ERF.H:2408
static bool grids_are_split_in_z(const amrex::BoxArray &ba)
Definition: ERF_MakeNewArrays.cpp:655
bool metgrid_use_sfc
Definition: ERF.H:2113
amrex::Vector< std::unique_ptr< amrex::YAFluxRegister > > advflux_reg
Definition: ERF.H:1751
void ComputeAndWriteEnsemblePerturbations(const int da_iter)
void setPlotVariables2D(const std::string &pp_plot_var_names, amrex::Vector< std::string > &plot_var_names)
Definition: ERF_Plotfile2D.cpp:118
void interp_psfc_from_coarse(int lev)
Definition: ERF.cpp:2695
void init_custom(int lev)
Definition: ERF_InitCustomPertState.cpp:26
amrex::Vector< std::unique_ptr< IRadiation > > rad
Definition: ERF.H:1567
std::unique_ptr< ProblemBase > prob
Definition: ERF.H:1438
amrex::Vector< int > num_files_at_level
Definition: ERF.H:1441
void ibseb_advance(int lev, amrex::Real time, amrex::Real dt_lev, const amrex::MultiFab &cons, const amrex::MultiFab &xvel, const amrex::MultiFab &yvel, const amrex::MultiFab &zvel)
Definition: ERF_IBSEB.cpp:471
static double last_plot3d_file_time_2
Definition: ERF.H:1801
void init_bcs()
Definition: ERF_InitBCs.cpp:320
int profile_int
Definition: ERF.H:1944
erf_cloud_chamber::Config cloud_chamber_config
Definition: ERF.H:1530
bool metgrid_debug_quiescent
Definition: ERF.H:2105
amrex::Vector< std::unique_ptr< ERFPhysBCFunct_u > > physbcs_u
Definition: ERF.H:1501
bool destag_profiles
Definition: ERF.H:1945
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > stretched_dz_d
Definition: ERF.H:1738
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > th_bc_data
Definition: ERF.H:1411
void FillPlot2DVars(int lev, const amrex::Vector< std::string > &plot_var_names, const amrex::Vector< std::string > &varnames, const amrex::Vector< plotfile2d::Plotfile2DOutputDescriptor > &output_descriptors, amrex::MultiFab &mf_dst, int ncomp_mf)
Definition: ERF_Plotfile2D.cpp:213
std::string DerDataLogName(int i) const noexcept
Definition: ERF.H:2555
void make_terrain_blanking(int lev)
Definition: ERF_MakeNewArrays.cpp:1214
void compute_max_pressure_gradient_diagnostic(int lev)
Definition: ERF_Diagnostics.cpp:14
void remake_zphys(int lev, amrex::Real time, std::unique_ptr< amrex::MultiFab > &temp_zphys_nd)
Definition: ERF_MakeNewArrays.cpp:1096
int m_check_int
Definition: ERF.H:1949
void ReadVelsOnlyFromCheckpointFile(int lev_to_fill, std::string &chkfile)
Definition: ERF_Checkpoint.cpp:2296
void set_surface_layer_skin(int lev)
Definition: ERF.cpp:439
amrex::Vector< std::unique_ptr< amrex::MultiFab > > terrain_blanking_zface
Definition: ERF.H:1708
void appendPlot3DVariables(const amrex::Vector< std::string > &plot_var_names, amrex::Vector< std::string > &a_plot_var_names)
Definition: ERF_Plotfile.cpp:220
std::unique_ptr< amrex::iMultiFab > m_coupled_sst_valid
Definition: ERF.H:1176
static double last_plot3d_file_time_1
Definition: ERF.H:1800
double m_plot2d_per_2
Definition: ERF.H:1936
amrex::Vector< amrex::MultiFab > surface_state_1
Definition: ERF.H:295
void average_down_mass_flux(int crse_lev)
Definition: ERF_CoarseFineFaces.cpp:605
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SFS_diss_lev
Definition: ERF.H:1620
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > d_sinesq_ptrs
Definition: ERF.H:2219
amrex::Vector< amrex::MultiFab > rU_old
Definition: ERF.H:1512
static amrex::Vector< std::string > nc_low_file_at_level
Definition: ERF.H:2102
amrex::Vector< std::unique_ptr< InputSoundingData > > input_sounding_data_fine
Definition: ERF.H:1402
bool HasRadiation() const
Definition: ERF.H:197
void ibseb_check_sun_matches_two_stream() const
Definition: ERF_IBSEB.cpp:300
AMREX_FORCE_INLINE int NumSampleLines() noexcept
Definition: ERF.H:2421
amrex::Array< bool, AMREX_SPACEDIM *2 > m_bc_nonreflecting
Definition: ERF.H:1775
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Theta_prim
Definition: ERF.H:1507
static double getCPUTime()
Definition: ERF.H:2430
void write_1D_profiles(double time)
Definition: ERF_Write1DProfiles.cpp:22
void convert_legacy_precip_accumulations(int lev)
Definition: ERF_Checkpoint.cpp:956
amrex::Vector< std::unique_ptr< amrex::MultiFab > > z_t_rk
Definition: ERF.H:1696
void WriteVTKPolyline(const std::string &filename, const amrex::Vector< std::array< amrex::Real, 2 >> &points_xy)
Definition: ERF_TrackerOutput.cpp:111
static int check_for_nans
Definition: ERF.H:2072
void make_subdomains(const amrex::BoxList &ba, amrex::Vector< amrex::BoxArray > &bins)
Group a list of boxes into subdomains based on adjacency.
Definition: ERF_MakeSubdomains.cpp:11
std::string MakeVTKFilename(int nstep)
Definition: ERF_TrackerOutput.cpp:14
void initRayleigh_at_level(const int &lev)
Initialize Rayleigh damping profiles at a level.
Definition: ERF_InitRayleigh.cpp:16
Urban urban
Definition: ERF.H:1550
void sample_points(int ifile, int lev, double time, amrex::IntVect cell, amrex::MultiFab &mf)
Definition: ERF_WriteScalarProfiles.cpp:587
void appendPlotVariables(const std::string &pp_plot_var_names, amrex::Vector< std::string > &plot_var_names)
Definition: ERF_Plotfile.cpp:184
void read_box_for_refinement(std::string &ref_prefix, int &lev_for_box, amrex::RealBox &real_box)
Definition: ERF_RefineBox.cpp:13
amrex::Vector< int > rad_interp_from_coarse_pending
Definition: ERF.H:1461
int nvars_erfbdy
Definition: ERF.H:2124
amrex::Vector< std::unique_ptr< ERFPhysBCFunct_v > > physbcs_v
Definition: ERF.H:1502
void SetDirsForPlotfilesAndCheckpointsForDA(const int da_iter, const int ens_no)
bool cf_interp_mass_flux(int lev) const
Definition: ERF_CoarseFineFaces.cpp:528
amrex::Real m_warned_coupled_sst_min
Definition: ERF.H:1185
amrex::Vector< double > t_old
Definition: ERF.H:1465
amrex::Vector< std::string > tot_e_datalogname
Definition: ERF.H:2543
void FillIntermediatePatch(int lev, double time, const amrex::Vector< amrex::MultiFab * > &mfs_vel, const amrex::Vector< amrex::MultiFab * > &mfs_mom, int ng_cons, int ng_vel, bool cons_only, int icomp_cons, int ncomp_cons)
Definition: ERF_FillIntermediatePatch.cpp:29
static int output_bndry_planes
Definition: ERF.H:2173
void project_velocity_tb(int lev, double dt, amrex::Vector< amrex::MultiFab > &vars)
Definition: ERF_PoissonSolve_tb.cpp:35
amrex::Vector< std::unique_ptr< amrex::MultiFab > > ib_wall_face23
Definition: ERF.H:1713
bool m_seb_surface_layer_checked
check_seb_surface_layer has run
Definition: ERF.H:571
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > d_v_geos
Definition: ERF.H:2195
void update_terrain_arrays(int lev)
Definition: ERF_MakeNewArrays.cpp:1299
bool HasCloudWater() const
Definition: ERF.H:211
static std::string nc_bdy_file
Definition: ERF.H:2093
bool metgrid_interp_theta
Definition: ERF.H:2110
static amrex::Vector< amrex::Vector< std::string > > nc_init_file
Definition: ERF.H:2089
void cf_anelastic_stage_registration(int lev, int nrk)
Definition: ERF_CoarseFineFaces.cpp:867
bool read_checkpoint_mf_if_present(amrex::MultiFab &dst, const std::string &mf_name, int lev, int scomp, int dcomp, int ncomp, const amrex::IntVect &dst_ghosts, bool src_ghosts=false)
Definition: ERF_Checkpoint.cpp:929
static int input_bndry_planes
Definition: ERF.H:2179
TwoStreamRadiation::OrbitalCache ibseb_orbit
Orbit of the year for erf.ibseb.sun_mode = two_stream.
Definition: ERF.H:1701
LargeScaleForcingData lsf
Definition: ERF.H:1559
amrex::Gpu::DeviceVector< amrex::Real > d_havg_qc
Definition: ERF.H:2232
amrex::Real cloud_fraction(double time)
Definition: ERF_WriteScalarProfiles.cpp:507
void AverageDown()
Definition: ERF_AverageDown.cpp:16
std::set< std::string > user_specified_inputs
Definition: ERF.H:1052
amrex::Vector< amrex::Vector< amrex::Real > > h_v_geos
Definition: ERF.H:2194
void FillPatchFineLevel(int lev, double time, const amrex::Vector< amrex::MultiFab * > &mfs_vel, const amrex::Vector< amrex::MultiFab * > &mfs_mom, bool fillset=true, bool cons_only=false)
Definition: ERF_FillPatch.cpp:23
bool regrid_level_0_on_restart
Definition: ERF.H:1877
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Lwave_onegrid
Definition: ERF.H:1747
void advance_microphysics(int lev, amrex::MultiFab &cons_in, const double &dt_advance, const int &iteration, const double &time)
Definition: ERF_AdvanceMicrophysics.cpp:122
InputSoundingData input_sounding_data
Definition: ERF.H:1398
void write_1D_profiles_stag(double time)
Definition: ERF_Write1DProfiles_stag.cpp:30
amrex::Vector< amrex::Vector< amrex::Real > > h_sinesq_ptrs
Definition: ERF.H:2211
void create_random_perturbations(const int lev, amrex::MultiFab &mf_cc_pert)
Definition: ERF_InitForEnsemble.cpp:35
void Write2DPlotFile(int which, PlotFileType plotfile_type, amrex::Vector< std::string > plot_var_names)
Definition: ERF_Plotfile2D.cpp:877
amrex::Gpu::DeviceVector< amrex::Real > d_havg_density
Definition: ERF.H:2228
void cf_flux_history_targets(int lev, amrex::Real t_beg, amrex::Real t_end)
Definition: ERF_CFFluxHistory.cpp:219
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rhotheta_src
Definition: ERF.H:2185
void HurricaneEyeTrackerNotInitial(const SolverChoice &sc, const amrex::Geometry &geom, const amrex::MultiFab &mf_cc_vel, const amrex::Vector< amrex::MultiFab > &S_data, int &hurricane_eye_i_glob, int &hurricane_eye_j_glob, amrex::Real &hurricane_eye_latitude, amrex::Real &hurricane_eye_longitude)
Definition: ERF_HurricaneDiagnostics.cpp:378
void init_from_hse(int lev)
Definition: ERF_InitFromHSE.cpp:32
CFFluxHistory & cf_flux_history(int lev)
Definition: ERF_CFFluxHistory.cpp:85
const std::string datetime_format
Definition: ERF.H:1832
void FillSetMomentaCF(int lev, double time, amrex::MultiFab &xmom, amrex::MultiFab &ymom, amrex::MultiFab &zmom)
Definition: ERF_CoarseFineFaces.cpp:1032
void define_column_kextent(int lev, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm)
Definition: ERF_MakeNewArrays.cpp:679
void check_mesh_type(int lev)
Definition: ERF.cpp:4852
void FillSetHorizontalMomentaCF(int lev, double time, amrex::MultiFab &xmom, amrex::MultiFab &ymom)
Definition: ERF_CoarseFineFaces.cpp:1006
erf_provenance::ExecutionProvenance execution_provenance
Definition: ERF.H:1839
const amrex::MultiFab & station_ground(int lev)
Definition: ERF_StationSampler.cpp:1628
int metgrid_force_sfc_k
Definition: ERF.H:2117
void setSubVolVariables(const std::string &pp_subvol_var_names, amrex::Vector< std::string > &subvol_var_names)
Definition: ERF_WriteSubvolume.cpp:13
static int ng_pres_hse
Definition: ERF.H:2182
bool real_extrap_w
Definition: ERF.H:2095
void project_momenta(int lev, double l_time, double l_dt, amrex::Vector< amrex::MultiFab > &vars, bool apply_if_drag)
Definition: ERF_PoissonSolve.cpp:176
static amrex::Real cfl
Definition: ERF.H:1842
void compute_max_buoyancy_gradp_diagnostic(int lev)
Definition: ERF_Diagnostics.cpp:307
amrex::Vector< std::unique_ptr< amrex::MultiFab > > fine_mask
Definition: ERF.H:1735
amrex::Gpu::DeviceVector< amrex::BCRec > domain_bcs_type_d
Definition: ERF.H:1757
amrex::Vector< double > t_mean_cnt
Definition: ERF.H:1484
amrex::Vector< std::unique_ptr< ForestDrag > > m_forest_drag
Definition: ERF.H:2239
const int datwidth
Definition: ERF.H:1816
amrex::Vector< amrex::BoxArray > ba1d
Definition: ERF.H:2126
InputSpongeData input_sponge_data
Definition: ERF.H:1405
amrex::Vector< amrex::Vector< amrex::BoxArray > > subdomains
Definition: ERF.H:2263
void check_state_for_nans(amrex::MultiFab const &S)
Definition: ERF.cpp:4615
bool diffusive_first_call
Definition: ERF.H:1855
std::string restart_chkfile
Definition: ERF.H:1835
bool metgrid_use_below_sfc
Definition: ERF.H:2112
amrex::Vector< std::string > sampleptlogname
Definition: ERF.H:2546
amrex::Vector< amrex::MultiFab > m_cf_step_zflux
Definition: ERF.H:470
void ibseb_check_two_stream_provider() const
Definition: ERF_IBSEB.cpp:375
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > xvel_bc_data
Definition: ERF.H:1408
void InitData_pre()
Definition: ERF.cpp:945
amrex::IntVect & SamplePoint(int i)
Definition: ERF.H:2401
bool use_datetime
Definition: ERF.H:1831
amrex::Vector< std::array< amrex::Real, 2 > > hurricane_track_xy
Definition: ERF.H:284
amrex::Vector< amrex::Vector< amrex::Real > > h_u_geos
Definition: ERF.H:2191
void read_checkpoint_mf(amrex::MultiFab &dst, const std::string &mf_name, int lev, int scomp, int dcomp, int ncomp, const amrex::IntVect &dst_ghosts, bool src_ghosts=false)
Definition: ERF_Checkpoint.cpp:917
void InitializeLevelFromData(int lev, const amrex::MultiFab &initial_data)
std::string subvol_file
Definition: ERF.H:1924
int rad_datalog_int
Definition: ERF.H:1592
void make_wall_dist(int lev)
Definition: ERF_PoissonWallDist.cpp:65
amrex::Vector< std::string > datalogname
Definition: ERF.H:2541
void make_if_projection_sigma(int lev, amrex::Real l_dt, amrex::Array< amrex::MultiFab, AMREX_SPACEDIM > &sigma)
Definition: ERF_ImmersedProjection.cpp:43
void initHSE()
Initialize HSE.
Definition: ERF_Init1D.cpp:207
static double dt_max
Definition: ERF.H:1847
amrex::Vector< amrex::MultiFab > surface_state_2
Definition: ERF.H:296
amrex::Vector< std::unique_ptr< amrex::MultiFab > > ax
Definition: ERF.H:1638
amrex::Vector< std::unique_ptr< amrex::MultiFab > > z_phys_nd
Definition: ERF.H:1634
void MakeDiagnosticAverage(amrex::Vector< amrex::Real > &h_havg, amrex::MultiFab &S, int n)
Definition: ERF.cpp:4493
std::string MakeFilename_EyeTracker_surface_fluxes(int nstep)
Definition: ERF_TrackerOutput.cpp:97
amrex::Real metgrid_proximity
Definition: ERF.H:2115
amrex::Real volWgtSumMF(int lev, const amrex::MultiFab &mf, int comp, const amrex::MultiFab &dJ, const amrex::MultiFab &mfx, const amrex::MultiFab &mfy, bool finemask, bool local=true)
Definition: ERF_VolWgtSum.cpp:22
void setRecordDerDataInfo(int i, const std::string &filename)
Definition: ERF.H:2457
amrex::Vector< amrex::Real > h_havg_temperature
Definition: ERF.H:2223
amrex::Vector< std::unique_ptr< std::fstream > > sampleptlog
Definition: ERF.H:2545
void poisson_wall_dist(int lev)
Definition: ERF_PoissonWallDist.cpp:103
amrex::Vector< amrex::MultiFab > mfvec_surface_fluxes
Definition: ERF.H:301
void write_bndry_planes(int step, double time)
Definition: ERF.cpp:636
amrex::Vector< std::array< amrex::Real, 2 > > hurricane_eye_track_latlon
Definition: ERF.H:286
bool m_checked_coupled_sst
Definition: ERF.H:1182
amrex::Vector< std::unique_ptr< amrex::MultiFab > > detJ_cc_src
Definition: ERF.H:1688
amrex::Gpu::DeviceVector< amrex::Real > d_havg_pressure
Definition: ERF.H:2230
static bool is_it_time_for_action(int nstep, double time, double dt, int action_interval, double action_per)
Definition: ERF_WriteScalarProfiles.cpp:717
std::string plot2d_file_1
Definition: ERF.H:1922
void Advance(int lev, double time, double dt_lev, int iteration, int ncycle)
Definition: ERF_Advance.cpp:22
const amrex::iMultiFab & get_cf_implicit_mask(int lev, int which, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm, const amrex::IntVect &ng)
Definition: ERF_FillIntermediatePatch.cpp:319
void ResetIntervalMeans()
Definition: ERF.cpp:389
amrex::Vector< std::unique_ptr< amrex::MultiFab > > ib_wall_face33
Definition: ERF.H:1715
amrex::Vector< amrex::TableData< amrex::Real, 1 > > r_plane_avg
Definition: ERF.H:1414
amrex::Vector< std::string > der_datalogname
Definition: ERF.H:2542
void ComputeDiffusiveRates(int lev, amrex::Real &rate_mom, amrex::Real &rate_scal) const
Definition: ERF_ComputeTimestep.cpp:173
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SmnSmn_lev
Definition: ERF.H:1606
const amrex::Vector< std::string > derived_names
Definition: ERF.H:1965
void fill_seb_from_coarse(int lev)
Fill a newly built level's two-stream SEB state from its parent.
Definition: ERF.cpp:573
void sum_integrated_quantities(double time)
Definition: ERF_WriteScalarProfiles.cpp:22
std::string MakeVTKFilename_TrackerCircle(int nstep)
Definition: ERF_TrackerOutput.cpp:27
amrex::Vector< std::unique_ptr< amrex::MultiFab > > ay_src
Definition: ERF.H:1690
std::unique_ptr< StationSampler > station_sampler
Definition: ERF.H:2526
void ComputeDt(int step=-1, double cur_time_d=0.0)
Definition: ERF_ComputeTimestep.cpp:26
AMREX_FORCE_INLINE std::ostream & DataLog(int i)
Definition: ERF.H:2345
std::string MakeVTKFilename_EyeTracker_xy(int nstep)
Definition: ERF_TrackerOutput.cpp:41
amrex::Vector< double > m_subvol_per
Definition: ERF.H:1931
amrex::Vector< int > nsubsteps
Definition: ERF.H:1445
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > yflux_imask
Definition: ERF.H:1785
amrex::Vector< amrex::MultiFab > rW_new
Definition: ERF.H:1517
amrex::Vector< amrex::MultiFab > weather_forecast_data_2
Definition: ERF.H:291
amrex::Vector< std::unique_ptr< amrex::MultiFab > > lon_m
Definition: ERF.H:1392
std::unique_ptr< WriteBndryPlanes > m_w2d
Definition: ERF.H:2236
AMREX_FORCE_INLINE std::ostream & SampleLineLog(int i)
Definition: ERF.H:2388
void HurricaneMinPressureTracker(MoistureType moisture_type, const amrex::Geometry &geom, const amrex::MultiFab &mf_cons_var, const double &time)
Definition: ERF_HurricaneDiagnostics.cpp:754
amrex::Vector< amrex::Vector< amrex::MultiFab * > > lsm_flux
Definition: ERF.H:1554
double EvolveOneStep(double time, double dt_request)
Definition: ERF_to_REMORA.cpp:221
bool use_erfbdy
Definition: ERF.H:2121
amrex::Vector< std::unique_ptr< SurfaceLayer > > m_SurfaceLayer
Definition: ERF.H:2238
const LargeScaleForcingData & lsf_at_level(int lev)
Definition: ERF_InitFromInputSounding.cpp:123
amrex::Vector< std::string > plot3d_var_names_1
Definition: ERF.H:1954
std::string SamplePointLogName(int i) const noexcept
The filename of the ith sampleptlog file.
Definition: ERF.H:2558
void InitData_post()
Definition: ERF.cpp:1050
void init_ibseb()
Definition: ERF_IBSEB.cpp:50
void refinement_criteria_setup()
Definition: ERF_Tagging.cpp:511
double estTimeStep(int lev, long &dt_fast_ratio) const
Definition: ERF_ComputeTimestep.cpp:319
static int nghost_eb_volume()
Definition: ERF.H:2597
bool metgrid_debug_dry
Definition: ERF.H:2107
static AMREX_FORCE_INLINE int ComputeGhostCells(const SolverChoice &sc)
Definition: ERF.H:2269
static int bndry_output_planes_interval
Definition: ERF.H:2174
void init_geo_wind_profile(const std::string input_file, amrex::Vector< amrex::Real > &u_geos, amrex::Gpu::DeviceVector< amrex::Real > &u_geos_d, amrex::Vector< amrex::Real > &v_geos, amrex::Gpu::DeviceVector< amrex::Real > &v_geos_d, const amrex::Geometry &lgeom, const amrex::Vector< amrex::Real > &zlev_stag)
Definition: ERF_InitGeowind.cpp:21
void ERF_shared()
Definition: ERF_Constructors.cpp:208
amrex::Vector< std::string > plot2d_var_names_2
Definition: ERF.H:1957
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::MultiFab > > > Tau_corr
Definition: ERF.H:1604
void FillPatchCrseLevel(int lev, double time, const amrex::Vector< amrex::MultiFab * > &mfs_vel, bool cons_only=false)
Definition: ERF_FillPatch.cpp:260
void WriteSubvolume(int isub, amrex::Vector< std::string > subvol_var_names)
Definition: ERF_WriteSubvolume.cpp:113
const InputSoundingData & sounding_at_level(int lev)
Definition: ERF_InitFromInputSounding.cpp:89
void initializeFire(const int &)
Definition: ERF.cpp:3129
amrex::Vector< std::array< amrex::Real, 2 > > hurricane_surface_fluxes_vs_time
Definition: ERF.H:290
void sum_energy_quantities(double time)
Definition: ERF_WriteScalarProfiles.cpp:356
void make_flux_register(int lev)
Definition: ERF_MakeNewArrays.cpp:728
static int nghost_eb_full()
Definition: ERF.H:2600
void RemakeLevel(int lev, amrex::Real time, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm) override
Definition: ERF_MakeNewLevel.cpp:994
void HurricaneSurfaceFluxesTracker(const int &hurricane_eye_i_glob, const int &hurricane_eye_j_glob, const amrex::Real &hurricane_eye_latitude, const amrex::Real &hurricane_eye_longitude, const amrex::Real time)
Definition: ERF_HurricaneDiagnostics.cpp:817
static void GotoNextLine(std::istream &is)
Definition: ERF_Checkpoint.cpp:144
void MakeNewLevelFromScratch(int lev, amrex::Real time, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm) override
Definition: ERF_MakeNewLevel.cpp:71
void init_stuff(int lev, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm, amrex::Vector< amrex::MultiFab > &lev_new, amrex::Vector< amrex::MultiFab > &lev_old, amrex::MultiFab &tmp_base_state, std::unique_ptr< amrex::MultiFab > &tmp_zphys_nd)
Definition: ERF_MakeNewArrays.cpp:51
amrex::Vector< amrex::MultiFab > zmom_crse_rhs
Definition: ERF.H:1521
void fill_surface_nodes(int lev, amrex::MultiFab &znd_surf)
Definition: ERF_PoissonWallDist.cpp:687
void advance_radiation(int lev, amrex::MultiFab &cons_in, const double &dt_advance)
Advance radiation diagnostics and heating rates for one time step.
Definition: ERF_AdvanceRadiation.cpp:55
bool metgrid_debug_isothermal
Definition: ERF.H:2106
void PerformDataAssimilation(int da_iter)
amrex::Vector< std::string > lsm_data_name
Definition: ERF.H:1551
void turbPert_update_uniform_wind(int lev, double time)
Definition: ERF_InitTurbPert.cpp:410
std::unique_ptr< erf_sbm::SBMStateManager > sbm_state_manager
Definition: ERF.H:1524
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rhoqt_src
Definition: ERF.H:2186
void initSponge()
Initialize sponge profiles.
Definition: ERF_InitSponge.cpp:35
std::map< int, CFZFaceLayout > m_cf_zface_cache
Definition: ERF.H:1656
std::unique_ptr< PlaneSampler > plane_sampler
Definition: ERF.H:2521
void check_for_low_temp(amrex::MultiFab &S)
Definition: ERF.cpp:4697
amrex::Vector< std::unique_ptr< std::fstream > > der_datalog
Definition: ERF.H:2539
static amrex::Vector< amrex::Vector< int > > have_read_nc_init_file
Definition: ERF.H:2090
amrex::Vector< std::unique_ptr< std::fstream > > tot_e_datalog
Definition: ERF.H:2540
amrex::Vector< std::unique_ptr< amrex::MultiFab > > sinPhi_m
Definition: ERF.H:1394
amrex::Real ibseb_bulk_richardson_height(int lev, const amrex::MultiFab &cons, const amrex::MultiFab &xvel, const amrex::MultiFab &yvel)
Definition: ERF_IBSEB.cpp:605
static double previousCPUTimeUsed
Definition: ERF.H:2427
void fill_from_bndryregs(int lev, const amrex::Vector< amrex::MultiFab * > &mfs, double time, bool cons_only=false)
Definition: ERF_BoundaryConditionsBndryReg.cpp:44
void writeJobInfo(const std::string &dir, erf_provenance::ArtifactType artifact_type, int artifact_step, double artifact_time_seconds) const
Definition: ERF_WriteJobInfo.cpp:16
amrex::Vector< std::unique_ptr< amrex::MultiFab > > ib_wall_height
Definition: ERF.H:1726
bool m_driver_has_atm2ocn_coupling
Definition: ERF.H:1166
double m_plot3d_per_1
Definition: ERF.H:1933
int real_width
Definition: ERF.H:2094
void MakeNewLevelFromCoarse(int lev, amrex::Real time, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm) override
Definition: ERF_MakeNewLevel.cpp:521
amrex::Vector< int > last_subvol_step
Definition: ERF.H:1810
amrex::Gpu::DeviceVector< amrex::Real > make_sub_dz(int lev, const amrex::Box &subdomain)
Definition: ERF_SolveWithGMRES.cpp:109
amrex::Vector< std::unique_ptr< amrex::MultiFab > > ax_src
Definition: ERF.H:1689
void derive_forcing_profiles_stag(amrex::Gpu::HostVector< amrex::Real > &h_avg_ttend, amrex::Gpu::HostVector< amrex::Real > &h_avg_qtend, amrex::Gpu::HostVector< amrex::Real > &h_avg_wsub, amrex::Gpu::HostVector< amrex::Real > &h_avg_thtend, amrex::Gpu::HostVector< amrex::Real > &h_avg_qhtend, amrex::Gpu::HostVector< amrex::Real > &h_avg_tvtend, amrex::Gpu::HostVector< amrex::Real > &h_avg_qvtend, amrex::Gpu::HostVector< amrex::Real > &h_avg_qcvtend, amrex::Gpu::HostVector< amrex::Real > &h_avg_tnudge, amrex::Gpu::HostVector< amrex::Real > &h_avg_qnudge, amrex::Gpu::HostVector< amrex::Real > &h_avg_unudge, amrex::Gpu::HostVector< amrex::Real > &h_avg_vnudge)
Definition: ERF_Write1DProfiles_stag.cpp:811
bool has_nonunit_mapfac(int lev) const
Definition: ERF_PoissonSolve.cpp:69
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::MultiFab > > > urb_frac_lev
Definition: ERF.H:1616
amrex::Vector< std::unique_ptr< amrex::MultiFab > > z_phys_cc_src
Definition: ERF.H:1687
void input_sponge(int lev)
Definition: ERF_InitSponge.cpp:17
amrex::Vector< std::unique_ptr< amrex::MultiFab > > nudge_data
Definition: ERF.H:1564
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > d_u_geos
Definition: ERF.H:2192
bool m_driver_uses_two_way_coupling
Definition: ERF.H:1167
void Define_ERFFillPatchers(int lev)
Definition: ERF.cpp:4568
AMREX_FORCE_INLINE int NumDataLogs() noexcept
Definition: ERF.H:2359
static PlotFileType plotfile3d_type_2
Definition: ERF.H:2081
void setRecordEnergyDataInfo(int i, const std::string &filename)
Definition: ERF.H:2470
TurbulentPerturbation turbPert
Definition: ERF.H:2036
amrex::Vector< amrex::MultiFab > rW_old
Definition: ERF.H:1516
amrex::Vector< double > fixed_dt
Definition: ERF.H:1867
void ResetIntervalMeansAfter3DPlotfileBatch(int plotfiles_written, bool interval_diagnostic_consumed)
Definition: ERF.cpp:375
amrex::Vector< amrex::Vector< amrex::MultiFab > > forecast_state_2
Definition: ERF.H:293
bool has_own_init_file(int lev) const
Definition: ERF.cpp:2595
amrex::Vector< std::unique_ptr< amrex::MultiFab > > station_ib_ground
Definition: ERF.H:2532
void check_for_negative_theta(amrex::MultiFab &S)
Definition: ERF.cpp:4777
void ImposeBCsOnPhi(int lev, amrex::MultiFab &phi, const amrex::Box &subdomain)
Definition: ERF_ImposeBCsOnPhi.cpp:19
void Interp2DArrays(int lev, const amrex::BoxArray &my_ba2d, const amrex::DistributionMapping &my_dm)
Definition: ERF.cpp:2842
amrex::Vector< std::unique_ptr< amrex::MultiFab > > lsf_data
Definition: ERF.H:1565
void ClearLevel(int lev) override
Definition: ERF_MakeNewLevel.cpp:1725
std::string MakeFilename_EyeTracker_minpressure(int nstep)
Definition: ERF_TrackerOutput.cpp:83
amrex::Vector< std::unique_ptr< amrex::MultiFab > > ib_wall_ktarget
Definition: ERF.H:1722
std::unique_ptr< amrex::MultiFab > wrf_RDNW
Definition: ERF.H:2167
static double dt_max_initial
Definition: ERF.H:1846
static PlotFileType plotfile2d_type_2
Definition: ERF.H:2083
int plane_sampling_interval
Definition: ERF.H:2517
void compute_divergence(int lev, amrex::MultiFab &rhs, amrex::Array< amrex::MultiFab const *, AMREX_SPACEDIM > rho0_u_const, amrex::MultiFab const &mf_mx, amrex::MultiFab const &mf_my, amrex::MultiFab const &mf_vx, amrex::MultiFab const &mf_uy, amrex::MultiFab const &ax_in, amrex::MultiFab const &ay_in, amrex::MultiFab const &dJ_in, amrex::Geometry const &geom_at_lev)
Definition: ERF_ComputeDivergence.cpp:18
static amrex::Vector< amrex::AMRErrorTag > ref_tags
Definition: ERF.H:2253
void make_physbcs(int lev)
Definition: ERF_MakeNewArrays.cpp:1341
amrex::Vector< std::unique_ptr< amrex::MultiFab > > terrain_blanking_yface
Definition: ERF.H:1707
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > d_w_subsid
Definition: ERF.H:2189
amrex::Vector< CFFluxHistory > m_cf_flux_hist
Definition: ERF.H:1676
amrex::Vector< ERFFillPatcher > FPr_w
Definition: ERF.H:1600
void HurricaneEyeTrackerInitial(const SolverChoice &sc, const amrex::Geometry &geom, const amrex::Vector< amrex::MultiFab > &S_data, int &hurricane_eye_i_glob, int &hurricane_eye_j_glob, amrex::Real &hurricane_eye_latitude, amrex::Real &hurricane_eye_longitude)
Definition: ERF_HurricaneDiagnostics.cpp:233
void resolve_station_positions()
Definition: ERF_StationSampler.cpp:914
std::unique_ptr< erf_auxiliary::AuxiliaryInertTracer > auxiliary_inert_tracer
Definition: ERF.H:1528
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SFS_hfx2_lev
Definition: ERF.H:1619
void WriteLinePlot(const std::string &filename, amrex::Vector< std::array< amrex::Real, 2 >> &points_xy)
Definition: ERF_Write1DProfiles.cpp:650
bool m_warned_coupled_sst_declined
Definition: ERF.H:1179
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::iMultiFab > > > soil_type_lev
Definition: ERF.H:1615
amrex::Vector< amrex::Vector< amrex::Real > > zlevels_stag
Definition: ERF.H:1631
bool use_native_fc_factories() const noexcept
Definition: ERF.H:2568
void FillPlot3DVars(int lev, const amrex::Vector< std::string > &plot_var_names, Plot3DScratch &scratch, amrex::MultiFab &mf_dst, int ncomp_mf, amrex::Real tnew)
Definition: ERF_Plotfile.cpp:511
AMREX_FORCE_INLINE int NumDerDataLogs() noexcept
Definition: ERF.H:2366
void sample_lines(int ifile, int lev, double time, amrex::IntVect cell, amrex::MultiFab &mf)
Definition: ERF_WriteScalarProfiles.cpp:625
amrex::EBFArrayBoxFactory const & EBFactory(int lev) const noexcept
Definition: ERF.H:2587
amrex::Vector< amrex::Vector< amrex::MultiFab * > > lsm_data
Definition: ERF.H:1552
void init_immersed_forcing(int lev)
Definition: ERF_InitImmersedForcing.cpp:15
amrex::Vector< amrex::Vector< amrex::Real > > stretched_dz_h
Definition: ERF.H:1737
amrex::Vector< std::unique_ptr< LargeScaleForcingData > > lsf_fine
Definition: ERF.H:1563
bool use_real_time_in_pltname
Definition: ERF.H:2086
int m_plot2d_int_1
Definition: ERF.H:1927
void WriteCheckpointFile() const
Definition: ERF_Checkpoint.cpp:154
amrex::Array< amrex::Array< erf_wall_scalar_bc::WallScalarBCIntent, AMREX_SPACEDIM *2 >, NBCVAR_max > m_wall_scalar_bc_intent
Definition: ERF.H:1772
void interp_land_masks_from_coarse(int lev)
Definition: ERF.cpp:2752
bool metgrid_debug_psfc
Definition: ERF.H:2108
void ReadStormTrackerRestart()
Definition: ERF_HurricaneDiagnostics.cpp:493
bool Write3DPlotFile(int which, PlotFileType plotfile_type, amrex::Vector< std::string > plot_var_names)
Definition: ERF_Plotfile.cpp:1977
amrex::Vector< std::unique_ptr< amrex::MultiFab > > az_src
Definition: ERF.H:1691
static int fixed_mri_dt_ratio
Definition: ERF.H:1869
static amrex::Real init_shrink
Definition: ERF.H:1844
void HurricaneTrackerCircle()
Definition: ERF_HurricaneDiagnostics.cpp:198
static double last_check_file_time
Definition: ERF.H:1804
static std::string nc_low_file
Definition: ERF.H:2098
void solve_with_terrain_mlmg(int lev, const amrex::Box &subdomain, amrex::MultiFab &rhs, amrex::MultiFab &p, amrex::Array< amrex::MultiFab, AMREX_SPACEDIM > &fluxes, amrex::MultiFab &ax_sub, amrex::MultiFab &ay_sub, amrex::MultiFab &az_sub, amrex::MultiFab &dJ_sub, amrex::MultiFab &znd_sub, bool use_gmres)
Definition: ERF_SolveWithTerrainMLMG.cpp:42
amrex::Vector< amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > > d_rayleigh_ptrs
Definition: ERF.H:2215
void InitData()
Definition: ERF.cpp:935
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Lwave
Definition: ERF.H:1745
amrex::Vector< std::unique_ptr< amrex::MultiFab > > cosPhi_m
Definition: ERF.H:1394
amrex::Vector< std::unique_ptr< amrex::MultiFab > > interval_means
Definition: ERF.H:1483
void ParameterSanityChecks()
Definition: ERF.cpp:4264
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::iMultiFab > > > land_type_lev
Definition: ERF.H:1614
static double start_time
Definition: ERF.H:1828
void init_zphys(int lev, double elapsed_time)
Definition: ERF_MakeNewArrays.cpp:940
void derive_stress_profiles(amrex::Gpu::HostVector< amrex::Real > &h_avg_tau11, amrex::Gpu::HostVector< amrex::Real > &h_avg_tau12, amrex::Gpu::HostVector< amrex::Real > &h_avg_tau13, amrex::Gpu::HostVector< amrex::Real > &h_avg_tau22, amrex::Gpu::HostVector< amrex::Real > &h_avg_tau23, amrex::Gpu::HostVector< amrex::Real > &h_avg_tau33, amrex::Gpu::HostVector< amrex::Real > &h_avg_hfx3, amrex::Gpu::HostVector< amrex::Real > &h_avg_q1fx3, amrex::Gpu::HostVector< amrex::Real > &h_avg_q2fx3, amrex::Gpu::HostVector< amrex::Real > &h_avg_diss)
Definition: ERF_Write1DProfiles.cpp:551
amrex::Vector< amrex::Vector< amrex::MultiFab > > forecast_state_1
Definition: ERF.H:292
int cf_width
Definition: ERF.H:1595
static int last_plot2d_file_step_1
Definition: ERF.H:1796
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > zflux_imask
Definition: ERF.H:1786
amrex::Vector< amrex::BoxArray > openface_grids
Definition: ERF.H:1862
std::unique_ptr< CloudChamberBudget > cloud_chamber_budget
Definition: ERF.H:1529
void Construct_ERFFillPatchers(int lev)
Definition: ERF.cpp:4542
amrex::Vector< int > num_boxes_at_level
Definition: ERF.H:1440
void compute_native_shoc_tendencies(int lev, amrex::MultiFab *cons, amrex::MultiFab *xvel, amrex::MultiFab *yvel, amrex::MultiFab *zvel, amrex::Real *w_subsid, amrex::MultiFab *tau13, amrex::MultiFab *tau23, amrex::MultiFab *hfx3, amrex::MultiFab *qfx3, amrex::MultiFab *eddyDiffs, amrex::MultiFab *z_phys_nd, const double &dt_advance)
Definition: ERF_ShocCoupling.cpp:6
amrex::Vector< std::string > station_vars_2d
Definition: ERF.H:2530
void FillSurfaceStateMultiFabs(const int lev, const std::string &filename, amrex::Vector< amrex::MultiFab > &surface_state)
Definition: ERF_SurfaceDataInterpolation.cpp:26
static amrex::Real sub_cfl
Definition: ERF.H:1843
static void print_error(MPI_Comm, const std::string &msg)
Definition: ERF_ConsoleIO.cpp:48
static int ng_dens_hse
Definition: ERF.H:2181
std::unique_ptr< ReadBndryPlanes > m_r2d
Definition: ERF.H:2237
static amrex::Real diffusive_cfl
Definition: ERF.H:1853
amrex::Vector< std::unique_ptr< amrex::MultiFab > > ay
Definition: ERF.H:1639
amrex::Vector< amrex::Real > slope_report_alpha
Definition: ERF.H:1864
void interp_base_state_from_coarse(int lev)
Definition: ERF_Init1D.cpp:178
amrex::Vector< amrex::Vector< amrex::MultiFab * > > qmoist
Definition: ERF.H:1531
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SFS_q1fx1_lev
Definition: ERF.H:1621
void GetLandMask(const amrex::iMultiFab *&lmask) const
Definition: ERF_to_REMORA.cpp:290
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > zvel_bc_data
Definition: ERF.H:1410
void derive_stress_profiles_stag(amrex::Gpu::HostVector< amrex::Real > &h_avg_tau11, amrex::Gpu::HostVector< amrex::Real > &h_avg_tau12, amrex::Gpu::HostVector< amrex::Real > &h_avg_tau13, amrex::Gpu::HostVector< amrex::Real > &h_avg_tau22, amrex::Gpu::HostVector< amrex::Real > &h_avg_tau23, amrex::Gpu::HostVector< amrex::Real > &h_avg_tau33, amrex::Gpu::HostVector< amrex::Real > &h_avg_hfx3, amrex::Gpu::HostVector< amrex::Real > &h_avg_q1fx3, amrex::Gpu::HostVector< amrex::Real > &h_avg_q2fx3, amrex::Gpu::HostVector< amrex::Real > &h_avg_diss)
Definition: ERF_Write1DProfiles_stag.cpp:692
LandSurface lsm
Definition: ERF.H:1549
static amrex::Real change_max
Definition: ERF.H:1845
amrex::Vector< std::unique_ptr< amrex::MultiFab > > ib_wall_hfx
Definition: ERF.H:1718
bool cf_anelastic_flux_match(int lev) const
Definition: ERF_CoarseFineFaces.cpp:794
void ApplyOceanSurfaceState(const amrex::Vector< amrex::MultiFab * > &state, double time, const amrex::iMultiFab *erf_coverage=nullptr)
Definition: ERF_to_REMORA.cpp:848
void setSpongeRefFromSounding(bool restarting)
Set sponge mean profiles from input sounding.
Definition: ERF_InitSponge.cpp:65
amrex::Vector< amrex::MultiFab > avg_ymom
Definition: ERF.H:1496
int line_sampling_interval
Definition: ERF.H:2516
amrex::Vector< amrex::Vector< amrex::Real > > h_sinesq_stag_ptrs
Definition: ERF.H:2212
amrex::Vector< std::unique_ptr< amrex::MultiFab > > detJ_cc_new
Definition: ERF.H:1694
static amrex::Vector< std::string > ref_tag_indicator_names
Definition: ERF.H:2261
void project_initial_velocity(int lev, double time, double dt)
Definition: ERF_PoissonSolve.cpp:100
void interp_mapfac_from_coarse(int lev)
Definition: ERF.cpp:2629
amrex::Array< std::string, 2 *AMREX_SPACEDIM > domain_bc_type
Definition: ERF.H:1760
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > yvel_bc_data
Definition: ERF.H:1409
static bool cf_flux_history_enabled()
Definition: ERF_CFFluxHistory.cpp:48
static void writeBuildInfo(std::ostream &os)
Definition: ERF_WriteJobInfo.cpp:183
amrex::GpuArray< ERF_BC, AMREX_SPACEDIM *2 > phys_bc_type
Definition: ERF.H:1781
std::string check_file
Definition: ERF.H:1948
bool rad_level_needs_interpolation(int lev) const
Definition: ERF.cpp:416
amrex::Vector< amrex::IntVect > samplepoint
Definition: ERF.H:2547
amrex::Vector< amrex::MultiFab > surface_state_interp
Definition: ERF.H:297
amrex::Vector< amrex::Real > h_havg_qv
Definition: ERF.H:2225
amrex::Vector< std::unique_ptr< IBFaceSet > > m_ibseb
Definition: ERF.H:1700
amrex::Vector< amrex::MultiFab > weather_forecast_data_1
Definition: ERF.H:291
void advance_dycore(int level, amrex::Vector< amrex::MultiFab > &state_old, amrex::Vector< amrex::MultiFab > &state_new, amrex::MultiFab &xvel_old, amrex::MultiFab &yvel_old, amrex::MultiFab &zvel_old, amrex::MultiFab &xvel_new, amrex::MultiFab &yvel_new, amrex::MultiFab &zvel_new, amrex::MultiFab &source, amrex::MultiFab &xmom_src, amrex::MultiFab &ymom_src, amrex::MultiFab &zmom_src, amrex::MultiFab &buoyancy, amrex::Geometry fine_geom, double dt, double time)
Definition: ERF_AdvanceDycore.cpp:42
static void print_usage(MPI_Comm, std::ostream &)
Definition: ERF_ConsoleIO.cpp:31
void cf_zface_coarse_at(int lev, double tc, bool conserved_rho, const amrex::MultiFab &pz, const amrex::MultiFab &pmu, const amrex::MultiFab &pmv, amrex::MultiFab &cOm, amrex::MultiFab &cRu, amrex::MultiFab &cRv)
Definition: ERF_CoarseFineFaces.cpp:230
amrex::Real solar_declin
Definition: ERF.H:1576
amrex::Vector< amrex::MultiFab > rV_old
Definition: ERF.H:1514
amrex::Vector< std::unique_ptr< amrex::MultiFab > > lat_m
Definition: ERF.H:1392
void timeStep(int lev, double time, int iteration)
Definition: ERF_TimeStep.cpp:19
amrex::Vector< amrex::Vector< amrex::Vector< amrex::Real > > > h_rayleigh_ptrs
Definition: ERF.H:2207
amrex::Vector< amrex::Vector< amrex::MultiFab * > > urban_flux
Definition: ERF.H:1557
void derive_diag_profiles(double time, amrex::Gpu::HostVector< amrex::Real > &h_avg_u, amrex::Gpu::HostVector< amrex::Real > &h_avg_v, amrex::Gpu::HostVector< amrex::Real > &h_avg_w, amrex::Gpu::HostVector< amrex::Real > &h_avg_rho, amrex::Gpu::HostVector< amrex::Real > &h_avg_th, amrex::Gpu::HostVector< amrex::Real > &h_avg_ksgs, amrex::Gpu::HostVector< amrex::Real > &h_avg_Kmv, amrex::Gpu::HostVector< amrex::Real > &h_avg_Khv, amrex::Gpu::HostVector< amrex::Real > &h_avg_qv, amrex::Gpu::HostVector< amrex::Real > &h_avg_qc, amrex::Gpu::HostVector< amrex::Real > &h_avg_qr, amrex::Gpu::HostVector< amrex::Real > &h_avg_wqv, amrex::Gpu::HostVector< amrex::Real > &h_avg_wqc, amrex::Gpu::HostVector< amrex::Real > &h_avg_wqr, amrex::Gpu::HostVector< amrex::Real > &h_avg_qi, amrex::Gpu::HostVector< amrex::Real > &h_avg_qs, amrex::Gpu::HostVector< amrex::Real > &h_avg_qg, amrex::Gpu::HostVector< amrex::Real > &h_avg_uu, amrex::Gpu::HostVector< amrex::Real > &h_avg_uv, amrex::Gpu::HostVector< amrex::Real > &h_avg_uw, amrex::Gpu::HostVector< amrex::Real > &h_avg_vv, amrex::Gpu::HostVector< amrex::Real > &h_avg_vw, amrex::Gpu::HostVector< amrex::Real > &h_avg_ww, amrex::Gpu::HostVector< amrex::Real > &h_avg_uth, amrex::Gpu::HostVector< amrex::Real > &h_avg_vth, amrex::Gpu::HostVector< amrex::Real > &h_avg_wth, amrex::Gpu::HostVector< amrex::Real > &h_avg_thth, amrex::Gpu::HostVector< amrex::Real > &h_avg_ku, amrex::Gpu::HostVector< amrex::Real > &h_avg_kv, amrex::Gpu::HostVector< amrex::Real > &h_avg_kw, amrex::Gpu::HostVector< amrex::Real > &h_avg_p, amrex::Gpu::HostVector< amrex::Real > &h_avg_pu, amrex::Gpu::HostVector< amrex::Real > &h_avg_pv, amrex::Gpu::HostVector< amrex::Real > &h_avg_pw, amrex::Gpu::HostVector< amrex::Real > &h_avg_wthv, amrex::Gpu::HostVector< amrex::Real > &h_avg_thv)
Definition: ERF_Write1DProfiles.cpp:243
void solve_with_if_gmres(int lev, const amrex::Box &subdomain, amrex::MultiFab &rhs, amrex::MultiFab &phi, amrex::Array< amrex::MultiFab, AMREX_SPACEDIM > &fluxes, amrex::Array< amrex::MultiFab const *, AMREX_SPACEDIM > const &sigma)
Definition: ERF_ImmersedProjection.cpp:161
static int last_plot3d_file_step_1
Definition: ERF.H:1794
std::unique_ptr< LineSampler > line_sampler
Definition: ERF.H:2520
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Hwave
Definition: ERF.H:1744
void set_cf_zghost_projection(int lev, double time, amrex::MultiFab &xmom, amrex::MultiFab &ymom, amrex::MultiFab &omega_t, amrex::Vector< int > &slab_box)
Definition: ERF_CoarseFineFaces.cpp:471
amrex::Vector< amrex::Vector< amrex::Vector< std::unique_ptr< amrex::MultiFab > > > > Tau_EB
Definition: ERF.H:1626
amrex::Vector< int > istep
Definition: ERF.H:1444
const int datprecision
Definition: ERF.H:1817
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > xflux_imask
Definition: ERF.H:1784
void derive_upwp(amrex::Vector< amrex::Real > &h_havg)
static PlotFileType plotfile2d_type_1
Definition: ERF.H:2082
int metgrid_order
Definition: ERF.H:2116
bool finished_wave
Definition: ERF.H:1748
void ReadCheckpointFile()
Definition: ERF_Checkpoint.cpp:1009
amrex::Vector< amrex::Vector< amrex::MultiFab > > vars_old
Definition: ERF.H:1473
void FillCoarseFineGhostsForImplicit(int lev, double time, amrex::MultiFab &cons, const amrex::Vector< int > &cons_comps, const amrex::Vector< amrex::MultiFab * > &mom)
Definition: ERF_FillIntermediatePatch.cpp:367
amrex::Real ibseb_z_i_level0
Level 0's bulk-Richardson depth of its current step, for the refined levels.
Definition: ERF.H:1702
void WriteAtFinalTime()
Definition: ERF.cpp:327
amrex::Vector< amrex::Array< std::unique_ptr< amrex::iMultiFab >, AMREX_SPACEDIM+1 > > cf_implicit_mask
Definition: ERF.H:2143
amrex::Vector< std::unique_ptr< ERFPhysBCFunct_base > > physbcs_base
Definition: ERF.H:1504
void init_thin_body(int lev, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm)
Definition: ERF_MakeNewLevel.cpp:1928
static PlotFileType plotfile3d_type_1
Definition: ERF.H:2080
amrex::Vector< int > m_subvol_int
Definition: ERF.H:1930
AMREX_FORCE_INLINE std::ostream & SamplePointLog(int i)
Definition: ERF.H:2374
std::string MakeFilename_EyeTracker_latlon(int nstep)
Definition: ERF_TrackerOutput.cpp:55
void WriteMultiLevelPlotfileWithTerrain(const std::string &plotfilename, int nlevels, const amrex::Vector< const amrex::MultiFab * > &mf, const amrex::Vector< const amrex::MultiFab * > &mf_nd, const amrex::Vector< std::string > &varnames, const amrex::Vector< amrex::Geometry > &my_geom, double time, const amrex::Vector< int > &level_steps, const amrex::Vector< amrex::IntVect > &my_ref_ratio, const std::string &versionName="HyperCLaw-V1.1", const std::string &levelPrefix="Level_", const std::string &mfPrefix="Cell", const amrex::Vector< std::string > &extra_dirs=amrex::Vector< std::string >()) const
Definition: ERF_Plotfile.cpp:2253
amrex::Vector< amrex::Array< bool, 4 > > openface_warned
Definition: ERF.H:1863
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_neumann_vals
Definition: ERF.H:1766
amrex::Vector< amrex::BoxArray > ba_chkfile
Definition: ERF.H:1885
bool m_driver_atm2ocn_uses_state_contract
Definition: ERF.H:1168
bool m_plot_face_terrain_blanking
Definition: ERF.H:1938
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::MultiFab > > > tsk_lev
Definition: ERF.H:1610
void setRecordSamplePointInfo(int i, int lev, amrex::IntVect &cell, const std::string &filename)
Definition: ERF.H:2483
std::unique_ptr< amrex::MultiFab > m_coupled_sst
Definition: ERF.H:1175
bool has_surface_layer_inputs(const std::string &prefix) const
Definition: ERF.cpp:4895
static void print_summary(std::ostream &)
int m_plot3d_int_2
Definition: ERF.H:1926
amrex::Vector< std::unique_ptr< amrex::MultiFab > > qheating_rates
Definition: ERF.H:1568
void fill_terrain_surface(int lev, amrex::MultiFab &z_phys, double elapsed_time)
Definition: ERF_MakeNewArrays.cpp:903
void check_seb_surface_layer()
Definition: ERF.cpp:483
void turbPert_amplitude(const int lev)
Definition: ERF_InitTurbPert.cpp:478
std::unique_ptr< erf_sbm::SBMTransport > sbm_transport
Definition: ERF.H:1527
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rad_fluxes
Definition: ERF.H:1574
const CFZFaceLayout & cf_zface_layout(int lev)
Definition: ERF_CoarseFineFaces.cpp:155
void initializeMicrophysics(const int &)
Definition: ERF.cpp:3091
static double bndry_output_planes_start_time
Definition: ERF.H:2176
std::unique_ptr< amrex::MultiFab > wrf_C2H
Definition: ERF.H:2165
bool plot_lsm
Definition: ERF.H:1940
amrex::Vector< amrex::MultiFab > avg_zmom
Definition: ERF.H:1497
void set_cf_zface_omega(int lev, amrex::MultiFab &omega, const amrex::MultiFab &omega_t, const amrex::Vector< int > &slab_box)
Definition: ERF_CoarseFineFaces.cpp:497
const amrex::Vector< std::string > cons_names
Definition: ERF.H:1960
void ReadCheckpointFileSurfaceLayer()
Definition: ERF_Checkpoint.cpp:2336
void GetOceanToAtmosCellCenterLonLat(const amrex::MultiFab *&lon_cc, const amrex::MultiFab *&lat_cc) const
Definition: ERF_to_REMORA.cpp:276
double m_plot2d_per_1
Definition: ERF.H:1935
void WarnSteepTerrainAtOpenFaces(int lev)
Definition: ERF.cpp:1013
Wrapper class for managing land surface models across AMR levels.
Definition: ERF_LandSurface.H:19
Definition: ERF_TopographicShading.H:15
The two-stream radiation model (erf.radiation_model = TwoStream).
Definition: ERF_TwoStreamRadiation.H:49
Wrapper class for managing urban models across AMR levels.
Definition: ERF_Urban.H:12
Owns and exposes cell-centered and face-centered EB factories.
Definition: ERF_EB.H:26
Definition: ERF_SBMStateManager.H:16
Definition: ERF_SBMTransport.H:27
Definition: ERF_InterpolationUtils.H:15
@ ymom
Definition: ERF_IndexDefines.H:274
@ zmom
Definition: ERF_IndexDefines.H:275
@ xmom
Definition: ERF_IndexDefines.H:273
@ None
Definition: ERF_LSM_Types.H:6
@ pres
Definition: ERF_Kessler.H:28
@ qv
Definition: ERF_Kessler.H:31
@ ng
Definition: ERF_Morrison.H:51
@ omega
Definition: ERF_Morrison.H:57
@ T
Definition: ERF_IndexDefines.H:168
constexpr int S
Definition: ERF_TwoStreamColumn.H:604
@ xvel
Definition: ERF_IndexDefines.H:255
@ cons
Definition: ERF_IndexDefines.H:254
@ zvel
Definition: ERF_IndexDefines.H:257
@ yvel
Definition: ERF_IndexDefines.H:256
@ p
Definition: ERF_WSM6.H:301
Definition: ERF_ConsoleIO.cpp:17
amrex::Vector< std::string > plot3d_conserved_state_names()
Names of the raw conserved-state variables, in component order.
Definition: ERF_PlotfileSelection.H:124
ArtifactType
Definition: ERF_Provenance.H:37
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real phi(amrex::Real d, amrex::Real z0, amrex::Real psi) noexcept
Definition: ERF_ImmersedWallCell.H:142
real(c_double), parameter, private pi
Definition: ERF_module_mp_morr_two_moment.F90:100
integer, private isub
Definition: ERF_module_mp_morr_two_moment.F90:164
real(kind=kind_phys), parameter, private dens
Definition: ERF_module_mp_wdm6.F90:61
Definition: ERF_ObsNudging.cpp:22
AdvType dycore_vert_adv_type
Vertical advection scheme for dynamical-core variables.
Definition: ERF_AdvStruct.H:444
AdvType moistscal_vert_adv_type
Vertical advection scheme for moist scalar variables.
Definition: ERF_AdvStruct.H:448
AdvType dryscal_horiz_adv_type
Horizontal advection scheme for dry scalar variables.
Definition: ERF_AdvStruct.H:445
AdvType dycore_horiz_adv_type
Horizontal advection scheme for dynamical-core variables.
Definition: ERF_AdvStruct.H:443
AdvType moistscal_horiz_adv_type
Horizontal advection scheme for moist scalar variables.
Definition: ERF_AdvStruct.H:447
AdvType dryscal_vert_adv_type
Vertical advection scheme for dry scalar variables.
Definition: ERF_AdvStruct.H:446
Definition: ERF_BaseStateParams.H:35
amrex::Vector< amrex::Real > time
Definition: ERF.H:1671
amrex::Array< amrex::Vector< amrex::MultiFab >, AMREX_SPACEDIM > flux
Definition: ERF.H:1669
bool complete
Definition: ERF.H:1672
amrex::Array< amrex::Vector< int >, AMREX_SPACEDIM > slab_box
Definition: ERF.H:1667
amrex::DistributionMapping fdm
Definition: ERF.H:1664
amrex::Vector< amrex::MultiFab > rho_w
Definition: ERF.H:1670
amrex::Array< amrex::BoxArray, AMREX_SPACEDIM > sba
Definition: ERF.H:1665
amrex::Array< amrex::MultiFab, AMREX_SPACEDIM > tgt
Definition: ERF.H:1673
amrex::BoxArray fba
Definition: ERF.H:1663
amrex::Array< amrex::Vector< amrex::Box >, AMREX_SPACEDIM > slab_faces
Definition: ERF.H:1668
amrex::MultiFab tgt_w
Definition: ERF.H:1674
amrex::Array< amrex::DistributionMapping, AMREX_SPACEDIM > sdm
Definition: ERF.H:1666
amrex::BoxArray ba_rz
Definition: ERF.H:1650
amrex::DistributionMapping sdm
Definition: ERF.H:1649
amrex::BoxArray fba
Definition: ERF.H:1645
amrex::BoxArray ba_mu
Definition: ERF.H:1651
amrex::BoxArray ba_r
Definition: ERF.H:1650
amrex::BoxArray ba_rv
Definition: ERF.H:1650
amrex::Vector< int > slab_box
Definition: ERF.H:1648
amrex::BoxArray ba_f
Definition: ERF.H:1653
std::map< int, amrex::Vector< amrex::Box > > patches
Definition: ERF.H:1647
amrex::BoxArray ba_cy
Definition: ERF.H:1652
amrex::BoxArray ba_rw
Definition: ERF.H:1650
amrex::BoxArray ba_x
Definition: ERF.H:1653
amrex::BoxArray ba_cx
Definition: ERF.H:1652
amrex::BoxArray ba_y
Definition: ERF.H:1653
amrex::DistributionMapping fdm
Definition: ERF.H:1646
amrex::BoxArray ba_mv
Definition: ERF.H:1651
amrex::BoxArray ba_ru
Definition: ERF.H:1650
amrex::BoxArray ba_cf
Definition: ERF.H:1652
amrex::Vector< amrex::MultiFab > mf_cc_vel
Definition: ERF.H:871
amrex::Vector< amrex::MultiFab > mf_cc_fx
Definition: ERF.H:873
amrex::Vector< amrex::MultiFab > mf_cc_tau
Definition: ERF.H:872
Definition: ERF_FireCouplingParams.H:18
Definition: ERF_IBSEBParams.H:25
bool enable
Master switch.
Definition: ERF_IBSEBParams.H:26
std::string radiation
Definition: ERF_IBSEBParams.H:46
Definition: ERF_LargeScaleForcingData.H:31
int qi
cloud ice
Definition: ERF_DataStruct.H:264
int qc
cloud liquid water
Definition: ERF_DataStruct.H:263
Definition: ERF_DataStruct.H:715
MoistureType moisture_type
Moisture or microphysics model.
Definition: ERF_DataStruct.H:2942
static bool buildings_fc_factories
Use native face-centered EB factories for immersed buildings on a static fitted mesh.
Definition: ERF_DataStruct.H:2598
bool use_building_immersed_forcing(const amrex::Geometry &geom) const noexcept
Definition: ERF_DataStruct.H:2808
AdvChoice advChoice
Advection-related options.
Definition: ERF_DataStruct.H:2616
static TerrainType terrain_type
Terrain or immersed-boundary representation.
Definition: ERF_DataStruct.H:2589
static BuildingsType buildings_type
Building representation.
Definition: ERF_DataStruct.H:2595
MoistureComponentIndices moisture_indices
Index map of the moisture data carried by the active scheme: conserved-state components for the speci...
Definition: ERF_DataStruct.H:2993
RadiationType rad_type
Radiation model.
Definition: ERF_DataStruct.H:2956
bool use_num_diff
Whether sixth-order numerical diffusion is enabled.
Definition: ERF_DataStruct.H:2938
Runtime state and operations for turbulent perturbation forcing.
Definition: ERF_TurbPertStruct.H:42
Definition: ERF_TwoStreamRadiation.H:294
Configuration parameters for cloud chamber initialization.
Definition: ERF_CloudChamber.H:41
Definition: ERF_Provenance.H:66
Definition: ERF_Plotfile2DSampledLevel.H:56