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>
66 #ifdef ERF_USE_PARTICLES
76 #ifdef ERF_USE_WINDFARM
83 #ifdef ERF_USE_EAMXX_SHOC
93 #include <AMReX_Lazy.H>
97 using amrex::MPI_COMM_WORLD;
98 using amrex::MPI_Comm;
101 #ifdef ERF_USE_MULTIBLOCK
102 class MultiBlockContainer;
114 FullState, Perturbational
122 :
public amrex::AmrCore
141 ERF& operator= (
ERF&& other) noexcept = delete;
147 ERF& operator= (const
ERF& other) = delete;
154 bool use_two_way_coupling,
155 bool use_state_contract);
161 amrex::DistributionMapping& dm);
176 const
amrex::MultiFab*& lat_cc) const;
223 amrex::Vector<int>& can_fill)
const;
238 const amrex::Vector<const amrex::MultiFab*>& weight_mf,
239 const amrex::Vector<const amrex::iMultiFab*>& index_mf,
240 int max_stencil_size,
241 const amrex::MultiFab* dst_mskr =
nullptr,
242 const amrex::MultiFab* dst_msku =
nullptr,
243 const amrex::MultiFab* dst_mskv =
nullptr);
259 const amrex::iMultiFab* erf_coverage =
nullptr);
271 const amrex::MultiFab& cc_vel,
273 amrex::TagBoxArray* tags =
nullptr);
276 const amrex::MultiFab& cc_vel,
304 amrex::Vector<std::array<amrex::Real, 2>>& points_xy);
307 amrex::Vector<std::array<amrex::Real, 2>>& points_xy);
310 const amrex::MultiFab& mf_cc_vel);
313 const amrex::Geometry& geom,
314 const amrex::Vector<amrex::MultiFab>& S_data,
319 const amrex::Geometry& geom,
320 const amrex::MultiFab& mf_cc_vel,
321 const amrex::Vector<amrex::MultiFab>& S_data);
324 const amrex::Geometry& geom,
325 const amrex::Vector<amrex::MultiFab>& S_data,
334 const amrex::MultiFab& mf_cc_vel,
338 const amrex::Geometry& geom,
339 const amrex::MultiFab& mf_cons_var,
356 void Interp2DArrays (
int lev,
const amrex::BoxArray& my_ba2d,
const amrex::DistributionMapping& my_dm);
375 amrex::Array<amrex::MultiFab const*,AMREX_SPACEDIM> rho0_u_const,
376 amrex::MultiFab
const& mf_mx, amrex::MultiFab
const& mf_my,
377 amrex::MultiFab
const& mf_vx, amrex::MultiFab
const& mf_uy,
378 amrex::MultiFab
const& ax_in, amrex::MultiFab
const& ay_in,
379 amrex::MultiFab
const& dJ_in,
380 amrex::Geometry
const& geom_at_lev);
384 void project_momenta (
int lev,
double l_time,
double l_dt, amrex::Vector<amrex::MultiFab >& vars);
392 void make_subdomains (
const amrex::BoxList& ba, amrex::Vector<amrex::BoxArray>& bins);
395 void build_fft_solvers (
int lev);
396 void solve_with_fft (
int lev,
int isub,
const amrex::Box& subdomain,
397 amrex::MultiFab& rhs, amrex::MultiFab&
p,
398 amrex::Array<amrex::MultiFab,AMREX_SPACEDIM>& fluxes);
401 amrex::MultiFab& rhs, amrex::MultiFab&
p,
402 amrex::Array<amrex::MultiFab,AMREX_SPACEDIM>& fluxes,
403 amrex::MultiFab& ax_sub, amrex::MultiFab& ay_sub,
404 amrex::MultiFab& az_sub,
405 amrex::MultiFab& , amrex::MultiFab& znd_sub);
407 void ImposeBCsOnPhi (
int lev, amrex::MultiFab& phi,
const amrex::Box& subdomain);
431 bool writeNow (
double cur_time,
const int nstep,
const int plot_int,
432 const double plot_per,
const double dt_0,
double& last_file_time);
461 const amrex::MultiFab*& sens_flux,
462 const amrex::MultiFab*& laten_flux)
const;
468 const amrex::MultiFab*& sens_flux,
469 const amrex::MultiFab*& laten_flux)
const;
491 void FillBdyCCVels (amrex::MultiFab& mf_cc_vel, amrex::Geometry& lev_geom);
493 void sample_points (
int lev,
double time, amrex::IntVect cell, amrex::MultiFab& mf);
494 void sample_lines (
int lev,
double time, amrex::IntVect cell, amrex::MultiFab& mf);
497 amrex::Gpu::HostVector<amrex::Real>& h_avg_u , amrex::Gpu::HostVector<amrex::Real>& h_avg_v,
498 amrex::Gpu::HostVector<amrex::Real>& h_avg_w , amrex::Gpu::HostVector<amrex::Real>& h_avg_rho,
499 amrex::Gpu::HostVector<amrex::Real>& h_avg_th , amrex::Gpu::HostVector<amrex::Real>& h_avg_ksgs,
500 amrex::Gpu::HostVector<amrex::Real>& h_avg_Kmv , amrex::Gpu::HostVector<amrex::Real>& h_avg_Khv,
501 amrex::Gpu::HostVector<amrex::Real>& h_avg_qv , amrex::Gpu::HostVector<amrex::Real>& h_avg_qc,
502 amrex::Gpu::HostVector<amrex::Real>& h_avg_qr ,
503 amrex::Gpu::HostVector<amrex::Real>& h_avg_wqv , amrex::Gpu::HostVector<amrex::Real>& h_avg_wqc,
504 amrex::Gpu::HostVector<amrex::Real>& h_avg_wqr ,
505 amrex::Gpu::HostVector<amrex::Real>& h_avg_qi , amrex::Gpu::HostVector<amrex::Real>& h_avg_qs,
506 amrex::Gpu::HostVector<amrex::Real>& h_avg_qg ,
507 amrex::Gpu::HostVector<amrex::Real>& h_avg_uu , amrex::Gpu::HostVector<amrex::Real>& h_avg_uv,
508 amrex::Gpu::HostVector<amrex::Real>& h_avg_uw,
509 amrex::Gpu::HostVector<amrex::Real>& h_avg_vv , amrex::Gpu::HostVector<amrex::Real>& h_avg_vw,
510 amrex::Gpu::HostVector<amrex::Real>& h_avg_ww,
511 amrex::Gpu::HostVector<amrex::Real>& h_avg_uth , amrex::Gpu::HostVector<amrex::Real>& h_avg_vth,
512 amrex::Gpu::HostVector<amrex::Real>& h_avg_wth, amrex::Gpu::HostVector<amrex::Real>& h_avg_thth,
513 amrex::Gpu::HostVector<amrex::Real>& h_avg_ku, amrex::Gpu::HostVector<amrex::Real>& h_avg_kv,
514 amrex::Gpu::HostVector<amrex::Real>& h_avg_kw,
515 amrex::Gpu::HostVector<amrex::Real>& h_avg_p,
516 amrex::Gpu::HostVector<amrex::Real>& h_avg_pu, amrex::Gpu::HostVector<amrex::Real>& h_avg_pv,
517 amrex::Gpu::HostVector<amrex::Real>& h_avg_pw, amrex::Gpu::HostVector<amrex::Real>& h_avg_wthv);
519 amrex::Gpu::HostVector<amrex::Real>& h_avg_u , amrex::Gpu::HostVector<amrex::Real>& h_avg_v,
520 amrex::Gpu::HostVector<amrex::Real>& h_avg_w , amrex::Gpu::HostVector<amrex::Real>& h_avg_rho,
521 amrex::Gpu::HostVector<amrex::Real>& h_avg_th , amrex::Gpu::HostVector<amrex::Real>& h_avg_ksgs,
522 amrex::Gpu::HostVector<amrex::Real>& h_avg_Kmv , amrex::Gpu::HostVector<amrex::Real>& h_avg_Khv,
523 amrex::Gpu::HostVector<amrex::Real>& h_avg_qv , amrex::Gpu::HostVector<amrex::Real>& h_avg_qc,
524 amrex::Gpu::HostVector<amrex::Real>& h_avg_qr ,
525 amrex::Gpu::HostVector<amrex::Real>& h_avg_wqv , amrex::Gpu::HostVector<amrex::Real>& h_avg_wqc,
526 amrex::Gpu::HostVector<amrex::Real>& h_avg_wqr ,
527 amrex::Gpu::HostVector<amrex::Real>& h_avg_qi , amrex::Gpu::HostVector<amrex::Real>& h_avg_qs,
528 amrex::Gpu::HostVector<amrex::Real>& h_avg_qg ,
529 amrex::Gpu::HostVector<amrex::Real>& h_avg_uu , amrex::Gpu::HostVector<amrex::Real>& h_avg_uv,
530 amrex::Gpu::HostVector<amrex::Real>& h_avg_uw,
531 amrex::Gpu::HostVector<amrex::Real>& h_avg_vv , amrex::Gpu::HostVector<amrex::Real>& h_avg_vw,
532 amrex::Gpu::HostVector<amrex::Real>& h_avg_ww,
533 amrex::Gpu::HostVector<amrex::Real>& h_avg_uth , amrex::Gpu::HostVector<amrex::Real>& h_avg_vth,
534 amrex::Gpu::HostVector<amrex::Real>& h_avg_wth, amrex::Gpu::HostVector<amrex::Real>& h_avg_thth,
535 amrex::Gpu::HostVector<amrex::Real>& h_avg_ku, amrex::Gpu::HostVector<amrex::Real>& h_avg_kv,
536 amrex::Gpu::HostVector<amrex::Real>& h_avg_kw,
537 amrex::Gpu::HostVector<amrex::Real>& h_avg_p,
538 amrex::Gpu::HostVector<amrex::Real>& h_avg_pu, amrex::Gpu::HostVector<amrex::Real>& h_avg_pv,
539 amrex::Gpu::HostVector<amrex::Real>& h_avg_pw, amrex::Gpu::HostVector<amrex::Real>& h_avg_wthv);
541 void derive_stress_profiles (amrex::Gpu::HostVector<amrex::Real>& h_avg_tau11, amrex::Gpu::HostVector<amrex::Real>& h_avg_tau12,
542 amrex::Gpu::HostVector<amrex::Real>& h_avg_tau13, amrex::Gpu::HostVector<amrex::Real>& h_avg_tau22,
543 amrex::Gpu::HostVector<amrex::Real>& h_avg_tau23, amrex::Gpu::HostVector<amrex::Real>& h_avg_tau33,
544 amrex::Gpu::HostVector<amrex::Real>& h_avg_hfx3, amrex::Gpu::HostVector<amrex::Real>& h_avg_q1fx3,
545 amrex::Gpu::HostVector<amrex::Real>& h_avg_q2fx3, amrex::Gpu::HostVector<amrex::Real>& h_avg_diss);
546 void derive_stress_profiles_stag (amrex::Gpu::HostVector<amrex::Real>& h_avg_tau11, amrex::Gpu::HostVector<amrex::Real>& h_avg_tau12,
547 amrex::Gpu::HostVector<amrex::Real>& h_avg_tau13, amrex::Gpu::HostVector<amrex::Real>& h_avg_tau22,
548 amrex::Gpu::HostVector<amrex::Real>& h_avg_tau23, amrex::Gpu::HostVector<amrex::Real>& h_avg_tau33,
549 amrex::Gpu::HostVector<amrex::Real>& h_avg_hfx3, amrex::Gpu::HostVector<amrex::Real>& h_avg_q1fx3,
550 amrex::Gpu::HostVector<amrex::Real>& h_avg_q2fx3, amrex::Gpu::HostVector<amrex::Real>& h_avg_diss);
553 amrex::Gpu::HostVector<amrex::Real>& h_avg_wsub, amrex::Gpu::HostVector<amrex::Real>& h_avg_thtend,
554 amrex::Gpu::HostVector<amrex::Real>& h_avg_qhtend, amrex::Gpu::HostVector<amrex::Real>& h_avg_tvtend,
555 amrex::Gpu::HostVector<amrex::Real>& h_avg_qvtend, amrex::Gpu::HostVector<amrex::Real>& h_avg_qcvtend,
556 amrex::Gpu::HostVector<amrex::Real>& h_avg_tnudge, amrex::Gpu::HostVector<amrex::Real>& h_avg_qnudge,
557 amrex::Gpu::HostVector<amrex::Real>& h_avg_unudge, amrex::Gpu::HostVector<amrex::Real>& h_avg_vnudge);
561 volWgtSumMF (
int lev,
const amrex::MultiFab& mf,
int comp,
562 const amrex::MultiFab& dJ,
const amrex::MultiFab& mfx,
const amrex::MultiFab& mfy,
563 bool finemask,
bool local =
true);
567 amrex::MultiFab& mf_2d,
const amrex::MultiFab& dJ);
571 int action_interval,
double action_per);
577 const amrex::DistributionMapping& dm)
override;
583 const amrex::DistributionMapping& dm)
override;
593 const amrex::DistributionMapping& dm)
override;
596 double estTimeStep (
int lev,
long& dt_fast_ratio)
const;
606 #ifdef ERF_USE_WW3_COUPLING
608 void send_to_ww3 (
int lev);
610 void read_waves (
int lev);
619 amrex::Vector<amrex::MultiFab>& state_old,
620 amrex::Vector<amrex::MultiFab>& state_new,
621 amrex::MultiFab& xvel_old, amrex::MultiFab& yvel_old, amrex::MultiFab& zvel_old,
622 amrex::MultiFab& xvel_new, amrex::MultiFab& yvel_new, amrex::MultiFab& zvel_new,
623 amrex::MultiFab& source, amrex::MultiFab& xmom_src,
624 amrex::MultiFab& ymom_src, amrex::MultiFab& zmom_src,
625 amrex::MultiFab& buoyancy, amrex::Geometry fine_geom,
626 double dt,
double time);
629 amrex::MultiFab& cons_in,
630 const double& dt_advance,
631 const int& iteration,
635 amrex::MultiFab& cons_in,
636 amrex::MultiFab& xvel_in,
637 amrex::MultiFab& yvel_in,
639 const double& dt_advance);
642 amrex::MultiFab& cons_in,
643 amrex::MultiFab& u_in,
644 amrex::MultiFab& v_in,
646 const amrex::Geometry& geom,
648 amrex::MultiFab& eddyDiffs_in);
651 amrex::MultiFab& cons_in,
652 const double& dt_advance);
654 #ifdef ERF_USE_EAMXX_SHOC
655 void compute_shoc_tendencies (
int lev,
656 amrex::MultiFab*
cons,
657 amrex::MultiFab*
xvel,
658 amrex::MultiFab*
yvel,
659 amrex::MultiFab*
zvel,
661 amrex::MultiFab*
tau13,
662 amrex::MultiFab*
tau23,
663 amrex::MultiFab* hfx3,
664 amrex::MultiFab* qfx3,
665 amrex::MultiFab* eddyDiffs,
667 const double& dt_advance);
671 amrex::MultiFab*
cons,
672 amrex::MultiFab*
xvel,
673 amrex::MultiFab*
yvel,
674 amrex::MultiFab*
zvel,
676 amrex::MultiFab*
tau13,
677 amrex::MultiFab*
tau23,
678 amrex::MultiFab* hfx3,
679 amrex::MultiFab* qfx3,
680 amrex::MultiFab* eddyDiffs,
682 const double& dt_advance);
691 bool Write3DPlotFile (
int which, PlotFileType plotfile_type, amrex::Vector<std::string> plot_var_names);
692 void Write2DPlotFile (
int which, PlotFileType plotfile_type, amrex::Vector<std::string> plot_var_names);
694 bool interval_diagnostic_consumed);
702 const amrex::Vector<const amrex::MultiFab*> &mf,
703 const amrex::Vector<const amrex::MultiFab*> &mf_nd,
704 const amrex::Vector<std::string> &varnames,
705 const amrex::Vector<amrex::Geometry>& my_geom,
707 const amrex::Vector<int> &level_steps,
708 const amrex::Vector<amrex::IntVect>& my_ref_ratio,
709 const std::string &versionName =
"HyperCLaw-V1.1",
710 const std::string &levelPrefix =
"Level_",
711 const std::string &mfPrefix =
"Cell",
712 const amrex::Vector<std::string>& extra_dirs = amrex::Vector<std::string>())
const;
717 const amrex::Vector<amrex::BoxArray> &bArray,
718 const amrex::Vector<std::string> &varnames,
719 const amrex::Vector<amrex::Geometry>& my_geom,
721 const amrex::Vector<int> &level_steps,
722 const amrex::Vector<amrex::IntVect>& my_ref_ratio,
723 const std::string &versionName,
724 const std::string &levelPrefix,
725 const std::string &mfPrefix)
const;
744 const amrex::Vector<std::string>& plot_var_names,
745 const amrex::Vector<std::string>& varnames,
746 const amrex::Vector<plotfile2d::Plotfile2DOutputDescriptor>& output_descriptors,
747 amrex::MultiFab& mf_dst,
751 const amrex::Vector<std::string>& plot_var_names,
753 amrex::MultiFab& mf_dst,
765 bool sync_solution =
true);
781 amrex::MultiFab&
dens, amrex::MultiFab&
pres, amrex::MultiFab&
pi,
782 amrex::MultiFab& th, amrex::MultiFab&
qv,
783 std::unique_ptr<amrex::MultiFab>& z_cc);
785 #ifdef ERF_USE_NETCDF
787 void writeToNCColumnFile (
int lev,
824 const amrex::MultiFab&
xvel,
const amrex::MultiFab&
yvel);
826 const amrex::MultiFab&
xvel,
const amrex::MultiFab&
yvel,
const amrex::MultiFab&
zvel);
832 void init_thin_body (
int lev,
const amrex::BoxArray& ba,
const amrex::DistributionMapping& dm);
835 const std::string& filename,
836 const std::unique_ptr<amrex::MultiFab>&
z_phys_nd,
837 amrex::Vector<amrex::Vector<amrex::MultiFab>>& forecast_state);
840 const std::string& filename,
841 amrex::Vector<amrex::MultiFab>& surface_state);
846 amrex::Vector<std::unique_ptr<amrex::MultiFab>>&
z_phys_nd,
847 bool regrid_forces_file_read);
851 amrex::Vector<std::unique_ptr<amrex::MultiFab>>&
z_phys_nd,
852 bool regrid_forces_file_read);
855 amrex::MultiFab& mf_cc_pert,
856 amrex::MultiFab& cons_pert,
857 amrex::MultiFab& xvel_pert,
858 amrex::MultiFab& yvel_pert,
859 amrex::MultiFab& zvel_pert);
862 amrex::MultiFab& mf_cc_pert);
865 amrex::MultiFab& mf_cc_pert);
877 #ifdef ERF_USE_MULTIBLOCK
880 ERF (
const amrex::RealBox& rb,
int max_level_in,
881 const amrex::Vector<int>& n_cell_in,
int coord,
882 const amrex::Vector<amrex::IntVect>& ref_ratio,
883 const amrex::Array<int,AMREX_SPACEDIM>& is_per,
887 void Evolve_MB (
int MBstep,
int max_block_step);
893 void SetMultiBlockPointer (MultiBlockContainer *mbc) { m_mbc = mbc; }
896 std::vector<amrex::Box> domain_p;
899 amrex::Vector<amrex::Vector<amrex::MultiFab> >
vars_new;
900 amrex::Vector<amrex::Vector<amrex::MultiFab> >
vars_old;
903 amrex::Vector<amrex::Vector<amrex::MultiFab> >
gradp;
906 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
vel_t_avg;
931 #ifdef ERF_USE_NETCDF
933 void fill_from_realbdy (
const amrex::Vector<amrex::MultiFab*>& mfs,
938 amrex::IntVect ngvect_cons,
939 amrex::IntVect ngvect_vels);
942 #ifdef ERF_USE_NETCDF
957 void init_from_wrfinput (
int lev, amrex::MultiFab&
mf_PSFC,
bool read_atmos_state =
true);
958 void init_from_metgrid (
int lev);
959 void init_from_ncfile (
int lev);
966 void rebuild_base_state_from_wrfinput (
int lev, amrex::MultiFab& base_state_mf);
972 void restore_base_state_params_on_restart ();
975 #ifdef ERF_USE_WINDFARM
976 void init_windfarm (
int lev);
977 void advance_windfarm (
const amrex::Geometry& a_geom,
978 const double& dt_advance,
979 amrex::MultiFab& cons_in,
980 amrex::MultiFab& U_old,
981 amrex::MultiFab& V_old,
982 amrex::MultiFab& W_old,
983 amrex::MultiFab& mf_vars_windfarm,
984 const amrex::MultiFab& mf_Nturb,
985 const amrex::MultiFab& mf_SMark,
997 bool do_perturbational_and_momenta =
true);
1017 void init_zphys (
int lev,
double elapsed_time);
1073 void init_stuff (
int lev,
const amrex::BoxArray& ba,
const amrex::DistributionMapping& dm,
1074 amrex::Vector<amrex::MultiFab>& lev_new, amrex::Vector<amrex::MultiFab>& lev_old,
1075 amrex::MultiFab& tmp_base_state,
1076 std::unique_ptr<amrex::MultiFab>& tmp_zphys_nd);
1091 int source_lev = -1,
bool source_is_raw_input =
false,
1092 bool initialize_now =
false);
1097 #ifdef ERF_USE_WINDFARM
1099 void initializeWindFarm (
const int&);
1111 const amrex::Vector<amrex::MultiFab*>& mfs_vel,
1112 bool cons_only=
false);
1116 const amrex::Vector<amrex::MultiFab*>& mfs_vel,
1117 const amrex::Vector<amrex::MultiFab*>& mfs_mom,
1118 const amrex::MultiFab& old_base_state,
1119 const amrex::MultiFab& new_base_state,
1120 bool fillset=
true,
bool cons_only=
false);
1131 const amrex::Vector<amrex::MultiFab*>& mfs_vel,
1132 const amrex::Vector<amrex::MultiFab*>& mfs_mom,
1133 int ng_cons,
int ng_vel,
bool cons_only,
int icomp_cons,
int ncomp_cons);
1141 void timeStep (
int lev,
double time,
int iteration);
1144 void Advance (
int lev,
double time,
double dt_lev,
int iteration,
int ncycle);
1169 void ComputeDt (
int step = -1,
double cur_time_d = 0.0);
1175 static amrex::Vector<std::string>
PlotFileVarNames (amrex::Vector<std::string> plot_var_names);
1178 void setPlotVariables (
const std::string& pp_plot_var_names, amrex::Vector<std::string>& plot_var_names);
1181 amrex::Vector<std::string>& a_plot_var_names);
1182 void setPlotVariables2D (
const std::string& pp_plot_var_names, amrex::Vector<std::string>& plot_var_names);
1184 void appendPlotVariables (
const std::string& pp_plot_var_names, amrex::Vector<std::string>& plot_var_names);
1186 void setSubVolVariables (
const std::string& pp_subvol_var_names, amrex::Vector<std::string>& subvol_var_names);
1188 #ifdef ERF_USE_NETCDF
1190 void createNCColumnFile (
int lev,
1194 void init_from_wrfbdy (amrex::Vector<amrex::FArrayBox*> x_vel_lateral,
1195 amrex::Vector<amrex::FArrayBox*> y_vel_lateral,
1196 amrex::Vector<amrex::FArrayBox*> z_vel_lateral,
1197 amrex::Vector<amrex::FArrayBox*> T_lateral);
1199 static double start_bdy_time;
1200 static double final_bdy_time;
1202 static double start_low_time;
1203 static double final_low_time;
1205 static double bdy_time_interval;
1206 static double low_time_interval;
1218 amrex::Vector<amrex::Vector<amrex::FArrayBox>> bdy_data_xlo;
1219 amrex::Vector<amrex::Vector<amrex::FArrayBox>> bdy_data_xhi;
1220 amrex::Vector<amrex::Vector<amrex::FArrayBox>> bdy_data_ylo;
1221 amrex::Vector<amrex::Vector<amrex::FArrayBox>> bdy_data_yhi;
1223 amrex::Vector<amrex::Vector<amrex::FArrayBox>> low_data_zlo;
1274 void post_update (amrex::MultiFab& state_mf,
double time,
const amrex::Geometry& geom);
1275 void fill_rhs (amrex::MultiFab& rhs_mf,
const amrex::MultiFab& state_mf,
double time,
const amrex::Geometry& geom);
1280 std::unique_ptr<ProblemBase>
prob =
nullptr;
1308 amrex::Vector<double>
dt;
1311 #ifndef ERF_USE_MULTIBLOCK
1314 amrex::Vector<amrex::Vector<amrex::MultiFab> >
vars_new;
1315 amrex::Vector<amrex::Vector<amrex::MultiFab> >
vars_old;
1318 amrex::Vector<amrex::Vector<amrex::MultiFab> >
gradp;
1330 amrex::Vector<std::unique_ptr<MRISplitIntegrator<amrex::Vector<amrex::MultiFab> > > >
mri_integrator_mem;
1350 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
Qv_prim;
1351 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
Qr_prim;
1373 amrex::Vector<amrex::Vector<amrex::MultiFab*>>
qmoist;
1374 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
precip;
1378 #ifdef ERF_USE_WINDFARM
1379 std::unique_ptr<WindFarm> windfarm;
1380 amrex::Vector<amrex::MultiFab> Nturb;
1381 amrex::Vector<amrex::MultiFab> vars_windfarm;
1384 amrex::Vector<amrex::MultiFab> SMark;
1394 amrex::Vector<amrex::Vector<amrex::MultiFab*>>
lsm_data;
1396 amrex::Vector<amrex::Vector<amrex::MultiFab*>>
lsm_flux;
1405 amrex::Vector<std::unique_ptr<LargeScaleForcingData>>
lsf_fine;
1407 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
lsf_data;
1409 amrex::Vector<std::unique_ptr<IRadiation>>
rad;
1426 #ifdef ERF_USE_EAMXX_SHOC
1427 amrex::Vector<std::unique_ptr<SHOCInterface>> eamxx_shoc_interface;
1444 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::MultiFab>>>
Tau;
1445 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::MultiFab>>>
Tau_corr;
1450 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::MultiFab>>>
sst_lev;
1451 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::MultiFab>>>
tsk_lev;
1452 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::iMultiFab>>>
lmask_lev;
1457 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::MultiFab>>>
urb_frac_lev;
1467 amrex::Vector<amrex::Vector<amrex::Vector<std::unique_ptr<amrex::MultiFab>>>>
Tau_EB;
1468 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
hfx3_EB;
1469 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
qfx3_EB;
1478 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
detJ_cc;
1479 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
ax;
1480 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
ay;
1481 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
az;
1486 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
ax_src;
1487 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
ay_src;
1488 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
az_src;
1493 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
z_t_rk;
1497 amrex::Vector<std::unique_ptr<IBFaceSet>>
m_ibseb;
1508 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
walldist;
1511 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::MultiFab>>>
mapfac;
1523 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
Hwave;
1524 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
Lwave;
1550 amrex::Array<amrex::Array<erf_wall_scalar_bc::WallScalarBCIntent, AMREX_SPACEDIM*2>,
NBCVAR_max>
1673 const std::string& mf_name,
1675 int scomp,
int dcomp,
int ncomp,
1676 const amrex::IntVect& dst_ghosts,
1677 bool src_ghosts =
false);
1684 const std::string& mf_name,
1686 int scomp,
int dcomp,
int ncomp,
1687 const amrex::IntVect& dst_ghosts,
1688 bool src_ghosts =
false);
1730 const amrex::Vector<std::string>
cons_names {
"density",
"rhotheta",
"rhoKE",
"rhoadv_0",
1731 "rhoQ1",
"rhoQ2",
"rhoQ3",
1732 "rhoQ4",
"rhoQ5",
"rhoQ6",
1733 "rhoQ7",
"rhoQ8",
"rhoQ9",
1734 "rhoQ10",
"rhoQ11"};
1739 const amrex::Vector<std::string>
derived_names {
"temp",
"theta",
"KE",
"scalar",
"soundspeed",
1740 "reflectivity",
"max_reflectivity",
"precipitable",
"mucape",
1741 "vorticity_x",
"vorticity_y",
"vorticity_z",
1742 "helicity",
"local_helicity",
"vort_stretching",
1744 "pres_hse",
"dens_hse",
"theta_hse",
"pi_hse",
"qv_hse",
1745 "pressure",
"pert_pres",
"pert_dens",
1746 "buoyancy",
"eq_pot_temp",
"VPD",
1747 #ifdef ERF_USE_WINDFARM
1748 "num_turb",
"SMark0",
"SMark1",
1750 "dpdx",
"dpdy",
"dpdz",
"pres_hse_x",
"pres_hse_y",
1751 "z_phys",
"detJ",
"h_xi",
"h_eta",
"h_zeta",
1752 "mapfac",
"lat_m",
"lon_m",
1754 "u_t_avg",
"v_t_avg",
"w_t_avg",
"umag_t_avg",
1756 "u_mean",
"v_mean",
"w_mean",
"theta_mean",
1757 "uu_mean",
"vv_mean",
"ww_mean",
"uw_mean",
"vw_mean",
"wtheta_mean",
1758 "uu_fluct",
"vv_fluct",
"ww_fluct",
"uw_fluct",
"vw_fluct",
"wtheta_fluct",
"tke_resolved",
1768 "Rt",
"cmu",
"cmu_prime",
1770 "pblh",
"shoc_cldfrac",
"shoc_ql",
"shoc_ql2",
"shoc_cond",
1771 "wqls_sec",
"wthv_sec",
"w_sec",
1772 "thl_sec",
"qw_sec",
"qwthl_sec",
"wthl_sec",
"wqw_sec",
"w3",
1773 "brunt",
"isotropy",
"shear_prod",
"buoy_prod",
"diss_tke",
1779 "moist_density",
"qv",
"qc",
"qi",
"qrain",
"qsnow",
"qgraup",
1780 "qt",
"qn",
"qp",
"qsat",
"nc",
"ni",
"nr",
"ns",
"ng",
"nn",
1781 "rain_accum",
"snow_accum",
"graup_accum",
1782 "rel_humidity",
"condensation_rate",
1785 "ibseb_nfaces",
"ibseb_tskin",
1786 "ibseb_sw_abs",
"ibseb_shadow",
1787 "ibseb_lw_net",
"ibseb_f_sky",
"ibseb_H",
"ibseb_G",
1790 #ifdef ERF_COMPUTE_ERROR
1792 ,
"xvel_err",
"yvel_err",
"zvel_err",
"pp_err"
1794 ,
"qsrc_sw",
"qsrc_lw",
1795 "Tau11",
"Tau12",
"Tau13",
"Tau21",
"Tau22",
"Tau23",
"Tau31",
"Tau32",
"Tau33",
1796 "hfx1",
"hfx2",
"hfx3",
"q1fx1",
"q1fx2",
"q1fx3",
"q2fx3"
1806 "precipitable",
"mucape"};
1814 #ifdef ERF_USE_PARTICLES
1816 ParticleData particleData;
1819 bool m_use_tracer_particles;
1822 void readTracersParams ();
1825 void initializeTracers ( amrex::ParGDBBase*,
1826 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>&,
1830 void restartTracers ( amrex::ParGDBBase*,
const std::string& );
1833 void evolveTracers (
int,
1835 amrex::Vector<amrex::Vector<amrex::MultiFab>>&,
1836 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& );
1840 #ifdef ERF_USE_MULTIBLOCK
1841 MultiBlockContainer *m_mbc =
nullptr;
1900 amrex::Vector<amrex::BoxArray>
ba1d;
1901 amrex::Vector<amrex::BoxArray>
ba2d;
1917 const amrex::DistributionMapping& dm);
1934 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
mf_PSFC;
1961 amrex::Vector<amrex::Gpu::DeviceVector<amrex::Real> >
d_w_subsid;
1964 amrex::Vector<amrex::Gpu::DeviceVector<amrex::Real> >
d_u_geos;
1967 amrex::Vector<amrex::Gpu::DeviceVector<amrex::Real> >
d_v_geos;
1971 amrex::Vector<amrex::Real>& u_geos,
1972 amrex::Gpu::DeviceVector<amrex::Real>& u_geos_d,
1973 amrex::Vector<amrex::Real>& v_geos,
1974 amrex::Gpu::DeviceVector<amrex::Real>& v_geos_d,
1975 const amrex::Geometry& lgeom,
1976 const amrex::Vector<amrex::Real>& zlev_stag);
1988 amrex::Vector<amrex::Vector<amrex::Gpu::DeviceVector<amrex::Real> > >
d_sponge_ptrs;
2008 std::unique_ptr<WriteBndryPlanes>
m_w2d =
nullptr;
2009 std::unique_ptr<ReadBndryPlanes>
m_r2d =
nullptr;
2030 static AMREX_FORCE_INLINE
2124 return static_cast<int>(
datalog.size());
2195 int numCores = amrex::ParallelDescriptor::NProcs();
2197 numCores = numCores * omp_get_max_threads();
2201 numCores * (amrex::ParallelDescriptor::second() -
startCPUTime) +
2209 if (amrex::ParallelDescriptor::IOProcessor())
2211 datalog[i] = std::make_unique<std::fstream>();
2212 datalog[i]->open(filename.c_str(),std::ios::out|std::ios::app);
2214 amrex::FileOpenFailed(filename);
2217 amrex::ParallelDescriptor::Barrier(
"ERF::setRecordDataInfo");
2222 if (amrex::ParallelDescriptor::IOProcessor())
2224 der_datalog[i] = std::make_unique<std::fstream>();
2225 der_datalog[i]->open(filename.c_str(),std::ios::out|std::ios::app);
2227 amrex::FileOpenFailed(filename);
2230 amrex::ParallelDescriptor::Barrier(
"ERF::setRecordDerDataInfo");
2235 if (amrex::ParallelDescriptor::IOProcessor())
2238 tot_e_datalog[i]->open(filename.c_str(),std::ios::out|std::ios::app);
2240 amrex::FileOpenFailed(filename);
2243 amrex::ParallelDescriptor::Barrier(
"ERF::setRecordEnergyDataInfo");
2248 amrex::MultiFab dummy(grids[lev],dmap[lev],1,0);
2249 for (amrex::MFIter mfi(dummy); mfi.isValid(); ++mfi)
2251 const amrex::Box& bx = mfi.validbox();
2252 if (bx.contains(cell)) {
2253 sampleptlog[i] = std::make_unique<std::fstream>();
2254 sampleptlog[i]->open(filename.c_str(),std::ios::out|std::ios::app);
2256 amrex::FileOpenFailed(filename);
2260 amrex::ParallelDescriptor::Barrier(
"ERF::setRecordSamplePointInfo");
2265 amrex::MultiFab dummy(grids[lev],dmap[lev],1,0);
2266 for (amrex::MFIter mfi(dummy); mfi.isValid(); ++mfi)
2268 const amrex::Box& bx = mfi.validbox();
2269 if (bx.contains(cell)) {
2271 samplelinelog[i]->open(filename.c_str(),std::ios::out|std::ios::app);
2273 amrex::FileOpenFailed(filename);
2277 amrex::ParallelDescriptor::Barrier(
"ERF::setRecordSampleLineInfo");
2303 amrex::Vector<std::unique_ptr<std::fstream> >
datalog;
2329 amrex::Vector<std::unique_ptr<eb_>>
eb;
2332 AMREX_ASSERT(lev >= 0 && lev <
eb.size() &&
eb[lev] !=
nullptr);
2342 [[nodiscard]] amrex::EBFArrayBoxFactory
const&
2344 AMREX_ASSERT(lev >= 0 && lev <
eb.size() &&
eb[lev] !=
nullptr);
2345 AMREX_ASSERT(
eb[lev]->get_const_factory() !=
nullptr);
2346 return *(
eb[lev]->get_const_factory());
2361 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::FFT::Poisson<amrex::MultiFab>>>> m_3D_poisson;
2362 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::FFT::PoissonHybrid<amrex::MultiFab>>>> m_2D_poisson;
2369 double artifact_time_seconds)
const;
2373 static void print_usage (MPI_Comm , std::ostream& );
2374 static void print_error (MPI_Comm ,
const std::string& msg);
AMREX_ENUM(StateInterpType, FullState, Perturbational)
@ tau23
Definition: ERF_DataStruct.H:48
@ tau13
Definition: ERF_DataStruct.H:48
Declares the embedded-boundary factory manager used by ERF levels.
Contains the Eulerian microphysics class.
Compact list of the wall faces of resolved buildings on one AMR level.
#define NBCVAR_max
Definition: ERF_IndexDefines.H:32
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:105
amrex::Real Real
Definition: ERF_ShocInterface.H:19
amrex::Vector< std::string > station_vars_3d
Definition: ERF.H:2294
void MakeHorizontalAverages()
Definition: ERF.cpp:4078
amrex::Vector< amrex::MultiFab > rU_new
Definition: ERF.H:1355
static int last_check_file_step
Definition: ERF.H:1577
amrex::Vector< std::unique_ptr< amrex::MultiFab > > walldist
Definition: ERF.H:1508
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:1980
amrex::Array< int, AMREX_SPACEDIM *2 > m_th_file_face
Definition: ERF.H:1557
void GetOceanToAtmosSurfaceLayout(amrex::BoxArray &ba, amrex::DistributionMapping &dm)
Definition: ERF_to_REMORA.cpp:263
bool metgrid_basic_linear
Definition: ERF.H:1885
amrex::Vector< amrex::Vector< amrex::Box > > boxes_at_level
Definition: ERF.H:1284
amrex::Vector< std::string > samplelinelogname
Definition: ERF.H:2315
void ReportTerrainSlopeFactor(int lev, bool force)
Definition: ERF_ComputeTimestep.cpp:248
int max_step
Definition: ERF.H:1600
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:1883
AMREX_FORCE_INLINE std::ostream & DerDataLog(int i)
Definition: ERF.H:2115
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::MultiFab > > > mapfac
Definition: ERF.H:1511
void setRayleighRefFromSounding(bool restarting)
Set Rayleigh mean profiles from input sounding.
Definition: ERF_InitRayleigh.cpp:85
static bool diffusive_dt_limit
Definition: ERF.H:1627
void init_only(int lev, double time)
Definition: ERF.cpp:3023
bool plot_surfmodel
Definition: ERF.H:1713
void BuildPlot3DScratch(const amrex::Vector< std::string > &plot_var_names, Plot3DScratch &scratch, int max_lev=-1, bool sync_solution=true)
Definition: ERF_Plotfile.cpp:300
void turbPert_amplitude_w(const int lev)
Definition: ERF_InitTurbPert.cpp:72
amrex::Vector< std::unique_ptr< MRISplitIntegrator< amrex::Vector< amrex::MultiFab > > > > mri_integrator_mem
Definition: ERF.H:1330
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > column_kextent
Definition: ERF.H:1911
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > d_sinesq_stag_ptrs
Definition: ERF.H:1992
void check_vels_for_nans(amrex::MultiFab const &xvel, amrex::MultiFab const &yvel, amrex::MultiFab const &zvel)
Definition: ERF.cpp:4373
void ibseb_write_checkpoint(const std::string &checkpointname, int lev) const
Definition: ERF_IBSEB.cpp:556
void Evolve()
Definition: ERF.cpp:147
amrex::Vector< amrex::MultiFab > avg_xmom
Definition: ERF.H:1337
amrex::Vector< std::string > urban_data_name
Definition: ERF.H:1398
amrex::Vector< amrex::MultiFab > pp_inc
Definition: ERF.H:1333
amrex::Real m_warned_coupled_sst_max
Definition: ERF.H:1042
amrex::Vector< ERFFillPatcher > FPr_u
Definition: ERF.H:1439
std::unique_ptr< SurfaceModel > m_SurfaceModel
Definition: ERF.H:1389
amrex::Vector< amrex::IntVect > sampleline
Definition: ERF.H:2316
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:1724
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SFS_q1fx3_lev
Definition: ERF.H:1462
amrex::Vector< double > t_new
Definition: ERF.H:1306
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Hwave_onegrid
Definition: ERF.H:1525
amrex::Vector< amrex::Vector< amrex::MultiFab > > vars_new
Definition: ERF.H:1314
void FillCoarsePatch(int lev, double time)
Definition: ERF_FillCoarsePatch.cpp:20
void WriteAtIntermediateTime(int nstep, double time)
Definition: ERF.cpp:246
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:4285
static constexpr int column_kextent_hi_sentinel
Definition: ERF.H:1914
static double startCPUTime
Definition: ERF.H:2189
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:2158
static double last_plot2d_file_time_1
Definition: ERF.H:1581
static void print_tpls(std::ostream &)
Definition: ERF_ConsoleIO.cpp:150
amrex::Vector< amrex::Real > dz_min
Definition: ERF.H:2028
amrex::Vector< amrex::MultiFab > lagged_delta_rt
Definition: ERF.H:1336
amrex::Real plane_sampling_per
Definition: ERF.H:2284
std::string DataLogName(int i) const noexcept
The filename of the ith datalog file.
Definition: ERF.H:2319
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:1645
std::string plot2d_file_2
Definition: ERF.H:1694
double m_plot3d_per_2
Definition: ERF.H:1706
static double bndry_output_planes_per
Definition: ERF.H:1947
amrex::Vector< std::unique_ptr< amrex::MultiFab > > thin_yforce
Definition: ERF.H:1570
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
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SFS_hfx3_lev
Definition: ERF.H:1460
amrex::Vector< amrex::Vector< amrex::Real > > h_w_subsid
Definition: ERF.H:1960
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:103
amrex::Vector< std::unique_ptr< ShocDriver > > native_shoc_driver
Definition: ERF.H:1430
amrex::Vector< std::unique_ptr< std::fstream > > datalog
Definition: ERF.H:2303
std::string MakeFilename_EyeTracker_maxvel(int nstep)
Definition: ERF_TrackerOutput.cpp:69
BaseStateParams wrf_bsp
Definition: ERF.H:1926
amrex::Vector< ERFFillPatcher > FPr_v
Definition: ERF.H:1440
int cf_set_width
Definition: ERF.H:1437
void initializeEB()
Definition: ERF_EBInit.cpp:23
std::unique_ptr< amrex::MultiFab > wrf_MUB
Definition: ERF.H:1930
void setPlotVariables(const std::string &pp_plot_var_names, amrex::Vector< std::string > &plot_var_names)
Definition: ERF_Plotfile.cpp:21
amrex::Gpu::DeviceVector< amrex::Real > d_havg_temperature
Definition: ERF.H:2001
void post_timestep(int nstep, double time, double dt_lev)
Definition: ERF.cpp:604
std::unique_ptr< amrex::MultiFab > wrf_C1H
Definition: ERF.H:1928
std::string erfbdy_file
Definition: ERF.H:1897
void init_obs_nudging()
Definition: ERF.cpp:2398
static int last_plot2d_file_step_2
Definition: ERF.H:1576
int station_sampling_interval
Definition: ERF.H:2289
bool ibseb_after_radiation() const
Definition: ERF.H:817
bool init_Dirichlet_bc_data(const std::string input_file)
Definition: ERF_InitBCs.cpp:796
IBSEBParams ibseb_params
Definition: ERF.H:1496
const int timeprecision
Definition: ERF.H:1593
amrex::Vector< amrex::Vector< amrex::MultiFab * > > urban_data
Definition: ERF.H:1397
void setRecordDataInfo(int i, const std::string &filename)
Definition: ERF.H:2207
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SFS_hfx1_lev
Definition: ERF.H:1460
void canonicalizePlot3DVariables(amrex::Vector< std::string > &plot_var_names)
Definition: ERF_Plotfile.cpp:59
amrex::Vector< std::array< amrex::Real, 2 > > hurricane_eye_track_xy
Definition: ERF.H:282
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:163
amrex::Vector< amrex::BoxArray > ba2d
Definition: ERF.H:1901
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_extdir_vals
Definition: ERF.H:1542
void init_stations()
Definition: ERF_StationSampler.cpp:695
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:228
amrex::Vector< amrex::Vector< amrex::MultiFab > > gradp
Definition: ERF.H:1318
std::string plot3d_file_1
Definition: ERF.H:1691
eb_ const & get_eb(int lev) const noexcept
Definition: ERF.H:2331
amrex::Gpu::DeviceVector< amrex::Real > d_havg_qv
Definition: ERF.H:2003
amrex::Vector< std::unique_ptr< amrex::MultiFab > > qfx3_EB
Definition: ERF.H:1469
static amrex::Real column_loc_y
Definition: ERF.H:1941
static bool plot_file_on_restart
Definition: ERF.H:1588
amrex::Vector< amrex::Vector< amrex::MultiFab > > bckgnd_state
Definition: ERF.H:295
amrex::Long m_warned_coupled_sst_nan
Definition: ERF.H:1043
static int mg_verbose
Definition: ERF.H:1845
double m_check_per
Definition: ERF.H:1722
void ReadParameters()
Definition: ERF.cpp:3201
static double sum_per
Definition: ERF.H:1853
static amrex::Vector< std::string > PlotFileVarNames(amrex::Vector< std::string > plot_var_names)
Definition: ERF_Plotfile.cpp:278
amrex::Vector< amrex::Vector< amrex::MultiFab > > forecast_state_interp
Definition: ERF.H:290
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:1342
amrex::Vector< double > dt
Definition: ERF.H:1308
static double stop_time
Definition: ERF.H:1604
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:1934
void flush_stations() const
Definition: ERF_StationSampler.cpp:1537
ERF()
Definition: ERF_Constructors.cpp:171
amrex::Vector< std::unique_ptr< amrex::MultiFab > > z_phys_nd_src
Definition: ERF.H:1483
amrex::Vector< std::unique_ptr< amrex::MultiFab > > detJ_cc
Definition: ERF.H:1478
void seb_surface_layer_fluxes(int lev, const amrex::MultiFab *&sens_flux, const amrex::MultiFab *&laten_flux) const
Definition: ERF.cpp:524
amrex::Vector< std::string > lsm_flux_name
Definition: ERF.H:1395
amrex::Vector< std::unique_ptr< amrex::MultiFab > > z_phys_cc
Definition: ERF.H:1476
amrex::Vector< amrex::BoxArray > slope_report_grids
Definition: ERF.H:1634
static double column_per
Definition: ERF.H:1939
amrex::Vector< std::unique_ptr< eb_ > > eb
Definition: ERF.H:2329
amrex::Vector< std::unique_ptr< amrex::MultiFab > > eddyDiffs_lev
Definition: ERF.H:1446
static SolverChoice solverChoice
Definition: ERF.H:1809
static constexpr int column_kextent_lo_sentinel
Definition: ERF.H:1913
amrex::Vector< std::unique_ptr< amrex::MultiFab > > hfx3_EB
Definition: ERF.H:1468
int mean_vars_time_reset_done
Definition: ERF.H:1328
amrex::Vector< ERFFillPatcher > FPr_c
Definition: ERF.H:1438
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:2540
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:1657
bool plot_rad
Definition: ERF.H:1432
TwoStreamRadiation two_stream_rad
Definition: ERF.H:1424
amrex::Vector< amrex::Real > diffusive_fourier_warned
Definition: ERF.H:1632
amrex::Vector< std::array< amrex::Real, 2 > > hurricane_tracker_circle
Definition: ERF.H:286
static bool use_fft
Definition: ERF.H:1846
bool m_plot_face_vels
Definition: ERF.H:1709
amrex::Vector< std::array< amrex::Real, 2 > > hurricane_maxvel_vs_time
Definition: ERF.H:284
void turbPert_update(const int lev, const double dt)
Definition: ERF_InitTurbPert.cpp:18
void sum_derived_quantities(double time)
Definition: ERF_WriteScalarProfiles.cpp:179
amrex::Vector< amrex::MultiFab > base_state_new
Definition: ERF.H:1520
std::string plot3d_file_2
Definition: ERF.H:1692
void ibseb_set_two_stream_sun(int lev, amrex::Real time)
Definition: ERF_IBSEB.cpp:438
amrex::Vector< std::unique_ptr< amrex::MultiFab > > az
Definition: ERF.H:1481
int regrid_int
Definition: ERF.H:1644
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)
Definition: ERF_Write1DProfiles.cpp:241
void sample_stations(amrex::Real time)
Definition: ERF_StationSampler.cpp:1254
bool write_erfbdy
Definition: ERF.H:1894
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:1988
amrex::Vector< std::unique_ptr< amrex::MultiFab > > precip
Definition: ERF.H:1374
amrex::Vector< long > dt_mri_ratio
Definition: ERF.H:1309
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::MultiFab > > > Tau
Definition: ERF.H:1444
amrex::Vector< std::unique_ptr< amrex::MultiFab > > vel_t_avg
Definition: ERF.H:1321
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SFS_q2fx3_lev
Definition: ERF.H:1463
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::iMultiFab > > > lmask_lev
Definition: ERF.H:1452
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:2144
amrex::Vector< amrex::Real > h_havg_pressure
Definition: ERF.H:1996
void update_diffusive_arrays(int lev, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm)
Definition: ERF_MakeNewArrays.cpp:698
bool regrid_level_0_on_restart_in_effect
Definition: ERF.H:1658
std::unique_ptr< amrex::MultiFab > wrf_PHB
Definition: ERF.H:1932
static int verbose
Definition: ERF.H:1844
amrex::Vector< amrex::Real > h_havg_qc
Definition: ERF.H:1998
amrex::Vector< std::unique_ptr< ERFPhysBCFunct_w > > physbcs_w
Definition: ERF.H:1345
static int nghost_eb_basic()
Definition: ERF.H:2349
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:243
amrex::Vector< double > last_subvol_time
Definition: ERF.H:1586
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
static std::string column_file_name
Definition: ERF.H:1942
amrex::Vector< std::unique_ptr< std::fstream > > samplelinelog
Definition: ERF.H:2314
amrex::Vector< std::unique_ptr< amrex::MultiFab > > terrain_blanking
Definition: ERF.H:1502
amrex::Vector< std::unique_ptr< amrex::MultiFab > > terrain_blanking_xface
Definition: ERF.H:1503
std::unique_ptr< Microphysics > micro
Definition: ERF.H:1365
void surface_flux_sources(int lev, const amrex::MultiFab *&sens_flux, const amrex::MultiFab *&laten_flux) const
Definition: ERF_Plotfile2D.cpp:173
int m_plot2d_int_2
Definition: ERF.H:1700
amrex::Vector< amrex::MultiFab > base_state
Definition: ERF.H:1519
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:2101
int m_plot3d_int_1
Definition: ERF.H:1697
amrex::Vector< amrex::Real > h_havg_density
Definition: ERF.H:1994
amrex::Vector< int > m_skin_uncoupled_warned
Definition: ERF.H:456
static double last_plot2d_file_time_2
Definition: ERF.H:1582
amrex::Vector< std::unique_ptr< amrex::MultiFab > > z_phys_nd_new
Definition: ERF.H:1490
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)
Definition: ERF_Write1DProfiles_stag.cpp:358
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:732
const amrex::Vector< std::string > derived_subvol_names
Definition: ERF.H:1805
amrex::Vector< std::array< amrex::Real, 2 > > hurricane_minpressure_vs_time
Definition: ERF.H:285
bool metgrid_retain_sfc
Definition: ERF.H:1888
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Qv_prim
Definition: ERF.H:1350
static int sum_interval
Definition: ERF.H:1851
static int pert_interval
Definition: ERF.H:1852
amrex::Real line_sampling_per
Definition: ERF.H:2283
void restart()
Definition: ERF.cpp:2968
void ibseb_report(int nstep, amrex::Real time)
Definition: ERF_IBSEB.cpp:579
amrex::Vector< double > t_avg_cnt
Definition: ERF.H:1322
static int last_plot3d_file_step_2
Definition: ERF.H:1574
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SFS_q1fx2_lev
Definition: ERF.H:1462
amrex::Vector< double > fixed_fast_dt
Definition: ERF.H:1639
amrex::IntVect & SampleLine(int i)
Definition: ERF.H:2177
void build_fine_mask(int lev, amrex::MultiFab &fine_mask)
Definition: ERF_VolWgtSum.cpp:155
void HurricaneMaxVelTracker(const amrex::Geometry &geom, const amrex::MultiFab &mf_cc_vel, const double &time)
Definition: ERF_HurricaneDiagnostics.cpp:678
amrex::Real station_sampling_per
Definition: ERF.H:2290
amrex::Real calday
Definition: ERF.H:1419
int file_name_digits
Definition: ERF.H:1861
amrex::Vector< amrex::MultiFab > rV_new
Definition: ERF.H:1357
std::string PlotFileName(int lev) const
static bool diffusive_dt_check
Definition: ERF.H:1626
void initialize_integrator(int lev, amrex::MultiFab &cons_mf, amrex::MultiFab &vel_mf)
Definition: ERF_MakeNewArrays.cpp:1245
amrex::Vector< std::unique_ptr< amrex::MultiFab > > thin_zforce
Definition: ERF.H:1571
amrex::Vector< std::string > plot3d_var_names_2
Definition: ERF.H:1727
void sample_points(int lev, double time, amrex::IntVect cell, amrex::MultiFab &mf)
Definition: ERF_WriteScalarProfiles.cpp:537
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:374
amrex::Vector< amrex::BCRec > domain_bcs_type
Definition: ERF.H:1535
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Qr_prim
Definition: ERF.H:1351
void HurricaneEyeTrackerNotInitial(const SolverChoice &sc, const amrex::Geometry &geom, const amrex::MultiFab &mf_cc_vel, const amrex::Vector< amrex::MultiFab > &S_data)
Definition: ERF_HurricaneDiagnostics.cpp:368
void ibseb_check_refined_levels() const
Definition: ERF_IBSEB.cpp:226
void resolve_station_stencils()
Definition: ERF_StationSampler.cpp:924
void apply_gaussian_smoothing_to_perturbations(const int lev, amrex::MultiFab &mf_cc_pert)
Definition: ERF_InitForEnsemble.cpp:117
std::string pp_prefix
Definition: ERF.H:918
std::string SampleLineLogName(int i) const noexcept
The filename of the ith samplelinelog file.
Definition: ERF.H:2326
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::MultiFab > > > sst_lev
Definition: ERF.H:1450
amrex::Vector< amrex::TableData< amrex::Real, 1 > > t_plane_avg
Definition: ERF.H:1257
amrex::Vector< std::string > plot2d_var_names_1
Definition: ERF.H:1728
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:1569
AMREX_FORCE_INLINE int NumSamplePoints() noexcept
Definition: ERF.H:2171
static bool grids_are_split_in_z(const amrex::BoxArray &ba)
Definition: ERF_MakeNewArrays.cpp:611
bool metgrid_use_sfc
Definition: ERF.H:1887
amrex::Vector< std::unique_ptr< amrex::YAFluxRegister > > advflux_reg
Definition: ERF.H:1530
void sample_lines(int lev, double time, amrex::IntVect cell, amrex::MultiFab &mf)
Definition: ERF_WriteScalarProfiles.cpp:573
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:115
void interp_psfc_from_coarse(int lev)
Definition: ERF.cpp:2517
void init_custom(int lev)
Definition: ERF_InitCustomPertState.cpp:26
amrex::Vector< std::unique_ptr< IRadiation > > rad
Definition: ERF.H:1409
std::unique_ptr< ProblemBase > prob
Definition: ERF.H:1280
amrex::Vector< int > num_files_at_level
Definition: ERF.H:1283
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:479
static double last_plot3d_file_time_2
Definition: ERF.H:1580
void init_bcs()
Definition: ERF_InitBCs.cpp:323
int profile_int
Definition: ERF.H:1716
erf_cloud_chamber::Config cloud_chamber_config
Definition: ERF.H:1372
bool metgrid_debug_quiescent
Definition: ERF.H:1879
amrex::Vector< std::unique_ptr< ERFPhysBCFunct_u > > physbcs_u
Definition: ERF.H:1343
bool destag_profiles
Definition: ERF.H:1717
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > stretched_dz_d
Definition: ERF.H:1517
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > th_bc_data
Definition: ERF.H:1253
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:210
std::string DerDataLogName(int i) const noexcept
Definition: ERF.H:2320
void make_terrain_blanking(int lev)
Definition: ERF_MakeNewArrays.cpp:1153
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:1042
void project_momenta(int lev, double l_time, double l_dt, amrex::Vector< amrex::MultiFab > &vars)
Definition: ERF_PoissonSolve.cpp:148
int m_check_int
Definition: ERF.H:1721
void HurricaneEyeTrackerInitial(const SolverChoice &sc, const amrex::Geometry &geom, const amrex::Vector< amrex::MultiFab > &S_data, const amrex::Real &hurricane_eye_latitude, const amrex::Real &hurricane_eye_longitude)
Definition: ERF_HurricaneDiagnostics.cpp:229
void ReadVelsOnlyFromCheckpointFile(int lev_to_fill, std::string &chkfile)
Definition: ERF_Checkpoint.cpp:2195
void set_surface_layer_skin(int lev)
Definition: ERF.cpp:415
amrex::Vector< std::unique_ptr< amrex::MultiFab > > terrain_blanking_zface
Definition: ERF.H:1505
void appendPlot3DVariables(const amrex::Vector< std::string > &plot_var_names, amrex::Vector< std::string > &a_plot_var_names)
Definition: ERF_Plotfile.cpp:221
std::unique_ptr< amrex::iMultiFab > m_coupled_sst_valid
Definition: ERF.H:1032
static double last_plot3d_file_time_1
Definition: ERF.H:1579
double m_plot2d_per_2
Definition: ERF.H:1708
amrex::Vector< amrex::MultiFab > surface_state_1
Definition: ERF.H:291
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SFS_diss_lev
Definition: ERF.H:1461
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > d_sinesq_ptrs
Definition: ERF.H:1991
amrex::Vector< amrex::MultiFab > rU_old
Definition: ERF.H:1354
amrex::Vector< std::unique_ptr< InputSoundingData > > input_sounding_data_fine
Definition: ERF.H:1244
bool HasRadiation() const
Definition: ERF.H:195
void ibseb_check_sun_matches_two_stream() const
Definition: ERF_IBSEB.cpp:308
AMREX_FORCE_INLINE int NumSampleLines() noexcept
Definition: ERF.H:2184
amrex::Array< bool, AMREX_SPACEDIM *2 > m_bc_nonreflecting
Definition: ERF.H:1554
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Theta_prim
Definition: ERF.H:1349
static double getCPUTime()
Definition: ERF.H:2193
void write_1D_profiles(double time)
Definition: ERF_Write1DProfiles.cpp:21
amrex::Vector< std::unique_ptr< amrex::MultiFab > > z_t_rk
Definition: ERF.H:1493
static int check_for_nans
Definition: ERF.H:1848
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:1392
void appendPlotVariables(const std::string &pp_plot_var_names, amrex::Vector< std::string > &plot_var_names)
Definition: ERF_Plotfile.cpp:185
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:1303
int nvars_erfbdy
Definition: ERF.H:1898
amrex::Vector< std::unique_ptr< ERFPhysBCFunct_v > > physbcs_v
Definition: ERF.H:1344
void SetDirsForPlotfilesAndCheckpointsForDA(const int da_iter, const int ens_no)
amrex::Real m_warned_coupled_sst_min
Definition: ERF.H:1041
amrex::Vector< double > t_old
Definition: ERF.H:1307
amrex::Vector< std::string > tot_e_datalogname
Definition: ERF.H:2308
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:27
static int output_bndry_planes
Definition: ERF.H:1945
void project_velocity_tb(int lev, double dt, amrex::Vector< amrex::MultiFab > &vars)
Definition: ERF_PoissonSolve_tb.cpp:35
bool m_seb_surface_layer_checked
check_seb_surface_layer has run
Definition: ERF.H:452
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > d_v_geos
Definition: ERF.H:1967
void update_terrain_arrays(int lev)
Definition: ERF_MakeNewArrays.cpp:1228
bool HasCloudWater() const
Definition: ERF.H:208
static std::string nc_bdy_file
Definition: ERF.H:1871
bool metgrid_interp_theta
Definition: ERF.H:1884
static amrex::Vector< amrex::Vector< std::string > > nc_init_file
Definition: ERF.H:1867
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:958
static int input_bndry_planes
Definition: ERF.H:1951
TwoStreamRadiation::OrbitalCache ibseb_orbit
Orbit of the year for erf.ibseb.sun_mode = two_stream.
Definition: ERF.H:1498
static StateInterpType interpolation_type
Definition: ERF.H:1864
LargeScaleForcingData lsf
Definition: ERF.H:1401
amrex::Gpu::DeviceVector< amrex::Real > d_havg_qc
Definition: ERF.H:2004
amrex::Real cloud_fraction(double time)
Definition: ERF_WriteScalarProfiles.cpp:458
void AverageDown()
Definition: ERF_AverageDown.cpp:16
std::set< std::string > user_specified_inputs
Definition: ERF.H:926
amrex::Vector< amrex::Vector< amrex::Real > > h_v_geos
Definition: ERF.H:1966
bool regrid_level_0_on_restart
Definition: ERF.H:1648
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Lwave_onegrid
Definition: ERF.H:1526
void advance_microphysics(int lev, amrex::MultiFab &cons_in, const double &dt_advance, const int &iteration, const double &time)
Definition: ERF_AdvanceMicrophysics.cpp:6
InputSoundingData input_sounding_data
Definition: ERF.H:1240
void write_1D_profiles_stag(double time)
Definition: ERF_Write1DProfiles_stag.cpp:29
amrex::Vector< amrex::Vector< amrex::Real > > h_sinesq_ptrs
Definition: ERF.H:1983
void create_random_perturbations(const int lev, amrex::MultiFab &mf_cc_pert)
Definition: ERF_InitForEnsemble.cpp:33
void Write2DPlotFile(int which, PlotFileType plotfile_type, amrex::Vector< std::string > plot_var_names)
Definition: ERF_Plotfile2D.cpp:714
amrex::Gpu::DeviceVector< amrex::Real > d_havg_density
Definition: ERF.H:2000
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rhotheta_src
Definition: ERF.H:1957
void init_from_hse(int lev)
Definition: ERF_InitFromHSE.cpp:32
const std::string datetime_format
Definition: ERF.H:1607
void define_column_kextent(int lev, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm)
Definition: ERF_MakeNewArrays.cpp:635
void check_mesh_type(int lev)
Definition: ERF.cpp:4543
erf_provenance::ExecutionProvenance execution_provenance
Definition: ERF.H:1614
const amrex::MultiFab & station_ground(int lev)
Definition: ERF_StationSampler.cpp:1509
int metgrid_force_sfc_k
Definition: ERF.H:1891
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:1954
bool real_extrap_w
Definition: ERF.H:1873
static amrex::Real cfl
Definition: ERF.H:1617
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:1514
amrex::Gpu::DeviceVector< amrex::BCRec > domain_bcs_type_d
Definition: ERF.H:1536
amrex::Vector< double > t_mean_cnt
Definition: ERF.H:1326
amrex::Vector< std::unique_ptr< ForestDrag > > m_forest_drag
Definition: ERF.H:2011
const int datwidth
Definition: ERF.H:1591
amrex::Vector< amrex::BoxArray > ba1d
Definition: ERF.H:1900
InputSpongeData input_sponge_data
Definition: ERF.H:1247
amrex::Vector< amrex::Vector< amrex::BoxArray > > subdomains
Definition: ERF.H:2026
void check_state_for_nans(amrex::MultiFab const &S)
Definition: ERF.cpp:4306
bool diffusive_first_call
Definition: ERF.H:1630
std::string restart_chkfile
Definition: ERF.H:1610
bool metgrid_use_below_sfc
Definition: ERF.H:1886
amrex::Vector< std::string > sampleptlogname
Definition: ERF.H:2311
void ibseb_check_two_stream_provider() const
Definition: ERF_IBSEB.cpp:383
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > xvel_bc_data
Definition: ERF.H:1250
void InitData_pre()
Definition: ERF.cpp:899
amrex::IntVect & SamplePoint(int i)
Definition: ERF.H:2164
bool use_datetime
Definition: ERF.H:1606
amrex::Vector< std::array< amrex::Real, 2 > > hurricane_track_xy
Definition: ERF.H:281
amrex::Vector< amrex::Vector< amrex::Real > > h_u_geos
Definition: ERF.H:1963
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:894
void InitializeLevelFromData(int lev, const amrex::MultiFab &initial_data)
std::string subvol_file
Definition: ERF.H:1695
int rad_datalog_int
Definition: ERF.H:1433
amrex::Vector< std::string > datalogname
Definition: ERF.H:2306
void initHSE()
Initialize HSE.
Definition: ERF_Init1D.cpp:208
void AverageDownTo(int crse_lev, int scomp, int ncomp, bool do_perturbational_and_momenta=true)
Definition: ERF_AverageDown.cpp:36
static amrex::Real column_loc_x
Definition: ERF.H:1940
static double dt_max
Definition: ERF.H:1622
amrex::Vector< amrex::MultiFab > surface_state_2
Definition: ERF.H:292
amrex::Vector< std::unique_ptr< amrex::MultiFab > > ax
Definition: ERF.H:1479
amrex::Vector< std::unique_ptr< amrex::MultiFab > > z_phys_nd
Definition: ERF.H:1475
void MakeDiagnosticAverage(amrex::Vector< amrex::Real > &h_havg, amrex::MultiFab &S, int n)
Definition: ERF.cpp:4184
amrex::Real metgrid_proximity
Definition: ERF.H:1889
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:21
void setRecordDerDataInfo(int i, const std::string &filename)
Definition: ERF.H:2220
amrex::Vector< amrex::Real > h_havg_temperature
Definition: ERF.H:1995
amrex::Vector< std::unique_ptr< std::fstream > > sampleptlog
Definition: ERF.H:2310
void poisson_wall_dist(int lev)
Definition: ERF_PoissonWallDist.cpp:28
amrex::Vector< std::array< amrex::Real, 2 > > hurricane_eye_track_latlon
Definition: ERF.H:283
bool m_checked_coupled_sst
Definition: ERF.H:1038
amrex::Vector< std::unique_ptr< amrex::MultiFab > > detJ_cc_src
Definition: ERF.H:1485
amrex::Gpu::DeviceVector< amrex::Real > d_havg_pressure
Definition: ERF.H:2002
static bool is_it_time_for_action(int nstep, double time, double dt, int action_interval, double action_per)
Definition: ERF_WriteScalarProfiles.cpp:663
std::string plot2d_file_1
Definition: ERF.H:1693
void Advance(int lev, double time, double dt_lev, int iteration, int ncycle)
Definition: ERF_Advance.cpp:22
void ResetIntervalMeans()
Definition: ERF.cpp:365
amrex::Vector< amrex::TableData< amrex::Real, 1 > > r_plane_avg
Definition: ERF.H:1256
amrex::Vector< std::string > der_datalogname
Definition: ERF.H:2307
void ComputeDiffusiveRates(int lev, amrex::Real &rate_mom, amrex::Real &rate_scal) const
Definition: ERF_ComputeTimestep.cpp:165
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SmnSmn_lev
Definition: ERF.H:1447
const amrex::Vector< std::string > derived_names
Definition: ERF.H:1739
void fill_seb_from_coarse(int lev)
Fill a newly built level's two-stream SEB state from its parent.
Definition: ERF.cpp:549
void sum_integrated_quantities(double time)
Definition: ERF_WriteScalarProfiles.cpp:19
std::string MakeVTKFilename_TrackerCircle(int nstep)
Definition: ERF_TrackerOutput.cpp:27
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)
Definition: ERF_HurricaneDiagnostics.cpp:77
amrex::Vector< std::unique_ptr< amrex::MultiFab > > ay_src
Definition: ERF.H:1487
std::unique_ptr< StationSampler > station_sampler
Definition: ERF.H:2291
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:2108
std::string MakeVTKFilename_EyeTracker_xy(int nstep)
Definition: ERF_TrackerOutput.cpp:41
amrex::Vector< double > m_subvol_per
Definition: ERF.H:1703
amrex::Vector< int > nsubsteps
Definition: ERF.H:1287
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > yflux_imask
Definition: ERF.H:1564
amrex::Vector< amrex::MultiFab > rW_new
Definition: ERF.H:1359
amrex::Vector< amrex::MultiFab > weather_forecast_data_2
Definition: ERF.H:287
amrex::Vector< std::unique_ptr< amrex::MultiFab > > lon_m
Definition: ERF.H:1234
std::unique_ptr< WriteBndryPlanes > m_w2d
Definition: ERF.H:2008
AMREX_FORCE_INLINE std::ostream & SampleLineLog(int i)
Definition: ERF.H:2151
void HurricaneMinPressureTracker(MoistureType moisture_type, const amrex::Geometry &geom, const amrex::MultiFab &mf_cons_var, const double &time)
Definition: ERF_HurricaneDiagnostics.cpp:742
amrex::Vector< amrex::Vector< amrex::MultiFab * > > lsm_flux
Definition: ERF.H:1396
double EvolveOneStep(double time, double dt_request)
Definition: ERF_to_REMORA.cpp:221
bool use_erfbdy
Definition: ERF.H:1895
amrex::Vector< std::unique_ptr< SurfaceLayer > > m_SurfaceLayer
Definition: ERF.H:2010
const LargeScaleForcingData & lsf_at_level(int lev)
Definition: ERF_InitFromInputSounding.cpp:123
amrex::Vector< std::string > plot3d_var_names_1
Definition: ERF.H:1726
std::string SamplePointLogName(int i) const noexcept
The filename of the ith sampleptlog file.
Definition: ERF.H:2323
void InitData_post()
Definition: ERF.cpp:956
void init_ibseb()
Definition: ERF_IBSEB.cpp:48
void refinement_criteria_setup()
Definition: ERF_Tagging.cpp:502
double estTimeStep(int lev, long &dt_fast_ratio) const
Definition: ERF_ComputeTimestep.cpp:304
static int nghost_eb_volume()
Definition: ERF.H:2353
bool metgrid_debug_dry
Definition: ERF.H:1881
static AMREX_FORCE_INLINE int ComputeGhostCells(const SolverChoice &sc)
Definition: ERF.H:2032
static int bndry_output_planes_interval
Definition: ERF.H:1946
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:202
amrex::Vector< std::string > plot2d_var_names_2
Definition: ERF.H:1729
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::MultiFab > > > Tau_corr
Definition: ERF.H:1445
void FillPatchCrseLevel(int lev, double time, const amrex::Vector< amrex::MultiFab * > &mfs_vel, bool cons_only=false)
Definition: ERF_FillPatch.cpp:356
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 sum_energy_quantities(double time)
Definition: ERF_WriteScalarProfiles.cpp:318
void make_flux_register(int lev)
Definition: ERF_MakeNewArrays.cpp:684
static int nghost_eb_full()
Definition: ERF.H:2356
void RemakeLevel(int lev, amrex::Real time, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm) override
Definition: ERF_MakeNewLevel.cpp:853
static void GotoNextLine(std::istream &is)
Definition: ERF_Checkpoint.cpp:141
void MakeNewLevelFromScratch(int lev, amrex::Real time, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm) override
Definition: ERF_MakeNewLevel.cpp:28
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:25
amrex::Vector< amrex::MultiFab > zmom_crse_rhs
Definition: ERF.H:1363
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:1880
void PerformDataAssimilation(int da_iter)
amrex::Vector< std::string > lsm_data_name
Definition: ERF.H:1393
std::unique_ptr< erf_sbm::SBMStateManager > sbm_state_manager
Definition: ERF.H:1366
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rhoqt_src
Definition: ERF.H:1958
void initSponge()
Initialize sponge profiles.
Definition: ERF_InitSponge.cpp:35
std::unique_ptr< PlaneSampler > plane_sampler
Definition: ERF.H:2286
void check_for_low_temp(amrex::MultiFab &S)
Definition: ERF.cpp:4388
amrex::Vector< std::unique_ptr< std::fstream > > der_datalog
Definition: ERF.H:2304
static amrex::Vector< amrex::Vector< int > > have_read_nc_init_file
Definition: ERF.H:1868
amrex::Vector< std::unique_ptr< std::fstream > > tot_e_datalog
Definition: ERF.H:2305
amrex::Vector< std::unique_ptr< amrex::MultiFab > > sinPhi_m
Definition: ERF.H:1236
amrex::Real ibseb_bulk_richardson_height(int lev, const amrex::MultiFab &cons, const amrex::MultiFab &xvel, const amrex::MultiFab &yvel)
Definition: ERF_IBSEB.cpp:616
static double previousCPUTimeUsed
Definition: ERF.H:2190
void writeJobInfo(const std::string &dir, erf_provenance::ArtifactType artifact_type, int artifact_step, double artifact_time_seconds) const
Definition: ERF_WriteJobInfo.cpp:16
bool m_driver_has_atm2ocn_coupling
Definition: ERF.H:1022
double m_plot3d_per_1
Definition: ERF.H:1705
int real_width
Definition: ERF.H:1872
void MakeNewLevelFromCoarse(int lev, amrex::Real time, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm) override
Definition: ERF_MakeNewLevel.cpp:414
amrex::Vector< int > last_subvol_step
Definition: ERF.H:1585
void fill_from_bndryregs(const amrex::Vector< amrex::MultiFab * > &mfs, double time)
Definition: ERF_BoundaryConditionsBndryReg.cpp:13
amrex::Vector< std::unique_ptr< amrex::MultiFab > > ax_src
Definition: ERF.H:1486
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:803
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::MultiFab > > > urb_frac_lev
Definition: ERF.H:1457
amrex::Vector< std::unique_ptr< amrex::MultiFab > > z_phys_cc_src
Definition: ERF.H:1484
void input_sponge(int lev)
Definition: ERF_InitSponge.cpp:17
amrex::Vector< std::unique_ptr< amrex::MultiFab > > nudge_data
Definition: ERF.H:1406
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > d_u_geos
Definition: ERF.H:1964
bool m_driver_uses_two_way_coupling
Definition: ERF.H:1023
void Define_ERFFillPatchers(int lev)
Definition: ERF.cpp:4259
AMREX_FORCE_INLINE int NumDataLogs() noexcept
Definition: ERF.H:2122
static PlotFileType plotfile3d_type_2
Definition: ERF.H:1857
void setRecordEnergyDataInfo(int i, const std::string &filename)
Definition: ERF.H:2233
TurbulentPerturbation turbPert
Definition: ERF.H:1812
amrex::Vector< amrex::MultiFab > rW_old
Definition: ERF.H:1358
amrex::Vector< double > fixed_dt
Definition: ERF.H:1638
void ResetIntervalMeansAfter3DPlotfileBatch(int plotfiles_written, bool interval_diagnostic_consumed)
Definition: ERF.cpp:351
amrex::Vector< amrex::Vector< amrex::MultiFab > > forecast_state_2
Definition: ERF.H:289
bool has_own_init_file(int lev) const
Definition: ERF.cpp:2428
amrex::Vector< std::unique_ptr< amrex::MultiFab > > station_ib_ground
Definition: ERF.H:2297
void check_for_negative_theta(amrex::MultiFab &S)
Definition: ERF.cpp:4468
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:2664
amrex::Vector< std::unique_ptr< amrex::MultiFab > > lsf_data
Definition: ERF.H:1407
void ClearLevel(int lev) override
Definition: ERF_MakeNewLevel.cpp:1539
std::string MakeFilename_EyeTracker_minpressure(int nstep)
Definition: ERF_TrackerOutput.cpp:83
std::unique_ptr< amrex::MultiFab > wrf_RDNW
Definition: ERF.H:1931
void HurricaneEyeTracker(const SolverChoice &solverChoice, const amrex::MultiFab &mf_cc_vel)
Definition: ERF_HurricaneDiagnostics.cpp:644
static double dt_max_initial
Definition: ERF.H:1621
static PlotFileType plotfile2d_type_2
Definition: ERF.H:1859
int plane_sampling_interval
Definition: ERF.H:2282
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:2016
void make_physbcs(int lev)
Definition: ERF_MakeNewArrays.cpp:1268
amrex::Vector< std::unique_ptr< amrex::MultiFab > > terrain_blanking_yface
Definition: ERF.H:1504
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > d_w_subsid
Definition: ERF.H:1961
amrex::Vector< ERFFillPatcher > FPr_w
Definition: ERF.H:1441
void resolve_station_positions()
Definition: ERF_StationSampler.cpp:844
std::unique_ptr< erf_auxiliary::AuxiliaryInertTracer > auxiliary_inert_tracer
Definition: ERF.H:1370
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SFS_hfx2_lev
Definition: ERF.H:1460
void WriteLinePlot(const std::string &filename, amrex::Vector< std::array< amrex::Real, 2 >> &points_xy)
Definition: ERF_Write1DProfiles.cpp:642
bool m_warned_coupled_sst_declined
Definition: ERF.H:1035
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::iMultiFab > > > soil_type_lev
Definition: ERF.H:1456
amrex::Vector< amrex::Vector< amrex::Real > > zlevels_stag
Definition: ERF.H:1472
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:499
AMREX_FORCE_INLINE int NumDerDataLogs() noexcept
Definition: ERF.H:2129
amrex::EBFArrayBoxFactory const & EBFactory(int lev) const noexcept
Definition: ERF.H:2343
amrex::Vector< amrex::Vector< amrex::MultiFab * > > lsm_data
Definition: ERF.H:1394
void init_immersed_forcing(int lev)
Definition: ERF_InitImmersedForcing.cpp:15
amrex::Vector< amrex::Vector< amrex::Real > > stretched_dz_h
Definition: ERF.H:1516
amrex::Vector< std::unique_ptr< LargeScaleForcingData > > lsf_fine
Definition: ERF.H:1405
bool use_real_time_in_pltname
Definition: ERF.H:1862
int m_plot2d_int_1
Definition: ERF.H:1699
void WriteCheckpointFile() const
Definition: ERF_Checkpoint.cpp:151
amrex::Array< amrex::Array< erf_wall_scalar_bc::WallScalarBCIntent, AMREX_SPACEDIM *2 >, NBCVAR_max > m_wall_scalar_bc_intent
Definition: ERF.H:1551
static int output_1d_column
Definition: ERF.H:1937
void interp_land_masks_from_coarse(int lev)
Definition: ERF.cpp:2574
bool metgrid_debug_psfc
Definition: ERF.H:1882
void ReadStormTrackerRestart()
Definition: ERF_HurricaneDiagnostics.cpp:479
bool Write3DPlotFile(int which, PlotFileType plotfile_type, amrex::Vector< std::string > plot_var_names)
Definition: ERF_Plotfile.cpp:2094
amrex::Vector< std::unique_ptr< amrex::MultiFab > > az_src
Definition: ERF.H:1488
static int fixed_mri_dt_ratio
Definition: ERF.H:1640
static amrex::Real init_shrink
Definition: ERF.H:1619
void WriteVTKPolyline(const std::string &filename, amrex::Vector< std::array< amrex::Real, 2 >> &points_xy)
Definition: ERF_TrackerOutput.cpp:97
void HurricaneTrackerCircle()
Definition: ERF_HurricaneDiagnostics.cpp:194
static double last_check_file_time
Definition: ERF.H:1583
static std::string nc_low_file
Definition: ERF.H:1876
amrex::Vector< amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > > d_rayleigh_ptrs
Definition: ERF.H:1987
void InitData()
Definition: ERF.cpp:889
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Lwave
Definition: ERF.H:1524
amrex::Vector< std::unique_ptr< amrex::MultiFab > > cosPhi_m
Definition: ERF.H:1236
amrex::Vector< std::unique_ptr< amrex::MultiFab > > interval_means
Definition: ERF.H:1325
void ParameterSanityChecks()
Definition: ERF.cpp:3955
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::iMultiFab > > > land_type_lev
Definition: ERF.H:1455
static double start_time
Definition: ERF.H:1603
void init_zphys(int lev, double elapsed_time)
Definition: ERF_MakeNewArrays.cpp:898
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:543
amrex::Vector< amrex::Vector< amrex::MultiFab > > forecast_state_1
Definition: ERF.H:288
int cf_width
Definition: ERF.H:1436
static int last_plot2d_file_step_1
Definition: ERF.H:1575
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > zflux_imask
Definition: ERF.H:1565
bool m_expand_plotvars_to_unif_rr
Definition: ERF.H:1696
std::unique_ptr< CloudChamberBudget > cloud_chamber_budget
Definition: ERF.H:1371
void Construct_ERFFillPatchers(int lev)
Definition: ERF.cpp:4233
amrex::Vector< int > num_boxes_at_level
Definition: ERF.H:1282
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:2295
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:1618
static void print_error(MPI_Comm, const std::string &msg)
Definition: ERF_ConsoleIO.cpp:48
static int ng_dens_hse
Definition: ERF.H:1953
std::unique_ptr< ReadBndryPlanes > m_r2d
Definition: ERF.H:2009
static amrex::Real diffusive_cfl
Definition: ERF.H:1628
amrex::Vector< std::unique_ptr< amrex::MultiFab > > ay
Definition: ERF.H:1480
amrex::Vector< amrex::Real > slope_report_alpha
Definition: ERF.H:1635
void interp_base_state_from_coarse(int lev)
Definition: ERF_Init1D.cpp:179
amrex::Vector< amrex::Vector< amrex::MultiFab * > > qmoist
Definition: ERF.H:1373
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SFS_q1fx1_lev
Definition: ERF.H:1462
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:1252
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:684
LandSurface lsm
Definition: ERF.H:1391
static amrex::Real change_max
Definition: ERF.H:1620
void setRecordSampleLineInfo(int i, int lev, amrex::IntVect &cell, const std::string &filename)
Definition: ERF.H:2263
void ApplyOceanSurfaceState(const amrex::Vector< amrex::MultiFab * > &state, double time, const amrex::iMultiFab *erf_coverage=nullptr)
Definition: ERF_to_REMORA.cpp:830
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:1338
int line_sampling_interval
Definition: ERF.H:2281
amrex::Vector< amrex::Vector< amrex::Real > > h_sinesq_stag_ptrs
Definition: ERF.H:1984
amrex::Vector< std::unique_ptr< amrex::MultiFab > > detJ_cc_new
Definition: ERF.H:1491
static amrex::Vector< std::string > ref_tag_indicator_names
Definition: ERF.H:2024
void project_initial_velocity(int lev, double time, double dt)
Definition: ERF_PoissonSolve.cpp:72
void interp_mapfac_from_coarse(int lev)
Definition: ERF.cpp:2451
amrex::Array< std::string, 2 *AMREX_SPACEDIM > domain_bc_type
Definition: ERF.H:1539
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > yvel_bc_data
Definition: ERF.H:1251
static void writeBuildInfo(std::ostream &os)
Definition: ERF_WriteJobInfo.cpp:183
amrex::GpuArray< ERF_BC, AMREX_SPACEDIM *2 > phys_bc_type
Definition: ERF.H:1560
std::string check_file
Definition: ERF.H:1720
bool rad_level_needs_interpolation(int lev) const
Definition: ERF.cpp:392
amrex::Vector< amrex::IntVect > samplepoint
Definition: ERF.H:2312
amrex::Vector< amrex::MultiFab > surface_state_interp
Definition: ERF.H:293
amrex::Vector< amrex::Real > h_havg_qv
Definition: ERF.H:1997
amrex::Vector< std::unique_ptr< IBFaceSet > > m_ibseb
Definition: ERF.H:1497
amrex::Vector< amrex::MultiFab > weather_forecast_data_1
Definition: ERF.H:287
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:41
static void print_usage(MPI_Comm, std::ostream &)
Definition: ERF_ConsoleIO.cpp:31
amrex::Real solar_declin
Definition: ERF.H:1418
amrex::Vector< amrex::MultiFab > rV_old
Definition: ERF.H:1356
amrex::Vector< std::unique_ptr< amrex::MultiFab > > lat_m
Definition: ERF.H:1234
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:1979
amrex::Vector< amrex::Vector< amrex::MultiFab * > > urban_flux
Definition: ERF.H:1399
static int last_plot3d_file_step_1
Definition: ERF.H:1573
void FillPatchFineLevel(int lev, double time, const amrex::Vector< amrex::MultiFab * > &mfs_vel, const amrex::Vector< amrex::MultiFab * > &mfs_mom, const amrex::MultiFab &old_base_state, const amrex::MultiFab &new_base_state, bool fillset=true, bool cons_only=false)
Definition: ERF_FillPatch.cpp:25
std::unique_ptr< LineSampler > line_sampler
Definition: ERF.H:2285
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Hwave
Definition: ERF.H:1523
amrex::Vector< amrex::Vector< amrex::Vector< std::unique_ptr< amrex::MultiFab > > > > Tau_EB
Definition: ERF.H:1467
amrex::Vector< int > istep
Definition: ERF.H:1286
const int datprecision
Definition: ERF.H:1592
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > xflux_imask
Definition: ERF.H:1563
void derive_upwp(amrex::Vector< amrex::Real > &h_havg)
static PlotFileType plotfile2d_type_1
Definition: ERF.H:1858
int metgrid_order
Definition: ERF.H:1890
bool finished_wave
Definition: ERF.H:1527
void ReadCheckpointFile()
Definition: ERF_Checkpoint.cpp:974
amrex::Vector< amrex::Vector< amrex::MultiFab > > vars_old
Definition: ERF.H:1315
amrex::Real ibseb_z_i_level0
Level 0's bulk-Richardson depth of its current step, for the refined levels.
Definition: ERF.H:1499
void WriteAtFinalTime()
Definition: ERF.cpp:303
amrex::Vector< std::unique_ptr< ERFPhysBCFunct_base > > physbcs_base
Definition: ERF.H:1346
void init_thin_body(int lev, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm)
Definition: ERF_MakeNewLevel.cpp:1736
static PlotFileType plotfile3d_type_1
Definition: ERF.H:1856
amrex::Vector< int > m_subvol_int
Definition: ERF.H:1702
AMREX_FORCE_INLINE std::ostream & SamplePointLog(int i)
Definition: ERF.H:2137
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:2453
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_neumann_vals
Definition: ERF.H:1545
amrex::Vector< amrex::BoxArray > ba_chkfile
Definition: ERF.H:1656
bool m_driver_atm2ocn_uses_state_contract
Definition: ERF.H:1024
bool m_plot_face_terrain_blanking
Definition: ERF.H:1710
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::MultiFab > > > tsk_lev
Definition: ERF.H:1451
void setRecordSamplePointInfo(int i, int lev, amrex::IntVect &cell, const std::string &filename)
Definition: ERF.H:2246
std::unique_ptr< amrex::MultiFab > m_coupled_sst
Definition: ERF.H:1031
bool has_surface_layer_inputs(const std::string &prefix) const
Definition: ERF.cpp:4584
static int column_interval
Definition: ERF.H:1938
static void print_summary(std::ostream &)
int m_plot3d_int_2
Definition: ERF.H:1698
amrex::Vector< std::unique_ptr< amrex::MultiFab > > qheating_rates
Definition: ERF.H:1410
void fill_terrain_surface(int lev, amrex::MultiFab &z_phys, double elapsed_time)
Definition: ERF_MakeNewArrays.cpp:866
void check_seb_surface_layer()
Definition: ERF.cpp:459
void turbPert_amplitude(const int lev)
Definition: ERF_InitTurbPert.cpp:42
std::unique_ptr< erf_sbm::SBMTransport > sbm_transport
Definition: ERF.H:1369
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rad_fluxes
Definition: ERF.H:1416
void initializeMicrophysics(const int &)
Definition: ERF.cpp:2933
static double bndry_output_planes_start_time
Definition: ERF.H:1948
std::unique_ptr< amrex::MultiFab > wrf_C2H
Definition: ERF.H:1929
bool plot_lsm
Definition: ERF.H:1712
amrex::Vector< amrex::MultiFab > avg_zmom
Definition: ERF.H:1339
const amrex::Vector< std::string > cons_names
Definition: ERF.H:1730
void ReadCheckpointFileSurfaceLayer()
Definition: ERF_Checkpoint.cpp:2235
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:1707
Wrapper class for managing land surface models across AMR levels.
Definition: ERF_LandSurface.H:19
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:24
Definition: ERF_SBMStateManager.H:16
Definition: ERF_SBMTransport.H:27
Definition: ERF_InterpolationUtils.H:15
@ None
Definition: ERF_LSM_Types.H:6
@ pres
Definition: ERF_Kessler.H:28
@ qv
Definition: ERF_Kessler.H:31
@ T
Definition: ERF_IndexDefines.H:131
constexpr int S
Definition: ERF_TwoStreamColumn.H:604
@ xvel
Definition: ERF_IndexDefines.H:218
@ cons
Definition: ERF_IndexDefines.H:217
@ zvel
Definition: ERF_IndexDefines.H:220
@ yvel
Definition: ERF_IndexDefines.H:219
@ p
Definition: ERF_WSM6.H:280
Definition: ERF_ConsoleIO.cpp:17
ArtifactType
Definition: ERF_Provenance.H:37
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:442
AdvType moistscal_vert_adv_type
Vertical advection scheme for moist scalar variables.
Definition: ERF_AdvStruct.H:446
AdvType dryscal_horiz_adv_type
Horizontal advection scheme for dry scalar variables.
Definition: ERF_AdvStruct.H:443
AdvType dycore_horiz_adv_type
Horizontal advection scheme for dynamical-core variables.
Definition: ERF_AdvStruct.H:441
AdvType moistscal_horiz_adv_type
Horizontal advection scheme for moist scalar variables.
Definition: ERF_AdvStruct.H:445
AdvType dryscal_vert_adv_type
Vertical advection scheme for dry scalar variables.
Definition: ERF_AdvStruct.H:444
Definition: ERF_BaseStateParams.H:35
amrex::Vector< amrex::MultiFab > mf_cc_vel
Definition: ERF.H:738
amrex::Vector< amrex::MultiFab > mf_cc_fx
Definition: ERF.H:740
amrex::Vector< amrex::MultiFab > mf_cc_tau
Definition: ERF.H:739
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:251
int qc
cloud liquid water
Definition: ERF_DataStruct.H:250
Definition: ERF_DataStruct.H:685
MoistureType moisture_type
Moisture or microphysics model.
Definition: ERF_DataStruct.H:2524
AdvChoice advChoice
Advection-related options.
Definition: ERF_DataStruct.H:2248
static TerrainType terrain_type
Terrain or immersed-boundary representation.
Definition: ERF_DataStruct.H:2224
MoistureComponentIndices moisture_indices
Index map of the moisture data carried by the active scheme: conserved-state components for the speci...
Definition: ERF_DataStruct.H:2575
bool use_num_diff
Whether sixth-order numerical diffusion is enabled.
Definition: ERF_DataStruct.H:2520
Runtime state and operations for turbulent perturbation forcing.
Definition: ERF_TurbPertStruct.H:26
Definition: ERF_TwoStreamRadiation.H:293
Configuration parameters for cloud chamber initialization.
Definition: ERF_CloudChamber.H:40
Definition: ERF_Provenance.H:66
Definition: ERF_Plotfile2DSampledLevel.H:56