12 #include <AMReX_AmrCore.H>
13 #include <AMReX_BCRec.H>
14 #include <AMReX_Print.H>
16 #include <AMReX_ParallelDescriptor.H>
17 #include <AMReX_ParmParse.H>
18 #include <AMReX_MultiFabUtil.H>
19 #include <AMReX_FillPatchUtil.H>
20 #include <AMReX_VisMF.H>
21 #include <AMReX_PhysBCFunct.H>
22 #include <AMReX_YAFluxRegister.H>
23 #include <AMReX_ErrorList.H>
24 #include <AMReX_EBFabFactory.H>
25 #include <AMReX_EBMultiFabUtil.H>
30 #include <AMReX_FFT_Poisson.H>
33 #ifdef AMREX_MEM_PROFILING
34 #include <AMReX_MemProfiler.H>
54 #ifdef ERF_USE_PARTICLES
62 #ifdef ERF_USE_WINDFARM
73 #include "ERF_P3Interface.H"
79 #include <AMReX_Lazy.H>
83 using amrex::MPI_COMM_WORLD;
84 using amrex::MPI_Comm;
87 #ifdef ERF_USE_MULTIBLOCK
88 class MultiBlockContainer;
95 FullState, Perturbational
110 :
public amrex::AmrCore
129 ERF& operator=(
ERF&& other) noexcept = delete;
135 ERF& operator=(const
ERF& other) = delete;
146 const
amrex::MultiFab& U_new,
147 const
amrex::MultiFab& V_new,
148 const
amrex::MultiFab& W_new,
150 amrex::TagBoxArray* tags =
nullptr);
153 const
amrex::MultiFab& U_new,
154 const
amrex::MultiFab& V_new,
155 const
amrex::MultiFab& W_new,
157 amrex::TagBoxArray* tags =
nullptr);
195 amrex::Geometry const& geom_at_lev);
210 void solve_with_fft (
int lev,
const amrex::Box& subdomain,
211 amrex::MultiFab& rhs, amrex::MultiFab& p,
212 amrex::Array<amrex::MultiFab,AMREX_SPACEDIM>& fluxes);
214 void solve_with_EB_mlmg (
int lev, amrex::Vector<amrex::MultiFab>& rhs, amrex::Vector<amrex::MultiFab>& p,
215 amrex::Vector<amrex::Array<amrex::MultiFab,AMREX_SPACEDIM>>& fluxes);
218 amrex::MultiFab& rhs, amrex::MultiFab& p,
219 amrex::Array<amrex::MultiFab,AMREX_SPACEDIM>& fluxes,
220 amrex::MultiFab& ax_sub, amrex::MultiFab& ay_sub,
221 amrex::MultiFab& az_sub,
222 amrex::MultiFab& , amrex::MultiFab& znd_sub);
224 void solve_with_mlmg (
int lev, amrex::Vector<amrex::MultiFab>& rhs, amrex::Vector<amrex::MultiFab>& p,
225 amrex::Vector<amrex::Array<amrex::MultiFab,AMREX_SPACEDIM>>& fluxes);
227 void ImposeBCsOnPhi (
int lev, amrex::MultiFab& phi,
const amrex::Box& subdomain);
230 amrex::Array<amrex::LinOpBCType,AMREX_SPACEDIM>
264 void FillBdyCCVels (amrex::Vector<amrex::MultiFab>& mf_cc_vel,
int levc=0);
270 amrex::Gpu::HostVector<amrex::Real>& h_avg_u , amrex::Gpu::HostVector<amrex::Real>& h_avg_v,
271 amrex::Gpu::HostVector<amrex::Real>& h_avg_w , amrex::Gpu::HostVector<amrex::Real>& h_avg_rho,
272 amrex::Gpu::HostVector<amrex::Real>& h_avg_th , amrex::Gpu::HostVector<amrex::Real>& h_avg_ksgs,
273 amrex::Gpu::HostVector<amrex::Real>& h_avg_Kmv , amrex::Gpu::HostVector<amrex::Real>& h_avg_Khv,
274 amrex::Gpu::HostVector<amrex::Real>& h_avg_qv , amrex::Gpu::HostVector<amrex::Real>& h_avg_qc,
275 amrex::Gpu::HostVector<amrex::Real>& h_avg_qr ,
276 amrex::Gpu::HostVector<amrex::Real>& h_avg_wqv , amrex::Gpu::HostVector<amrex::Real>& h_avg_wqc,
277 amrex::Gpu::HostVector<amrex::Real>& h_avg_wqr ,
278 amrex::Gpu::HostVector<amrex::Real>& h_avg_qi , amrex::Gpu::HostVector<amrex::Real>& h_avg_qs,
279 amrex::Gpu::HostVector<amrex::Real>& h_avg_qg ,
280 amrex::Gpu::HostVector<amrex::Real>& h_avg_uu , amrex::Gpu::HostVector<amrex::Real>& h_avg_uv,
281 amrex::Gpu::HostVector<amrex::Real>& h_avg_uw,
282 amrex::Gpu::HostVector<amrex::Real>& h_avg_vv , amrex::Gpu::HostVector<amrex::Real>& h_avg_vw,
283 amrex::Gpu::HostVector<amrex::Real>& h_avg_ww,
284 amrex::Gpu::HostVector<amrex::Real>& h_avg_uth , amrex::Gpu::HostVector<amrex::Real>& h_avg_vth,
285 amrex::Gpu::HostVector<amrex::Real>& h_avg_wth, amrex::Gpu::HostVector<amrex::Real>& h_avg_thth,
286 amrex::Gpu::HostVector<amrex::Real>& h_avg_ku, amrex::Gpu::HostVector<amrex::Real>& h_avg_kv,
287 amrex::Gpu::HostVector<amrex::Real>& h_avg_kw,
288 amrex::Gpu::HostVector<amrex::Real>& h_avg_p,
289 amrex::Gpu::HostVector<amrex::Real>& h_avg_pu, amrex::Gpu::HostVector<amrex::Real>& h_avg_pv,
290 amrex::Gpu::HostVector<amrex::Real>& h_avg_pw, amrex::Gpu::HostVector<amrex::Real>& h_avg_wthv);
292 amrex::Gpu::HostVector<amrex::Real>& h_avg_u , amrex::Gpu::HostVector<amrex::Real>& h_avg_v,
293 amrex::Gpu::HostVector<amrex::Real>& h_avg_w , amrex::Gpu::HostVector<amrex::Real>& h_avg_rho,
294 amrex::Gpu::HostVector<amrex::Real>& h_avg_th , amrex::Gpu::HostVector<amrex::Real>& h_avg_ksgs,
295 amrex::Gpu::HostVector<amrex::Real>& h_avg_Kmv , amrex::Gpu::HostVector<amrex::Real>& h_avg_Khv,
296 amrex::Gpu::HostVector<amrex::Real>& h_avg_qv , amrex::Gpu::HostVector<amrex::Real>& h_avg_qc,
297 amrex::Gpu::HostVector<amrex::Real>& h_avg_qr ,
298 amrex::Gpu::HostVector<amrex::Real>& h_avg_wqv , amrex::Gpu::HostVector<amrex::Real>& h_avg_wqc,
299 amrex::Gpu::HostVector<amrex::Real>& h_avg_wqr ,
300 amrex::Gpu::HostVector<amrex::Real>& h_avg_qi , amrex::Gpu::HostVector<amrex::Real>& h_avg_qs,
301 amrex::Gpu::HostVector<amrex::Real>& h_avg_qg ,
302 amrex::Gpu::HostVector<amrex::Real>& h_avg_uu , amrex::Gpu::HostVector<amrex::Real>& h_avg_uv,
303 amrex::Gpu::HostVector<amrex::Real>& h_avg_uw,
304 amrex::Gpu::HostVector<amrex::Real>& h_avg_vv , amrex::Gpu::HostVector<amrex::Real>& h_avg_vw,
305 amrex::Gpu::HostVector<amrex::Real>& h_avg_ww,
306 amrex::Gpu::HostVector<amrex::Real>& h_avg_uth , amrex::Gpu::HostVector<amrex::Real>& h_avg_vth,
307 amrex::Gpu::HostVector<amrex::Real>& h_avg_wth, amrex::Gpu::HostVector<amrex::Real>& h_avg_thth,
308 amrex::Gpu::HostVector<amrex::Real>& h_avg_ku, amrex::Gpu::HostVector<amrex::Real>& h_avg_kv,
309 amrex::Gpu::HostVector<amrex::Real>& h_avg_kw,
310 amrex::Gpu::HostVector<amrex::Real>& h_avg_p,
311 amrex::Gpu::HostVector<amrex::Real>& h_avg_pu, amrex::Gpu::HostVector<amrex::Real>& h_avg_pv,
312 amrex::Gpu::HostVector<amrex::Real>& h_avg_pw, amrex::Gpu::HostVector<amrex::Real>& h_avg_wthv);
314 void derive_stress_profiles (amrex::Gpu::HostVector<amrex::Real>& h_avg_tau11, amrex::Gpu::HostVector<amrex::Real>& h_avg_tau12,
315 amrex::Gpu::HostVector<amrex::Real>& h_avg_tau13, amrex::Gpu::HostVector<amrex::Real>& h_avg_tau22,
316 amrex::Gpu::HostVector<amrex::Real>& h_avg_tau23, amrex::Gpu::HostVector<amrex::Real>& h_avg_tau33,
317 amrex::Gpu::HostVector<amrex::Real>& h_avg_hfx3, amrex::Gpu::HostVector<amrex::Real>& h_avg_q1fx3,
318 amrex::Gpu::HostVector<amrex::Real>& h_avg_q2fx3, amrex::Gpu::HostVector<amrex::Real>& h_avg_diss);
319 void derive_stress_profiles_stag (amrex::Gpu::HostVector<amrex::Real>& h_avg_tau11, amrex::Gpu::HostVector<amrex::Real>& h_avg_tau12,
320 amrex::Gpu::HostVector<amrex::Real>& h_avg_tau13, amrex::Gpu::HostVector<amrex::Real>& h_avg_tau22,
321 amrex::Gpu::HostVector<amrex::Real>& h_avg_tau23, amrex::Gpu::HostVector<amrex::Real>& h_avg_tau33,
322 amrex::Gpu::HostVector<amrex::Real>& h_avg_hfx3, amrex::Gpu::HostVector<amrex::Real>& h_avg_q1fx3,
323 amrex::Gpu::HostVector<amrex::Real>& h_avg_q2fx3, amrex::Gpu::HostVector<amrex::Real>& h_avg_diss);
327 volWgtSumMF (
int lev,
const amrex::MultiFab& mf,
int comp,
328 const amrex::MultiFab& dJ,
const amrex::MultiFab& mfx,
const amrex::MultiFab& mfy,
329 bool finemask,
bool local =
true);
339 const amrex::DistributionMapping& dm)
override;
345 const amrex::DistributionMapping& dm)
override;
355 const amrex::DistributionMapping& dm)
override;
360 #ifdef ERF_USE_WW3_COUPLING
362 void send_to_ww3(
int lev);
364 void read_waves(
int lev);
373 amrex::Vector<amrex::MultiFab>& state_old,
374 amrex::Vector<amrex::MultiFab>& state_new,
375 amrex::MultiFab& xvel_old, amrex::MultiFab& yvel_old, amrex::MultiFab& zvel_old,
376 amrex::MultiFab& xvel_new, amrex::MultiFab& yvel_new, amrex::MultiFab& zvel_new,
377 amrex::MultiFab& source, amrex::MultiFab& xmom_src,
378 amrex::MultiFab& ymom_src, amrex::MultiFab& zmom_src,
379 amrex::MultiFab& buoyancy, amrex::Geometry fine_geom,
383 amrex::MultiFab& cons_in,
385 const int& iteration,
389 amrex::MultiFab& cons_in,
390 amrex::MultiFab& xvel_in,
391 amrex::MultiFab& yvel_in,
395 amrex::MultiFab& cons_in,
399 void compute_shoc_tendencies (
int lev,
400 amrex::MultiFab*
cons,
401 amrex::MultiFab*
xvel,
402 amrex::MultiFab*
yvel,
403 amrex::MultiFab*
zvel,
405 amrex::MultiFab*
tau13,
406 amrex::MultiFab*
tau23,
407 amrex::MultiFab* hfx3,
408 amrex::MultiFab* qfx3,
409 amrex::MultiFab* eddyDiffs,
415 void compute_p3_tendencies (
int lev,
416 amrex::MultiFab& cons_in,
417 amrex::MultiFab& source,
428 void Write3DPlotFile (
int which, PlotFileType plotfile_type, amrex::Vector<std::string> plot_var_names);
429 void Write2DPlotFile (
int which, PlotFileType plotfile_type, amrex::Vector<std::string> plot_var_names);
436 const amrex::Vector<const amrex::MultiFab*> &mf,
437 const amrex::Vector<const amrex::MultiFab*> &mf_nd,
438 const amrex::Vector<std::string> &varnames,
439 const amrex::Vector<amrex::Geometry>& my_geom,
441 const amrex::Vector<int> &level_steps,
442 const amrex::Vector<amrex::IntVect>& my_ref_ratio,
443 const std::string &versionName =
"HyperCLaw-V1.1",
444 const std::string &levelPrefix =
"Level_",
445 const std::string &mfPrefix =
"Cell",
446 const amrex::Vector<std::string>& extra_dirs = amrex::Vector<std::string>())
const;
451 const amrex::Vector<amrex::BoxArray> &bArray,
452 const amrex::Vector<std::string> &varnames,
453 const amrex::Vector<amrex::Geometry>& my_geom,
455 const amrex::Vector<int> &level_steps,
456 const amrex::Vector<amrex::IntVect>& my_ref_ratio,
457 const std::string &versionName,
458 const std::string &levelPrefix,
459 const std::string &mfPrefix)
const;
462 amrex::MultiFab& dens, amrex::MultiFab&
pres, amrex::MultiFab&
pi,
463 amrex::MultiFab& th, amrex::MultiFab&
qv,
464 std::unique_ptr<amrex::MultiFab>& z_cc);
466 #ifdef ERF_USE_NETCDF
468 void writeToNCColumnFile (
int lev,
481 void init_thin_body (
int lev,
const amrex::BoxArray& ba,
const amrex::DistributionMapping& dm);
484 const std::string& filename,
485 const std::unique_ptr<amrex::MultiFab>&
z_phys_nd,
486 amrex::Vector<amrex::Vector<amrex::MultiFab>>& weather_forecast_data);
490 amrex::Vector<std::unique_ptr<amrex::MultiFab>>&
z_phys_nd,
491 bool regrid_forces_file_read);
493 #ifdef ERF_USE_MULTIBLOCK
496 ERF (
const amrex::RealBox& rb,
int max_level_in,
497 const amrex::Vector<int>& n_cell_in,
int coord,
498 const amrex::Vector<amrex::IntVect>& ref_ratio,
499 const amrex::Array<int,AMREX_SPACEDIM>& is_per,
503 void Evolve_MB (
int MBstep,
int max_block_step);
511 void SetParmParsePrefix (std::string name) {
pp_prefix = name; }
514 void SetMultiBlockPointer (MultiBlockContainer *mbc) { m_mbc = mbc; }
517 std::vector<amrex::Box> domain_p;
520 amrex::Vector<amrex::Vector<amrex::MultiFab> >
vars_new;
521 amrex::Vector<amrex::Vector<amrex::MultiFab> >
vars_old;
524 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
vel_t_avg;
533 #ifdef ERF_USE_NETCDF
535 void fill_from_realbdy (
const amrex::Vector<amrex::MultiFab*>& mfs,
540 amrex::IntVect ngvect_cons,
541 amrex::IntVect ngvect_vels);
544 void fill_from_realbdy_upwind (
const amrex::Vector<amrex::MultiFab*>& mfs,
549 amrex::IntVect ngvect_cons,
550 amrex::IntVect ngvect_vels);
553 #ifdef ERF_USE_NETCDF
554 void init_from_wrfinput (
int lev,
559 void init_from_metgrid (
int lev);
560 void init_from_ncfile (
int lev);
563 #ifdef ERF_USE_WINDFARM
564 void init_windfarm(
int lev);
565 void advance_windfarm (
const amrex::Geometry& a_geom,
567 amrex::MultiFab& cons_in,
568 amrex::MultiFab& U_old, amrex::MultiFab& V_old, amrex::MultiFab& W_old,
569 amrex::MultiFab& mf_vars_windfarm,
570 const amrex::MultiFab& mf_Nturb,
571 const amrex::MultiFab& mf_SMark,
622 void init_stuff (
int lev,
const amrex::BoxArray& ba,
const amrex::DistributionMapping& dm,
623 amrex::Vector<amrex::MultiFab>& lev_new, amrex::Vector<amrex::MultiFab>& lev_old,
624 amrex::MultiFab& tmp_base_state,
625 std::unique_ptr<amrex::MultiFab>& tmp_zphys_nd);
640 #ifdef ERF_USE_WINDFARM
642 void initializeWindFarm (
const int&);
651 const amrex::Vector<amrex::MultiFab*>& mfs_vel,
652 bool cons_only=
false);
656 const amrex::Vector<amrex::MultiFab*>& mfs_vel,
657 const amrex::Vector<amrex::MultiFab*>& mfs_mom,
658 const amrex::MultiFab& old_base_state,
659 const amrex::MultiFab& new_base_state,
660 bool fillset=
true,
bool cons_only=
false);
671 const amrex::Vector<amrex::MultiFab*>& mfs_vel,
672 const amrex::Vector<amrex::MultiFab*>& mfs_mom,
673 int ng_cons,
int ng_vel,
bool cons_only,
int icomp_cons,
int ncomp_cons);
709 static amrex::Vector<std::string>
PlotFileVarNames (amrex::Vector<std::string> plot_var_names);
712 void setPlotVariables (
const std::string& pp_plot_var_names, amrex::Vector<std::string>& plot_var_names);
713 void setPlotVariables2D (
const std::string& pp_plot_var_names, amrex::Vector<std::string>& plot_var_names);
715 void appendPlotVariables (
const std::string& pp_plot_var_names, amrex::Vector<std::string>& plot_var_names);
717 void setSubVolVariables (
const std::string& pp_subvol_var_names, amrex::Vector<std::string>& subvol_var_names);
719 #ifdef ERF_USE_NETCDF
721 void createNCColumnFile (
int lev,
725 void init_from_wrfbdy (amrex::Vector<amrex::FArrayBox*> x_vel_lateral,
726 amrex::Vector<amrex::FArrayBox*> y_vel_lateral,
727 amrex::Vector<amrex::FArrayBox*> z_vel_lateral,
728 amrex::Vector<amrex::FArrayBox*> T_lateral);
746 amrex::Vector<amrex::Vector<amrex::FArrayBox>> bdy_data_xlo;
747 amrex::Vector<amrex::Vector<amrex::FArrayBox>> bdy_data_xhi;
748 amrex::Vector<amrex::Vector<amrex::FArrayBox>> bdy_data_ylo;
749 amrex::Vector<amrex::Vector<amrex::FArrayBox>> bdy_data_yhi;
751 amrex::Vector<amrex::Vector<amrex::FArrayBox>> low_data_zlo;
758 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
lat_m,
lon_m;
772 amrex::Vector<amrex::Gpu::DeviceVector<amrex::Real>>
th_bc_data;
790 void fill_rhs (amrex::MultiFab& rhs_mf,
const amrex::MultiFab& state_mf,
amrex::Real time,
const amrex::Geometry& geom);
795 std::unique_ptr<ProblemBase>
prob =
nullptr;
807 amrex::Vector<amrex::Real>
dt;
810 #ifndef ERF_USE_MULTIBLOCK
813 amrex::Vector<amrex::Vector<amrex::MultiFab> >
vars_new;
814 amrex::Vector<amrex::Vector<amrex::MultiFab> >
vars_old;
817 amrex::Vector<amrex::Vector<amrex::MultiFab> >
gradp;
820 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
vel_t_avg;
823 amrex::Vector<std::unique_ptr<MRISplitIntegrator<amrex::Vector<amrex::MultiFab> > > >
mri_integrator_mem;
836 amrex::Vector<std::unique_ptr<ERFPhysBCFunct_u>>
physbcs_u;
837 amrex::Vector<std::unique_ptr<ERFPhysBCFunct_v>>
physbcs_v;
838 amrex::Vector<std::unique_ptr<ERFPhysBCFunct_w>>
physbcs_w;
843 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
Qv_prim;
844 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
Qr_prim;
858 std::unique_ptr<Microphysics>
micro;
859 amrex::Vector<amrex::Vector<amrex::MultiFab*>>
qmoist;
863 #ifdef ERF_USE_WINDFARM
864 std::unique_ptr<WindFarm> windfarm;
865 amrex::Vector<amrex::MultiFab> Nturb;
866 amrex::Vector<amrex::MultiFab> vars_windfarm;
869 amrex::Vector<amrex::MultiFab> SMark;
876 amrex::Vector<amrex::Vector<amrex::MultiFab*>>
lsm_data;
878 amrex::Vector<amrex::Vector<amrex::MultiFab*>>
lsm_flux;
880 amrex::Vector<std::unique_ptr<IRadiation>>
rad;
884 amrex::Vector<std::unique_ptr<SHOCInterface>> shoc_interface;
888 amrex::Vector<std::unique_ptr<P3Interface>> p3_interface;
901 amrex::Vector<ERFFillPatcher>
FPr_c;
902 amrex::Vector<ERFFillPatcher>
FPr_u;
903 amrex::Vector<ERFFillPatcher>
FPr_v;
904 amrex::Vector<ERFFillPatcher>
FPr_w;
907 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::MultiFab>>>
Tau;
908 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::MultiFab>>>
Tau_corr;
913 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::MultiFab>>>
sst_lev;
914 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::MultiFab>>>
tsk_lev;
915 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::iMultiFab>>>
lmask_lev;
918 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::iMultiFab>>>
land_type_lev;
919 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::iMultiFab>>>
soil_type_lev;
920 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::MultiFab>>>
urb_frac_lev;
932 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
z_phys_nd;
933 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
z_phys_cc;
935 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
detJ_cc;
936 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
ax;
937 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
ay;
938 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
az;
943 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
ax_src;
944 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
ay_src;
945 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
az_src;
950 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
z_t_rk;
956 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
walldist;
959 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::MultiFab>>>
mapfac;
962 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
fine_mask;
971 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
Hwave;
972 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
Lwave;
1107 const amrex::Vector<std::string>
cons_names {
"density",
"rhotheta",
"rhoKE",
"rhoadv_0",
1108 "rhoQ1",
"rhoQ2",
"rhoQ3",
1109 "rhoQ4",
"rhoQ5",
"rhoQ6"};
1114 const amrex::Vector<std::string>
derived_names {
"soundspeed",
"temp",
"theta",
"KE",
"scalar",
1115 "vorticity_x",
"vorticity_y",
"vorticity_z",
1117 "pres_hse",
"dens_hse",
"theta_hse",
"pressure",
"pert_pres",
"pert_dens",
1119 #ifdef ERF_USE_WINDFARM
1120 "num_turb",
"SMark0",
"SMark1",
1122 "dpdx",
"dpdy",
"dpdz",
"pres_hse_x",
"pres_hse_y",
1123 "z_phys",
"detJ",
"mapfac",
"lat_m",
"lon_m",
1125 "u_t_avg",
"v_t_avg",
"w_t_avg",
"umag_t_avg",
1139 "moist_density",
"qv",
"qc",
"qi",
"qrain",
"qsnow",
"qgraup",
"qt",
"qn",
"qp",
"qsat",
1140 "rain_accum",
"snow_accum",
"graup_accum",
"reflectivity",
"max_reflectivity",
1145 #ifdef ERF_COMPUTE_ERROR
1147 ,
"xvel_err",
"yvel_err",
"zvel_err",
"pp_err"
1149 ,
"qsrc_sw",
"qsrc_lw"
1156 "z_surf",
"landmask",
"mapfac",
"lat_m",
"lon_m",
1157 "u_star",
"w_star",
"t_star",
"q_star",
"Olen",
"pblh",
1158 "t_surf",
"q_surf",
"z0",
"OLR",
"sens_flux",
"laten_flux",
1173 #ifdef ERF_USE_PARTICLES
1175 ParticleData particleData;
1178 bool m_use_tracer_particles;
1181 void readTracersParams();
1184 void initializeTracers ( amrex::ParGDBBase*,
1185 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>&,
1189 void restartTracers ( amrex::ParGDBBase*,
const std::string& );
1192 void evolveTracers(
int,
1194 amrex::Vector<amrex::Vector<amrex::MultiFab>>&,
1195 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& );
1199 #ifdef ERF_USE_MULTIBLOCK
1200 MultiBlockContainer *m_mbc =
nullptr;
1253 amrex::Vector<amrex::BoxArray>
ba1d;
1254 amrex::Vector<amrex::BoxArray>
ba2d;
1259 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
mf_PSFC;
1289 amrex::Vector<amrex::Gpu::DeviceVector<amrex::Real> >
d_w_subsid;
1292 amrex::Vector<amrex::Gpu::DeviceVector<amrex::Real> >
d_u_geos;
1295 amrex::Vector<amrex::Gpu::DeviceVector<amrex::Real> >
d_v_geos;
1299 amrex::Vector<amrex::Real>& u_geos,
1300 amrex::Gpu::DeviceVector<amrex::Real>& u_geos_d,
1301 amrex::Vector<amrex::Real>& v_geos,
1302 amrex::Gpu::DeviceVector<amrex::Real>& v_geos_d,
1303 const amrex::Geometry& lgeom,
1304 const amrex::Vector<amrex::Real>& zlev_stag);
1316 amrex::Vector<amrex::Vector<amrex::Gpu::DeviceVector<amrex::Real> > >
d_sponge_ptrs;
1336 std::unique_ptr<WriteBndryPlanes>
m_w2d =
nullptr;
1337 std::unique_ptr<ReadBndryPlanes>
m_r2d =
nullptr;
1350 static AMREX_FORCE_INLINE
1504 int numCores = amrex::ParallelDescriptor::NProcs();
1506 numCores = numCores * omp_get_max_threads();
1510 numCores * (amrex::ParallelDescriptor::second() -
startCPUTime) +
1518 if (amrex::ParallelDescriptor::IOProcessor())
1520 datalog[i] = std::make_unique<std::fstream>();
1523 amrex::FileOpenFailed(filename);
1526 amrex::ParallelDescriptor::Barrier(
"ERF::setRecordDataInfo");
1531 if (amrex::ParallelDescriptor::IOProcessor())
1533 der_datalog[i] = std::make_unique<std::fstream>();
1536 amrex::FileOpenFailed(filename);
1539 amrex::ParallelDescriptor::Barrier(
"ERF::setRecordDerDataInfo");
1544 if (amrex::ParallelDescriptor::IOProcessor())
1549 amrex::FileOpenFailed(filename);
1552 amrex::ParallelDescriptor::Barrier(
"ERF::setRecordEnergyDataInfo");
1557 amrex::MultiFab dummy(grids[lev],dmap[lev],1,0);
1558 for (amrex::MFIter mfi(dummy); mfi.isValid(); ++mfi)
1560 const amrex::Box& bx = mfi.validbox();
1561 if (bx.contains(cell)) {
1562 sampleptlog[i] = std::make_unique<std::fstream>();
1565 amrex::FileOpenFailed(filename);
1569 amrex::ParallelDescriptor::Barrier(
"ERF::setRecordSamplePointInfo");
1574 amrex::MultiFab dummy(grids[lev],dmap[lev],1,0);
1575 for (amrex::MFIter mfi(dummy); mfi.isValid(); ++mfi)
1577 const amrex::Box& bx = mfi.validbox();
1578 if (bx.contains(cell)) {
1582 amrex::FileOpenFailed(filename);
1586 amrex::ParallelDescriptor::Barrier(
"ERF::setRecordSampleLineInfo");
1597 amrex::Vector<std::unique_ptr<std::fstream> >
datalog;
1623 amrex::Vector<std::unique_ptr<eb_>>
eb;
1626 AMREX_ASSERT(lev >= 0 && lev <
eb.size() &&
eb[lev] !=
nullptr);
1630 [[nodiscard]] amrex::EBFArrayBoxFactory
const&
1632 return *(
eb[lev]->get_const_factory());
1646 amrex::Vector<std::unique_ptr<amrex::FFT::Poisson<amrex::MultiFab>>> m_3D_poisson;
1647 amrex::Vector<std::unique_ptr<amrex::FFT::PoissonHybrid<amrex::MultiFab>>> m_2D_poisson;
1655 static void print_usage(MPI_Comm , std::ostream& );
1656 static void print_error(MPI_Comm ,
const std::string& msg);
AMREX_ENUM(StateInterpType, FullState, Perturbational)
@ tau23
Definition: ERF_DataStruct.H:31
@ tau13
Definition: ERF_DataStruct.H:31
Contains the Eulerian microphysics class.
#define NBCVAR_max
Definition: ERF_IndexDefines.H:29
Contains the Lagrangian microphysics class.
amrex::Real Real
Definition: ERF_ShocInterface.H:19
void MakeHorizontalAverages()
Definition: ERF.cpp:2610
amrex::Vector< amrex::MultiFab > rU_new
Definition: ERF.H:848
static int last_check_file_step
Definition: ERF.H:1013
amrex::Vector< std::unique_ptr< amrex::MultiFab > > walldist
Definition: ERF.H:956
amrex::Vector< amrex::Vector< amrex::Vector< amrex::Real > > > h_sponge_ptrs
Definition: ERF.H:1308
void initRayleigh()
Initialize Rayleigh damping profiles.
Definition: ERF_InitRayleigh.cpp:14
static amrex::Real start_time
Definition: ERF.H:1039
bool metgrid_basic_linear
Definition: ERF.H:1245
amrex::Vector< amrex::Vector< amrex::Box > > boxes_at_level
Definition: ERF.H:799
amrex::Vector< std::string > samplelinelogname
Definition: ERF.H:1609
int max_step
Definition: ERF.H:1036
bool metgrid_debug_msf
Definition: ERF.H:1243
AMREX_FORCE_INLINE std::ostream & DerDataLog(int i)
Definition: ERF.H:1424
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::MultiFab > > > mapfac
Definition: ERF.H:959
void FillBdyCCVels(amrex::Vector< amrex::MultiFab > &mf_cc_vel, int levc=0)
Definition: ERF_FillBdyCCVels.cpp:11
void setRayleighRefFromSounding(bool restarting)
Set Rayleigh mean profiles from input sounding.
Definition: ERF_InitRayleigh.cpp:94
amrex::Vector< std::unique_ptr< MRISplitIntegrator< amrex::Vector< amrex::MultiFab > > > > mri_integrator_mem
Definition: ERF.H:823
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > d_sinesq_stag_ptrs
Definition: ERF.H:1320
void check_vels_for_nans(amrex::MultiFab const &xvel, amrex::MultiFab const &yvel, amrex::MultiFab const &zvel)
Definition: ERF.cpp:2883
void Evolve()
Definition: ERF.cpp:538
amrex::Vector< amrex::MultiFab > avg_xmom
Definition: ERF.H:830
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > d_rhotheta_src
Definition: ERF.H:1283
amrex::Vector< amrex::MultiFab > pp_inc
Definition: ERF.H:826
static amrex::Real last_plot2d_file_time_2
Definition: ERF.H:1018
amrex::Vector< ERFFillPatcher > FPr_u
Definition: ERF.H:902
amrex::Real cloud_fraction(amrex::Real time)
Definition: ERF_WriteScalarProfiles.cpp:451
amrex::Vector< amrex::IntVect > sampleline
Definition: ERF.H:1610
amrex::Vector< std::string > subvol3d_var_names
Definition: ERF.H:1101
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SFS_q1fx3_lev
Definition: ERF.H:925
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Hwave_onegrid
Definition: ERF.H:973
amrex::Vector< amrex::Vector< amrex::MultiFab > > vars_new
Definition: ERF.H:813
ERF(ERF &&) noexcept=delete
AMREX_FORCE_INLINE int NumSampleLineLogs() noexcept
Definition: ERF.H:1467
static void print_tpls(std::ostream &)
Definition: ERF_ConsoleIO.cpp:137
amrex::Vector< amrex::Real > dz_min
Definition: ERF.H:1348
amrex::Real m_plot2d_per_1
Definition: ERF.H:1086
amrex::Vector< amrex::MultiFab > lagged_delta_rt
Definition: ERF.H:829
amrex::Real plane_sampling_per
Definition: ERF.H:1593
std::string DataLogName(int i) const noexcept
The filename of the ith datalog file.
Definition: ERF.H:1613
std::string plot2d_file_2
Definition: ERF.H:1073
amrex::Vector< std::unique_ptr< amrex::MultiFab > > thin_yforce
Definition: ERF.H:1006
void ErrorEst(int lev, amrex::TagBoxArray &tags, amrex::Real time, int ngrow) override
Definition: ERF_Tagging.cpp:20
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SFS_hfx3_lev
Definition: ERF.H:923
amrex::Vector< std::unique_ptr< amrex::MultiFab > > sw_lw_fluxes
Definition: ERF.H:892
amrex::Vector< amrex::Vector< amrex::Real > > h_w_subsid
Definition: ERF.H:1288
static void print_banner(MPI_Comm, std::ostream &)
Definition: ERF_ConsoleIO.cpp:60
static amrex::Real last_plot2d_file_time_1
Definition: ERF.H:1017
amrex::Vector< std::unique_ptr< std::fstream > > datalog
Definition: ERF.H:1597
static amrex::Real sum_per
Definition: ERF.H:1212
std::string MakeFilename_EyeTracker_maxvel(int nstep)
Definition: ERF_Write1DProfiles.cpp:629
amrex::Vector< ERFFillPatcher > FPr_v
Definition: ERF.H:903
const amrex::Vector< std::string > derived_names_2d
Definition: ERF.H:1155
int cf_set_width
Definition: ERF.H:900
static amrex::Real previousCPUTimeUsed
Definition: ERF.H:1499
void setPlotVariables(const std::string &pp_plot_var_names, amrex::Vector< std::string > &plot_var_names)
Definition: ERF_Plotfile.cpp:24
amrex::Gpu::DeviceVector< amrex::Real > d_havg_temperature
Definition: ERF.H:1329
static int last_plot2d_file_step_2
Definition: ERF.H:1012
void fill_from_bndryregs(const amrex::Vector< amrex::MultiFab * > &mfs, amrex::Real time)
Definition: ERF_BoundaryConditionsBndryReg.cpp:13
const int timeprecision
Definition: ERF.H:1029
void setRecordDataInfo(int i, const std::string &filename)
Definition: ERF.H:1516
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SFS_hfx1_lev
Definition: ERF.H:923
amrex::Vector< std::array< amrex::Real, 2 > > hurricane_eye_track_xy
Definition: ERF.H:163
amrex::Vector< amrex::BoxArray > ba2d
Definition: ERF.H:1254
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_extdir_vals
Definition: ERF.H:990
void init_from_input_sounding(int lev)
Definition: ERF_InitFromInputSounding.cpp:52
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:164
amrex::Vector< amrex::Vector< amrex::MultiFab > > gradp
Definition: ERF.H:817
std::string plot3d_file_1
Definition: ERF.H:1070
void FillPatchCrseLevel(int lev, amrex::Real time, const amrex::Vector< amrex::MultiFab * > &mfs_vel, bool cons_only=false)
Definition: ERF_FillPatch.cpp:282
eb_ const & get_eb(int lev) const noexcept
Definition: ERF.H:1625
amrex::Gpu::DeviceVector< amrex::Real > d_havg_qv
Definition: ERF.H:1331
static amrex::Real column_loc_y
Definition: ERF.H:1266
static bool plot_file_on_restart
Definition: ERF.H:1024
static int mg_verbose
Definition: ERF.H:1204
void ReadParameters()
Definition: ERF.cpp:2084
static amrex::Vector< std::string > PlotFileVarNames(amrex::Vector< std::string > plot_var_names)
Definition: ERF_Plotfile.cpp:295
amrex::Vector< amrex::Vector< amrex::MultiFab > > forecast_state_interp
Definition: ERF.H:170
void InitializeFromFile()
amrex::Vector< std::unique_ptr< ERFPhysBCFunct_cons > > physbcs_cons
Definition: ERF.H:835
void project_velocity_tb(int lev, amrex::Real dt, amrex::Vector< amrex::MultiFab > &vars)
Definition: ERF_PoissonSolve_tb.cpp:20
amrex::Vector< std::unique_ptr< amrex::MultiFab > > mf_PSFC
Definition: ERF.H:1259
ERF()
Definition: ERF.cpp:127
void init_Dirichlet_bc_data(const std::string input_file)
Definition: ERF_InitBCs.cpp:652
amrex::Vector< std::unique_ptr< amrex::MultiFab > > z_phys_nd_src
Definition: ERF.H:940
amrex::Vector< std::unique_ptr< amrex::MultiFab > > detJ_cc
Definition: ERF.H:935
amrex::Vector< std::string > lsm_flux_name
Definition: ERF.H:877
void WriteMyEBSurface()
Definition: ERF_EBWriteSurface.cpp:5
amrex::Vector< std::unique_ptr< amrex::MultiFab > > z_phys_cc
Definition: ERF.H:933
amrex::Vector< std::unique_ptr< eb_ > > eb
Definition: ERF.H:1623
amrex::Vector< std::unique_ptr< amrex::MultiFab > > eddyDiffs_lev
Definition: ERF.H:909
static SolverChoice solverChoice
Definition: ERF.H:1168
amrex::Vector< ERFFillPatcher > FPr_c
Definition: ERF.H:901
bool plot_rad
Definition: ERF.H:895
amrex::Vector< std::array< amrex::Real, 2 > > hurricane_tracker_circle
Definition: ERF.H:166
static bool use_fft
Definition: ERF.H:1205
void FillForecastStateMultiFabs(const int lev, const std::string &filename, const std::unique_ptr< amrex::MultiFab > &z_phys_nd, amrex::Vector< amrex::Vector< amrex::MultiFab >> &weather_forecast_data)
Definition: ERF_WeatherDataInterpolation.cpp:64
bool m_plot_face_vels
Definition: ERF.H:1088
amrex::Vector< std::array< amrex::Real, 2 > > hurricane_maxvel_vs_time
Definition: ERF.H:165
amrex::Vector< amrex::MultiFab > base_state_new
Definition: ERF.H:968
std::string plot3d_file_2
Definition: ERF.H:1071
amrex::Vector< std::unique_ptr< amrex::MultiFab > > az
Definition: ERF.H:938
int regrid_int
Definition: ERF.H:1063
amrex::Vector< amrex::Real > fixed_dt
Definition: ERF.H:1057
void write_1D_profiles_stag(amrex::Real time)
Definition: ERF_Write1DProfiles_stag.cpp:25
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, amrex::Real 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:1832
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:12
amrex::Vector< amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > > d_sponge_ptrs
Definition: ERF.H:1316
amrex::Vector< amrex::Vector< amrex::Real > > h_rhoqt_src
Definition: ERF.H:1285
amrex::Vector< long > dt_mri_ratio
Definition: ERF.H:808
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::MultiFab > > > Tau
Definition: ERF.H:907
amrex::Vector< std::unique_ptr< amrex::MultiFab > > vel_t_avg
Definition: ERF.H:820
void sum_energy_quantities(amrex::Real time)
Definition: ERF_WriteScalarProfiles.cpp:312
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SFS_q2fx3_lev
Definition: ERF.H:926
static amrex::Real dt_max
Definition: ERF.H:1054
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::iMultiFab > > > lmask_lev
Definition: ERF.H:915
AMREX_FORCE_INLINE int NumSamplePointLogs() noexcept
Definition: ERF.H:1453
amrex::Vector< amrex::Real > h_havg_pressure
Definition: ERF.H:1324
void update_diffusive_arrays(int lev, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm)
Definition: ERF_MakeNewArrays.cpp:516
static int verbose
Definition: ERF.H:1203
amrex::Vector< amrex::Real > h_havg_qc
Definition: ERF.H:1326
amrex::Vector< std::unique_ptr< ERFPhysBCFunct_w > > physbcs_w
Definition: ERF.H:838
static int nghost_eb_basic()
Definition: ERF.H:1635
void Advance(int lev, amrex::Real time, amrex::Real dt_lev, int iteration, int ncycle)
Definition: ERF_Advance.cpp:20
static std::string column_file_name
Definition: ERF.H:1267
amrex::Vector< std::unique_ptr< std::fstream > > samplelinelog
Definition: ERF.H:1608
static amrex::Real last_plot3d_file_time_2
Definition: ERF.H:1016
amrex::Vector< std::unique_ptr< amrex::MultiFab > > terrain_blanking
Definition: ERF.H:953
std::unique_ptr< Microphysics > micro
Definition: ERF.H:858
int m_plot2d_int_2
Definition: ERF.H:1079
amrex::Vector< amrex::MultiFab > base_state
Definition: ERF.H:967
AMREX_FORCE_INLINE amrex::YAFluxRegister * getAdvFluxReg(int lev)
Definition: ERF.H:1410
int m_plot3d_int_1
Definition: ERF.H:1076
amrex::Vector< amrex::Real > h_havg_density
Definition: ERF.H:1322
amrex::Vector< std::unique_ptr< amrex::MultiFab > > z_phys_nd_new
Definition: ERF.H:947
amrex::Vector< amrex::Real > fixed_fast_dt
Definition: ERF.H:1058
const amrex::Vector< std::string > derived_subvol_names
Definition: ERF.H:1165
bool metgrid_retain_sfc
Definition: ERF.H:1248
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Qv_prim
Definition: ERF.H:843
static int sum_interval
Definition: ERF.H:1210
static int pert_interval
Definition: ERF.H:1211
amrex::Real line_sampling_per
Definition: ERF.H:1592
void restart()
Definition: ERF.cpp:1885
static int last_plot3d_file_step_2
Definition: ERF.H:1010
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SFS_q1fx2_lev
Definition: ERF.H:925
amrex::IntVect & SampleLine(int i)
Definition: ERF.H:1486
void build_fine_mask(int lev, amrex::MultiFab &fine_mask)
Definition: ERF_VolWgtSum.cpp:79
amrex::Vector< amrex::MultiFab > rV_new
Definition: ERF.H:850
std::string PlotFileName(int lev) const
void write_1D_profiles(amrex::Real time)
Definition: ERF_Write1DProfiles.cpp:17
void initialize_integrator(int lev, amrex::MultiFab &cons_mf, amrex::MultiFab &vel_mf)
Definition: ERF_MakeNewArrays.cpp:775
amrex::Vector< std::unique_ptr< amrex::MultiFab > > thin_zforce
Definition: ERF.H:1007
amrex::Vector< std::string > plot3d_var_names_2
Definition: ERF.H:1104
amrex::Vector< amrex::BCRec > domain_bcs_type
Definition: ERF.H:983
amrex::Array< amrex::LinOpBCType, AMREX_SPACEDIM > get_projection_bc(amrex::Orientation::Side side) const noexcept
Definition: ERF_SolveWithMLMG.cpp:17
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Qr_prim
Definition: ERF.H:844
void post_timestep(int nstep, amrex::Real time, amrex::Real dt_lev)
Definition: ERF.cpp:689
std::unique_ptr< amrex::MultiFab > mf_MUB
Definition: ERF.H:1257
std::string pp_prefix
Definition: ERF.H:528
std::string SampleLineLogName(int i) const noexcept
The filename of the ith samplelinelog file.
Definition: ERF.H:1620
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::MultiFab > > > sst_lev
Definition: ERF.H:913
amrex::Vector< std::string > plot2d_var_names_1
Definition: ERF.H:1105
amrex::Vector< std::unique_ptr< amrex::MultiFab > > thin_xforce
Definition: ERF.H:1005
AMREX_FORCE_INLINE int NumSamplePoints() noexcept
Definition: ERF.H:1480
std::unique_ptr< amrex::MultiFab > mf_C2H
Definition: ERF.H:1256
bool metgrid_use_sfc
Definition: ERF.H:1247
amrex::Real m_plot2d_per_2
Definition: ERF.H:1087
static amrex::Real bndry_output_planes_per
Definition: ERF.H:1272
void setPlotVariables2D(const std::string &pp_plot_var_names, amrex::Vector< std::string > &plot_var_names)
Definition: ERF_Plotfile.cpp:186
amrex::Real m_check_per
Definition: ERF.H:1099
void init_custom(int lev)
Definition: ERF_InitCustom.cpp:26
amrex::Vector< std::unique_ptr< IRadiation > > rad
Definition: ERF.H:880
std::unique_ptr< ProblemBase > prob
Definition: ERF.H:795
amrex::Vector< int > num_files_at_level
Definition: ERF.H:798
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, amrex::Real 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:1745
void init_bcs()
Definition: ERF_InitBCs.cpp:20
int profile_int
Definition: ERF.H:1093
bool metgrid_debug_quiescent
Definition: ERF.H:1239
amrex::Vector< std::unique_ptr< ERFPhysBCFunct_u > > physbcs_u
Definition: ERF.H:836
amrex::Vector< amrex::Real > t_new
Definition: ERF.H:805
bool destag_profiles
Definition: ERF.H:1094
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > stretched_dz_d
Definition: ERF.H:965
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > th_bc_data
Definition: ERF.H:772
amrex::Vector< amrex::Real > t_avg_cnt
Definition: ERF.H:821
void FillPatchFineLevel(int lev, amrex::Real 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:20
std::string DerDataLogName(int i) const noexcept
Definition: ERF.H:1614
void remake_zphys(int lev, amrex::Real time, std::unique_ptr< amrex::MultiFab > &temp_zphys_nd)
Definition: ERF_MakeNewArrays.cpp:718
int m_check_int
Definition: ERF.H:1098
amrex::Vector< std::unique_ptr< amrex::MultiFab > > solar_zenith
Definition: ERF.H:893
amrex::Real estTimeStep(int lev, long &dt_fast_ratio) const
Definition: ERF_ComputeTimestep.cpp:54
static std::string sponge_type
Definition: ERF.H:1223
static amrex::Real startCPUTime
Definition: ERF.H:1498
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SFS_diss_lev
Definition: ERF.H:924
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > d_sinesq_ptrs
Definition: ERF.H:1319
amrex::Vector< amrex::MultiFab > rU_old
Definition: ERF.H:847
void FillIntermediatePatch(int lev, amrex::Real 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:28
amrex::Vector< amrex::Real > t_old
Definition: ERF.H:806
void HurricaneTrackerNotInitial(int lev, amrex::TagBoxArray *tags=nullptr)
Definition: ERF_Tagging.cpp:601
AMREX_FORCE_INLINE int NumSampleLines() noexcept
Definition: ERF.H:1493
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Theta_prim
Definition: ERF.H:842
amrex::Vector< std::unique_ptr< amrex::MultiFab > > z_t_rk
Definition: ERF.H:950
static int check_for_nans
Definition: ERF.H:1207
void make_subdomains(const amrex::BoxList &ba, amrex::Vector< amrex::BoxArray > &bins)
Definition: ERF_MakeSubdomains.cpp:6
void compute_divergence(int lev, amrex::MultiFab &rhs, amrex::Array< amrex::MultiFab const *, AMREX_SPACEDIM > rho0_u_const, amrex::Geometry const &geom_at_lev)
Definition: ERF_ComputeDivergence.cpp:10
std::string MakeVTKFilename(int nstep)
Definition: ERF_Write1DProfiles.cpp:574
void fill_rhs(amrex::MultiFab &rhs_mf, const amrex::MultiFab &state_mf, amrex::Real time, const amrex::Geometry &geom)
void appendPlotVariables(const std::string &pp_plot_var_names, amrex::Vector< std::string > &plot_var_names)
Definition: ERF_Plotfile.cpp:228
amrex::Vector< std::unique_ptr< ERFPhysBCFunct_v > > physbcs_v
Definition: ERF.H:837
static amrex::Real column_per
Definition: ERF.H:1264
amrex::Vector< std::string > tot_e_datalogname
Definition: ERF.H:1602
static amrex::Real stop_time
Definition: ERF.H:1040
static int output_bndry_planes
Definition: ERF.H:1270
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > d_v_geos
Definition: ERF.H:1295
void update_terrain_arrays(int lev)
Definition: ERF_MakeNewArrays.cpp:758
static std::string nc_bdy_file
Definition: ERF.H:1230
bool metgrid_interp_theta
Definition: ERF.H:1244
static amrex::Vector< amrex::Vector< std::string > > nc_init_file
Definition: ERF.H:1226
void init_only(int lev, amrex::Real time)
Definition: ERF.cpp:1947
static int input_bndry_planes
Definition: ERF.H:1276
static StateInterpType interpolation_type
Definition: ERF.H:1220
amrex::Gpu::DeviceVector< amrex::Real > d_havg_qc
Definition: ERF.H:1332
void AverageDown()
Definition: ERF_AverageDown.cpp:16
amrex::Vector< amrex::Vector< amrex::Real > > h_v_geos
Definition: ERF.H:1294
bool projection_has_dirichlet(amrex::Array< amrex::LinOpBCType, AMREX_SPACEDIM > bcs) const
Definition: ERF_PoissonSolve_tb.cpp:8
bool regrid_level_0_on_restart
Definition: ERF.H:1067
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Lwave_onegrid
Definition: ERF.H:974
InputSoundingData input_sounding_data
Definition: ERF.H:763
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > d_rhoqt_src
Definition: ERF.H:1286
amrex::Vector< amrex::Vector< amrex::Real > > h_sinesq_ptrs
Definition: ERF.H:1311
void Write2DPlotFile(int which, PlotFileType plotfile_type, amrex::Vector< std::string > plot_var_names)
Definition: ERF_Plotfile.cpp:1921
amrex::Gpu::DeviceVector< amrex::Real > d_havg_density
Definition: ERF.H:1328
void init_from_hse(int lev)
Definition: ERF_InitFromHSE.cpp:32
const std::string datetime_format
Definition: ERF.H:1043
amrex::Vector< amrex::YAFluxRegister * > advflux_reg
Definition: ERF.H:978
int metgrid_force_sfc_k
Definition: ERF.H:1251
amrex::Vector< amrex::Vector< amrex::Real > > h_rhotheta_src
Definition: ERF.H:1282
void setSubVolVariables(const std::string &pp_subvol_var_names, amrex::Vector< std::string > &subvol_var_names)
Definition: ERF_WriteSubvolume.cpp:8
static int ng_pres_hse
Definition: ERF.H:1279
static amrex::Real bndry_output_planes_start_time
Definition: ERF.H:1273
bool real_extrap_w
Definition: ERF.H:1233
static amrex::Real cfl
Definition: ERF.H:1049
amrex::Vector< std::unique_ptr< amrex::MultiFab > > fine_mask
Definition: ERF.H:962
void project_velocity(int lev, amrex::Real dt)
Definition: ERF_PoissonSolve.cpp:10
void solve_with_mlmg(int lev, amrex::Vector< amrex::MultiFab > &rhs, amrex::Vector< amrex::MultiFab > &p, amrex::Vector< amrex::Array< amrex::MultiFab, AMREX_SPACEDIM >> &fluxes)
Definition: ERF_SolveWithMLMG.cpp:40
amrex::Gpu::DeviceVector< amrex::BCRec > domain_bcs_type_d
Definition: ERF.H:984
amrex::Vector< std::unique_ptr< ForestDrag > > m_forest_drag
Definition: ERF.H:1339
const int datwidth
Definition: ERF.H:1027
void derive_diag_profiles_stag(amrex::Real 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:296
amrex::Vector< amrex::BoxArray > ba1d
Definition: ERF.H:1253
InputSpongeData input_sponge_data
Definition: ERF.H:766
amrex::Vector< amrex::Vector< amrex::BoxArray > > subdomains
Definition: ERF.H:1346
void check_state_for_nans(amrex::MultiFab const &S)
Definition: ERF.cpp:2860
std::string restart_chkfile
Definition: ERF.H:1046
bool metgrid_use_below_sfc
Definition: ERF.H:1246
void init_zphys(int lev, amrex::Real time)
Definition: ERF_MakeNewArrays.cpp:641
amrex::Vector< std::string > sampleptlogname
Definition: ERF.H:1605
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > xvel_bc_data
Definition: ERF.H:769
void InitData_pre()
Definition: ERF.cpp:901
amrex::IntVect & SamplePoint(int i)
Definition: ERF.H:1473
bool use_datetime
Definition: ERF.H:1042
amrex::Vector< std::array< amrex::Real, 2 > > hurricane_track_xy
Definition: ERF.H:162
amrex::Vector< amrex::Vector< amrex::Real > > h_u_geos
Definition: ERF.H:1291
void InitializeLevelFromData(int lev, const amrex::MultiFab &initial_data)
std::string subvol_file
Definition: ERF.H:1074
amrex::Vector< amrex::Real > m_subvol_per
Definition: ERF.H:1082
int rad_datalog_int
Definition: ERF.H:896
void sum_derived_quantities(amrex::Real time)
Definition: ERF_WriteScalarProfiles.cpp:177
void sum_integrated_quantities(amrex::Real time)
Definition: ERF_WriteScalarProfiles.cpp:15
amrex::Vector< std::string > datalogname
Definition: ERF.H:1600
void initHSE()
Initialize HSE.
Definition: ERF_Init1D.cpp:146
static amrex::Real column_loc_x
Definition: ERF.H:1265
amrex::Vector< std::unique_ptr< amrex::MultiFab > > ax
Definition: ERF.H:936
amrex::Vector< std::unique_ptr< amrex::MultiFab > > z_phys_nd
Definition: ERF.H:932
void MakeDiagnosticAverage(amrex::Vector< amrex::Real > &h_havg, amrex::MultiFab &S, int n)
Definition: ERF.cpp:2716
amrex::Real metgrid_proximity
Definition: ERF.H:1249
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:20
void setRecordDerDataInfo(int i, const std::string &filename)
Definition: ERF.H:1529
amrex::Vector< amrex::Real > h_havg_temperature
Definition: ERF.H:1323
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, amrex::Real dt, amrex::Real time)
Definition: ERF_AdvanceDycore.cpp:38
amrex::Vector< std::unique_ptr< std::fstream > > sampleptlog
Definition: ERF.H:1604
void poisson_wall_dist(int lev)
Definition: ERF_PoissonWallDist.cpp:20
amrex::Vector< std::array< amrex::Real, 2 > > hurricane_eye_track_latlon
Definition: ERF.H:164
amrex::Vector< std::unique_ptr< amrex::MultiFab > > detJ_cc_src
Definition: ERF.H:942
amrex::Gpu::DeviceVector< amrex::Real > d_havg_pressure
Definition: ERF.H:1330
std::string plot2d_file_1
Definition: ERF.H:1072
amrex::Vector< std::string > der_datalogname
Definition: ERF.H:1601
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SmnSmn_lev
Definition: ERF.H:910
const amrex::Vector< std::string > derived_names
Definition: ERF.H:1114
std::string MakeVTKFilename_TrackerCircle(int nstep)
Definition: ERF_Write1DProfiles.cpp:587
amrex::Vector< std::unique_ptr< amrex::MultiFab > > ay_src
Definition: ERF.H:944
void sample_points(int lev, amrex::Real time, amrex::IntVect cell, amrex::MultiFab &mf)
Definition: ERF_WriteScalarProfiles.cpp:527
AMREX_FORCE_INLINE std::ostream & DataLog(int i)
Definition: ERF.H:1417
void writeJobInfo(const std::string &dir) const
Definition: ERF_WriteJobInfo.cpp:10
void solve_with_EB_mlmg(int lev, amrex::Vector< amrex::MultiFab > &rhs, amrex::Vector< amrex::MultiFab > &p, amrex::Vector< amrex::Array< amrex::MultiFab, AMREX_SPACEDIM >> &fluxes)
Definition: ERF_SolveWithEBMLMG.cpp:19
std::string MakeVTKFilename_EyeTracker_xy(int nstep)
Definition: ERF_Write1DProfiles.cpp:601
void ComputeDt(int step=-1)
Definition: ERF_ComputeTimestep.cpp:11
amrex::Vector< int > nsubsteps
Definition: ERF.H:802
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > yflux_imask
Definition: ERF.H:1000
amrex::Vector< amrex::MultiFab > rW_new
Definition: ERF.H:852
amrex::Vector< amrex::MultiFab > weather_forecast_data_2
Definition: ERF.H:167
amrex::Vector< std::unique_ptr< amrex::MultiFab > > lon_m
Definition: ERF.H:758
std::unique_ptr< WriteBndryPlanes > m_w2d
Definition: ERF.H:1336
AMREX_FORCE_INLINE std::ostream & SampleLineLog(int i)
Definition: ERF.H:1460
amrex::Vector< amrex::Vector< amrex::MultiFab * > > lsm_flux
Definition: ERF.H:878
amrex::Vector< std::string > plot3d_var_names_1
Definition: ERF.H:1103
std::string SamplePointLogName(int i) const noexcept
The filename of the ith sampleptlog file.
Definition: ERF.H:1617
void turbPert_update(const int lev, const amrex::Real dt)
Definition: ERF_InitTurbPert.cpp:12
void InitData_post()
Definition: ERF.cpp:980
void refinement_criteria_setup()
Definition: ERF_Tagging.cpp:274
static int nghost_eb_volume()
Definition: ERF.H:1639
bool metgrid_debug_dry
Definition: ERF.H:1241
static AMREX_FORCE_INLINE int ComputeGhostCells(const SolverChoice &sc)
Definition: ERF.H:1352
static int bndry_output_planes_interval
Definition: ERF.H:1271
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:10
void ERF_shared()
Definition: ERF.cpp:142
amrex::Vector< std::string > plot2d_var_names_2
Definition: ERF.H:1106
void WeatherDataInterpolation(const int nlevs, const amrex::Real time, amrex::Vector< std::unique_ptr< amrex::MultiFab >> &z_phys_nd, bool regrid_forces_file_read)
Definition: ERF_WeatherDataInterpolation.cpp:347
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::MultiFab > > > Tau_corr
Definition: ERF.H:908
void WriteSubvolume(int isub, amrex::Vector< std::string > subvol_var_names)
Definition: ERF_WriteSubvolume.cpp:144
static int nghost_eb_full()
Definition: ERF.H:1642
void RemakeLevel(int lev, amrex::Real time, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm) override
Definition: ERF_MakeNewLevel.cpp:515
static void GotoNextLine(std::istream &is)
Definition: ERF_Checkpoint.cpp:16
void MakeNewLevelFromScratch(int lev, amrex::Real time, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm) override
Definition: ERF_MakeNewLevel.cpp:25
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:24
amrex::Vector< amrex::MultiFab > zmom_crse_rhs
Definition: ERF.H:856
bool metgrid_debug_isothermal
Definition: ERF.H:1240
amrex::Vector< std::string > lsm_data_name
Definition: ERF.H:875
void initSponge()
Initialize sponge profiles.
Definition: ERF_InitSponge.cpp:35
std::unique_ptr< PlaneSampler > plane_sampler
Definition: ERF.H:1595
void check_for_low_temp(amrex::MultiFab &S)
Definition: ERF.cpp:2910
amrex::Vector< std::unique_ptr< std::fstream > > der_datalog
Definition: ERF.H:1598
static amrex::Vector< amrex::Vector< int > > have_read_nc_init_file
Definition: ERF.H:1227
amrex::Real m_plot3d_per_2
Definition: ERF.H:1085
void advance_lsm(int lev, amrex::MultiFab &cons_in, amrex::MultiFab &xvel_in, amrex::MultiFab &yvel_in, const amrex::Real &dt_advance)
Definition: ERF_AdvanceLSM.cpp:5
amrex::Vector< std::unique_ptr< std::fstream > > tot_e_datalog
Definition: ERF.H:1599
amrex::Vector< std::unique_ptr< amrex::MultiFab > > sinPhi_m
Definition: ERF.H:760
void derive_diag_profiles(amrex::Real 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:190
void HurricaneTrackerInitial(int lev, const amrex::MultiFab &U_new, const amrex::MultiFab &V_new, const amrex::MultiFab &W_new, const amrex::Real velmag_threshold, amrex::TagBoxArray *tags=nullptr)
Definition: ERF_Tagging.cpp:502
int real_width
Definition: ERF.H:1231
void MakeNewLevelFromCoarse(int lev, amrex::Real time, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm) override
Definition: ERF_MakeNewLevel.cpp:292
amrex::Vector< int > last_subvol_step
Definition: ERF.H:1021
amrex::Vector< std::unique_ptr< amrex::MultiFab > > ax_src
Definition: ERF.H:943
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::MultiFab > > > urb_frac_lev
Definition: ERF.H:920
amrex::Vector< std::unique_ptr< amrex::MultiFab > > z_phys_cc_src
Definition: ERF.H:941
void input_sponge(int lev)
Definition: ERF_InitSponge.cpp:17
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > d_u_geos
Definition: ERF.H:1292
void Define_ERFFillPatchers(int lev)
Definition: ERF.cpp:2788
AMREX_FORCE_INLINE int NumDataLogs() noexcept
Definition: ERF.H:1431
static PlotFileType plotfile3d_type_2
Definition: ERF.H:1216
void setRecordEnergyDataInfo(int i, const std::string &filename)
Definition: ERF.H:1542
TurbulentPerturbation turbPert
Definition: ERF.H:1171
amrex::Vector< amrex::MultiFab > rW_old
Definition: ERF.H:851
amrex::Vector< amrex::Vector< amrex::MultiFab > > forecast_state_2
Definition: ERF.H:169
void check_for_negative_theta(amrex::MultiFab &S)
Definition: ERF.cpp:2945
void ImposeBCsOnPhi(int lev, amrex::MultiFab &phi, const amrex::Box &subdomain)
Definition: ERF_ImposeBCsOnPhi.cpp:12
void FillCoarsePatch(int lev, amrex::Real time)
Definition: ERF_FillCoarsePatch.cpp:21
void ClearLevel(int lev) override
Definition: ERF_MakeNewLevel.cpp:742
std::unique_ptr< SurfaceLayer > m_SurfaceLayer
Definition: ERF.H:1338
static PlotFileType plotfile2d_type_2
Definition: ERF.H:1218
int plane_sampling_interval
Definition: ERF.H:1591
static amrex::Vector< amrex::AMRErrorTag > ref_tags
Definition: ERF.H:1344
void make_physbcs(int lev)
Definition: ERF_MakeNewArrays.cpp:797
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > d_w_subsid
Definition: ERF.H:1289
amrex::Vector< ERFFillPatcher > FPr_w
Definition: ERF.H:904
int real_set_width
Definition: ERF.H:1232
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SFS_hfx2_lev
Definition: ERF.H:923
void WriteLinePlot(const std::string &filename, amrex::Vector< std::array< amrex::Real, 2 >> &points_xy)
Definition: ERF_Write1DProfiles.cpp:690
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::iMultiFab > > > soil_type_lev
Definition: ERF.H:919
bool writeNow(const amrex::Real cur_time, const int nstep, const int plot_int, const amrex::Real plot_per, const amrex::Real dt_0, amrex::Real &last_file_time)
Definition: ERF.cpp:2839
amrex::Vector< amrex::Vector< amrex::Real > > zlevels_stag
Definition: ERF.H:929
AMREX_FORCE_INLINE int NumDerDataLogs() noexcept
Definition: ERF.H:1438
amrex::EBFArrayBoxFactory const & EBFactory(int lev) const noexcept
Definition: ERF.H:1631
amrex::Vector< amrex::Vector< amrex::MultiFab * > > lsm_data
Definition: ERF.H:876
void init_immersed_forcing(int lev)
Definition: ERF_InitImmersedForcing.cpp:15
amrex::Vector< amrex::Vector< amrex::Real > > stretched_dz_h
Definition: ERF.H:964
int m_plot2d_int_1
Definition: ERF.H:1078
void WriteCheckpointFile() const
Definition: ERF_Checkpoint.cpp:26
static int output_1d_column
Definition: ERF.H:1262
bool metgrid_debug_psfc
Definition: ERF.H:1242
amrex::Vector< std::unique_ptr< amrex::MultiFab > > az_src
Definition: ERF.H:945
static int fixed_mri_dt_ratio
Definition: ERF.H:1059
amrex::Vector< amrex::Real > dt
Definition: ERF.H:807
static amrex::Real init_shrink
Definition: ERF.H:1051
void WriteVTKPolyline(const std::string &filename, amrex::Vector< std::array< amrex::Real, 2 >> &points_xy)
Definition: ERF_Write1DProfiles.cpp:643
void Write3DPlotFile(int which, PlotFileType plotfile_type, amrex::Vector< std::string > plot_var_names)
Definition: ERF_Plotfile.cpp:307
void advance_radiation(int lev, amrex::MultiFab &cons_in, const amrex::Real &dt_advance)
Definition: ERF_AdvanceRadiation.cpp:5
static amrex::Real dt_max_initial
Definition: ERF.H:1053
static bool is_it_time_for_action(int nstep, amrex::Real time, amrex::Real dt, int action_interval, amrex::Real action_per)
Definition: ERF_WriteScalarProfiles.cpp:653
static std::string nc_low_file
Definition: ERF.H:1236
amrex::Vector< amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > > d_rayleigh_ptrs
Definition: ERF.H:1315
void InitData()
Definition: ERF.cpp:892
void advance_microphysics(int lev, amrex::MultiFab &cons_in, const amrex::Real &dt_advance, const int &iteration, const amrex::Real &time)
Definition: ERF_AdvanceMicrophysics.cpp:5
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Lwave
Definition: ERF.H:972
amrex::Vector< std::unique_ptr< amrex::MultiFab > > cosPhi_m
Definition: ERF.H:760
void ParameterSanityChecks()
Definition: ERF.cpp:2543
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::iMultiFab > > > land_type_lev
Definition: ERF.H:918
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:475
amrex::Vector< amrex::Vector< amrex::MultiFab > > forecast_state_1
Definition: ERF.H:168
int cf_width
Definition: ERF.H:899
static int last_plot2d_file_step_1
Definition: ERF.H:1011
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > zflux_imask
Definition: ERF.H:1001
bool m_expand_plotvars_to_unif_rr
Definition: ERF.H:1075
amrex::Real m_plot3d_per_1
Definition: ERF.H:1084
void Construct_ERFFillPatchers(int lev)
Definition: ERF.cpp:2762
void post_update(amrex::MultiFab &state_mf, amrex::Real time, const amrex::Geometry &geom)
amrex::Vector< int > num_boxes_at_level
Definition: ERF.H:797
static amrex::Real sub_cfl
Definition: ERF.H:1050
static void print_error(MPI_Comm, const std::string &msg)
Definition: ERF_ConsoleIO.cpp:43
static int ng_dens_hse
Definition: ERF.H:1278
std::unique_ptr< ReadBndryPlanes > m_r2d
Definition: ERF.H:1337
amrex::Vector< std::unique_ptr< amrex::MultiFab > > ay
Definition: ERF.H:937
void project_momenta(int lev, amrex::Real dt, amrex::Vector< amrex::MultiFab > &vars)
Definition: ERF_PoissonSolve.cpp:44
amrex::Vector< amrex::Vector< amrex::MultiFab * > > qmoist
Definition: ERF.H:859
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SFS_q1fx1_lev
Definition: ERF.H:925
static amrex::Real getCPUTime()
Definition: ERF.H:1502
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > zvel_bc_data
Definition: ERF.H:771
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:605
LandSurface lsm
Definition: ERF.H:874
static amrex::Real change_max
Definition: ERF.H:1052
void AverageDownTo(int crse_lev, int scomp, int ncomp)
Definition: ERF_AverageDown.cpp:36
void setRecordSampleLineInfo(int i, int lev, amrex::IntVect &cell, const std::string &filename)
Definition: ERF.H:1572
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:831
int line_sampling_interval
Definition: ERF.H:1590
amrex::Vector< amrex::Vector< amrex::Real > > h_sinesq_stag_ptrs
Definition: ERF.H:1312
amrex::Vector< std::unique_ptr< amrex::MultiFab > > detJ_cc_new
Definition: ERF.H:948
amrex::Array< std::string, 2 *AMREX_SPACEDIM > domain_bc_type
Definition: ERF.H:987
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > yvel_bc_data
Definition: ERF.H:770
void init_uniform(int lev)
Definition: ERF_InitUniform.cpp:17
static void writeBuildInfo(std::ostream &os)
Definition: ERF_WriteJobInfo.cpp:144
amrex::GpuArray< ERF_BC, AMREX_SPACEDIM *2 > phys_bc_type
Definition: ERF.H:996
std::string check_file
Definition: ERF.H:1097
amrex::Vector< amrex::IntVect > samplepoint
Definition: ERF.H:1606
amrex::Vector< amrex::Real > h_havg_qv
Definition: ERF.H:1325
amrex::Vector< amrex::Real > last_subvol_time
Definition: ERF.H:1022
amrex::Vector< amrex::MultiFab > weather_forecast_data_1
Definition: ERF.H:167
static void print_usage(MPI_Comm, std::ostream &)
Definition: ERF_ConsoleIO.cpp:26
amrex::Vector< amrex::MultiFab > rV_old
Definition: ERF.H:849
void HurricaneTracker(int lev, amrex::Real time, const amrex::MultiFab &U_new, const amrex::MultiFab &V_new, const amrex::MultiFab &W_new, const amrex::Real velmag_threshold, amrex::TagBoxArray *tags=nullptr)
Definition: ERF_Tagging.cpp:632
amrex::Vector< std::unique_ptr< amrex::MultiFab > > lat_m
Definition: ERF.H:758
amrex::Vector< amrex::Vector< amrex::Vector< amrex::Real > > > h_rayleigh_ptrs
Definition: ERF.H:1307
static amrex::Real last_check_file_time
Definition: ERF.H:1019
std::unique_ptr< amrex::MultiFab > mf_C1H
Definition: ERF.H:1255
static int last_plot3d_file_step_1
Definition: ERF.H:1009
static amrex::Real last_plot3d_file_time_1
Definition: ERF.H:1015
std::unique_ptr< LineSampler > line_sampler
Definition: ERF.H:1594
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Hwave
Definition: ERF.H:971
amrex::Vector< int > istep
Definition: ERF.H:801
const int datprecision
Definition: ERF.H:1028
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > xflux_imask
Definition: ERF.H:999
void derive_upwp(amrex::Vector< amrex::Real > &h_havg)
static PlotFileType plotfile2d_type_1
Definition: ERF.H:1217
int metgrid_order
Definition: ERF.H:1250
bool finished_wave
Definition: ERF.H:975
void ReadCheckpointFile()
Definition: ERF_Checkpoint.cpp:448
amrex::Vector< amrex::Vector< amrex::MultiFab > > vars_old
Definition: ERF.H:814
amrex::Vector< std::unique_ptr< ERFPhysBCFunct_base > > physbcs_base
Definition: ERF.H:839
void init_thin_body(int lev, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm)
Definition: ERF_MakeNewLevel.cpp:787
static PlotFileType plotfile3d_type_1
Definition: ERF.H:1215
amrex::Vector< int > m_subvol_int
Definition: ERF.H:1081
AMREX_FORCE_INLINE std::ostream & SamplePointLog(int i)
Definition: ERF.H:1446
std::string MakeFilename_EyeTracker_latlon(int nstep)
Definition: ERF_Write1DProfiles.cpp:615
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_neumann_vals
Definition: ERF.H:993
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::MultiFab > > > tsk_lev
Definition: ERF.H:914
void setRecordSamplePointInfo(int i, int lev, amrex::IntVect &cell, const std::string &filename)
Definition: ERF.H:1555
static int column_interval
Definition: ERF.H:1263
static void print_summary(std::ostream &)
int m_plot3d_int_2
Definition: ERF.H:1077
amrex::Vector< std::unique_ptr< amrex::MultiFab > > qheating_rates
Definition: ERF.H:881
void turbPert_amplitude(const int lev)
Definition: ERF_InitTurbPert.cpp:32
void sample_lines(int lev, amrex::Real time, amrex::IntVect cell, amrex::MultiFab &mf)
Definition: ERF_WriteScalarProfiles.cpp:563
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rad_fluxes
Definition: ERF.H:882
void initializeMicrophysics(const int &)
Definition: ERF.cpp:1850
bool plot_lsm
Definition: ERF.H:1090
amrex::Vector< amrex::MultiFab > avg_zmom
Definition: ERF.H:832
const amrex::Vector< std::string > cons_names
Definition: ERF.H:1107
void ReadCheckpointFileSurfaceLayer()
Definition: ERF_Checkpoint.cpp:1040
void timeStep(int lev, amrex::Real time, int iteration)
Definition: ERF_TimeStep.cpp:17
Definition: ERF_LandSurface.H:15
@ pres
Definition: ERF_Kessler.H:25
@ qv
Definition: ERF_Kessler.H:28
@ T
Definition: ERF_IndexDefines.H:110
@ xvel
Definition: ERF_IndexDefines.H:141
@ cons
Definition: ERF_IndexDefines.H:140
@ zvel
Definition: ERF_IndexDefines.H:143
@ yvel
Definition: ERF_IndexDefines.H:142
Definition: ERF_ConsoleIO.cpp:12
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
AdvType moistscal_horiz_adv_type
Definition: ERF_AdvStruct.H:423
AdvType dycore_vert_adv_type
Definition: ERF_AdvStruct.H:420
AdvType moistscal_vert_adv_type
Definition: ERF_AdvStruct.H:424
AdvType dryscal_horiz_adv_type
Definition: ERF_AdvStruct.H:421
AdvType dycore_horiz_adv_type
Definition: ERF_AdvStruct.H:419
AdvType dryscal_vert_adv_type
Definition: ERF_AdvStruct.H:422
Definition: ERF_DataStruct.H:128
bool use_num_diff
Definition: ERF_DataStruct.H:1094
AdvChoice advChoice
Definition: ERF_DataStruct.H:991
static TerrainType terrain_type
Definition: ERF_DataStruct.H:971
Definition: ERF_TurbPertStruct.H:22