12 #include <AMReX_AmrCore.H>
13 #include <AMReX_BCRec.H>
15 #include <AMReX_ParallelDescriptor.H>
16 #include <AMReX_ParmParse.H>
17 #include <AMReX_MultiFabUtil.H>
18 #include <AMReX_FillPatchUtil.H>
19 #include <AMReX_VisMF.H>
20 #include <AMReX_PhysBCFunct.H>
21 #include <AMReX_YAFluxRegister.H>
22 #include <AMReX_ErrorList.H>
24 #ifdef AMREX_MEM_PROFILING
25 #include <AMReX_MemProfiler.H>
42 #ifdef ERF_USE_PARTICLES
57 #include <AMReX_Lazy.H>
60 #ifdef ERF_USE_MULTIBLOCK
86 :
public amrex::AmrCore
103 ERF& operator=(
ERF&& other) noexcept = delete;
109 ERF& operator=(const
ERF& other) = delete;
115 void ErrorEst (
int lev,
amrex::TagBoxArray& tags,
amrex::Real time,
int ngrow) override;
121 void WriteMyEBSurface ();
124 #ifdef ERF_USE_POISSON_SOLVE
126 void project_velocities (
int lev, amrex::Real
dt, amrex::Vector<amrex::MultiFab >& vars, amrex::MultiFab& p);
129 void project_velocities_tb (
int lev, amrex::Real
dt, amrex::Vector<amrex::MultiFab >& vars, amrex::MultiFab& p);
132 amrex::Array<amrex::LinOpBCType,AMREX_SPACEDIM>
133 get_projection_bc (amrex::Orientation::Side side)
const noexcept;
134 bool projection_has_dirichlet (amrex::Array<amrex::LinOpBCType,AMREX_SPACEDIM> bcs)
const;
139 void init_only (
int lev, amrex::Real time);
145 bool writeNow (
const amrex::Real cur_time,
const amrex::Real
dt,
const int nstep,
const int plot_int,
const amrex::Real plot_per);
148 void post_timestep (
int nstep, amrex::Real time, amrex::Real dt_lev);
156 void FillBdyCCVels (amrex::Vector<amrex::MultiFab>& mf_cc_vel);
158 void sample_points (
int lev, amrex::Real time, amrex::IntVect cell, amrex::MultiFab& mf);
159 void sample_lines (
int lev, amrex::Real time, amrex::IntVect cell, amrex::MultiFab& mf);
161 void derive_diag_profiles (amrex::Gpu::HostVector<amrex::Real>& h_avg_u , amrex::Gpu::HostVector<amrex::Real>& h_avg_v ,
162 amrex::Gpu::HostVector<amrex::Real>& h_avg_w , amrex::Gpu::HostVector<amrex::Real>& h_avg_rho,
163 amrex::Gpu::HostVector<amrex::Real>& h_avg_th , amrex::Gpu::HostVector<amrex::Real>& h_avg_ksgs,
164 amrex::Gpu::HostVector<amrex::Real>& h_avg_qv , amrex::Gpu::HostVector<amrex::Real>& h_avg_qc ,
165 amrex::Gpu::HostVector<amrex::Real>& h_avg_qr ,
166 amrex::Gpu::HostVector<amrex::Real>& h_avg_wqv , amrex::Gpu::HostVector<amrex::Real>& h_avg_wqc ,
167 amrex::Gpu::HostVector<amrex::Real>& h_avg_wqr ,
168 amrex::Gpu::HostVector<amrex::Real>& h_avg_qi , amrex::Gpu::HostVector<amrex::Real>& h_avg_qs ,
169 amrex::Gpu::HostVector<amrex::Real>& h_avg_qg ,
170 amrex::Gpu::HostVector<amrex::Real>& h_avg_uu , amrex::Gpu::HostVector<amrex::Real>& h_avg_uv ,
171 amrex::Gpu::HostVector<amrex::Real>& h_avg_uw,
172 amrex::Gpu::HostVector<amrex::Real>& h_avg_vv , amrex::Gpu::HostVector<amrex::Real>& h_avg_vw ,
173 amrex::Gpu::HostVector<amrex::Real>& h_avg_ww,
174 amrex::Gpu::HostVector<amrex::Real>& h_avg_uth , amrex::Gpu::HostVector<amrex::Real>& h_avg_vth,
175 amrex::Gpu::HostVector<amrex::Real>& h_avg_wth, amrex::Gpu::HostVector<amrex::Real>& h_avg_thth,
176 amrex::Gpu::HostVector<amrex::Real>& h_avg_ku, amrex::Gpu::HostVector<amrex::Real>& h_avg_kv,
177 amrex::Gpu::HostVector<amrex::Real>& h_avg_kw,
178 amrex::Gpu::HostVector<amrex::Real>& h_avg_p,
179 amrex::Gpu::HostVector<amrex::Real>& h_avg_pu, amrex::Gpu::HostVector<amrex::Real>& h_avg_pv,
180 amrex::Gpu::HostVector<amrex::Real>& h_avg_pw);
181 void derive_diag_profiles_stag (amrex::Gpu::HostVector<amrex::Real>& h_avg_u , amrex::Gpu::HostVector<amrex::Real>& h_avg_v ,
182 amrex::Gpu::HostVector<amrex::Real>& h_avg_w , amrex::Gpu::HostVector<amrex::Real>& h_avg_rho,
183 amrex::Gpu::HostVector<amrex::Real>& h_avg_th , amrex::Gpu::HostVector<amrex::Real>& h_avg_ksgs,
184 amrex::Gpu::HostVector<amrex::Real>& h_avg_uu , amrex::Gpu::HostVector<amrex::Real>& h_avg_uv ,
185 amrex::Gpu::HostVector<amrex::Real>& h_avg_uw,
186 amrex::Gpu::HostVector<amrex::Real>& h_avg_vv , amrex::Gpu::HostVector<amrex::Real>& h_avg_vw ,
187 amrex::Gpu::HostVector<amrex::Real>& h_avg_ww,
188 amrex::Gpu::HostVector<amrex::Real>& h_avg_uth , amrex::Gpu::HostVector<amrex::Real>& h_avg_vth,
189 amrex::Gpu::HostVector<amrex::Real>& h_avg_wth, amrex::Gpu::HostVector<amrex::Real>& h_avg_thth,
190 amrex::Gpu::HostVector<amrex::Real>& h_avg_ku, amrex::Gpu::HostVector<amrex::Real>& h_avg_kv,
191 amrex::Gpu::HostVector<amrex::Real>& h_avg_kw,
192 amrex::Gpu::HostVector<amrex::Real>& h_avg_p,
193 amrex::Gpu::HostVector<amrex::Real>& h_avg_pu, amrex::Gpu::HostVector<amrex::Real>& h_avg_pv,
194 amrex::Gpu::HostVector<amrex::Real>& h_avg_pw);
196 void derive_stress_profiles (amrex::Gpu::HostVector<amrex::Real>& h_avg_tau11, amrex::Gpu::HostVector<amrex::Real>& h_avg_tau12,
197 amrex::Gpu::HostVector<amrex::Real>& h_avg_tau13, amrex::Gpu::HostVector<amrex::Real>& h_avg_tau22,
198 amrex::Gpu::HostVector<amrex::Real>& h_avg_tau23, amrex::Gpu::HostVector<amrex::Real>& h_avg_tau33,
199 amrex::Gpu::HostVector<amrex::Real>& h_avg_hfx3, amrex::Gpu::HostVector<amrex::Real>& h_avg_diss);
200 void derive_stress_profiles_stag (amrex::Gpu::HostVector<amrex::Real>& h_avg_tau11, amrex::Gpu::HostVector<amrex::Real>& h_avg_tau12,
201 amrex::Gpu::HostVector<amrex::Real>& h_avg_tau13, amrex::Gpu::HostVector<amrex::Real>& h_avg_tau22,
202 amrex::Gpu::HostVector<amrex::Real>& h_avg_tau23, amrex::Gpu::HostVector<amrex::Real>& h_avg_tau33,
203 amrex::Gpu::HostVector<amrex::Real>& h_avg_hfx3, amrex::Gpu::HostVector<amrex::Real>& h_avg_diss);
207 volWgtSumMF (
int lev,
const amrex::MultiFab& mf,
int comp,
208 const amrex::MultiFab& mapfac,
209 bool local,
bool finemask);
213 int action_interval, amrex::Real action_per);
219 const amrex::DistributionMapping& dm)
override;
224 void RemakeLevel (
int lev, amrex::Real time,
const amrex::BoxArray& ba,
225 const amrex::DistributionMapping& dm)
override;
235 const amrex::DistributionMapping& dm)
override;
238 amrex::Real
estTimeStep (
int lev,
long& dt_fast_ratio)
const;
242 amrex::Vector<amrex::MultiFab>& state_old,
243 amrex::Vector<amrex::MultiFab>& state_new,
244 amrex::MultiFab& xvel_old, amrex::MultiFab& yvel_old, amrex::MultiFab& zvel_old,
245 amrex::MultiFab& xvel_new, amrex::MultiFab& yvel_new, amrex::MultiFab& zvel_new,
246 amrex::MultiFab& source, amrex::MultiFab& xmom_src,
247 amrex::MultiFab& ymom_src, amrex::MultiFab& zmom_src,
248 amrex::Geometry fine_geom,
249 amrex::Real
dt, amrex::Real time);
252 amrex::MultiFab& cons_in,
253 const amrex::Real& dt_advance,
254 const int& iteration,
255 const amrex::Real& time);
259 const amrex::Real& dt_advance);
261 #if defined(ERF_USE_RRTMGP)
262 void advance_radiation (
int lev,
263 amrex::MultiFab& cons_in,
264 const amrex::Real& dt_advance);
274 void WritePlotFile (
int which, amrex::Vector<std::string> plot_var_names);
278 const amrex::Vector<const amrex::MultiFab*> &mf,
279 const amrex::Vector<const amrex::MultiFab*> &mf_nd,
280 const amrex::Vector<std::string> &varnames,
282 const amrex::Vector<int> &level_steps,
283 const std::string &versionName =
"HyperCLaw-V1.1",
284 const std::string &levelPrefix =
"Level_",
285 const std::string &mfPrefix =
"Cell",
286 const amrex::Vector<std::string>& extra_dirs = amrex::Vector<std::string>())
const;
291 const amrex::Vector<amrex::BoxArray> &bArray,
292 const amrex::Vector<std::string> &varnames,
294 const amrex::Vector<int> &level_steps,
295 const std::string &versionName,
296 const std::string &levelPrefix,
297 const std::string &mfPrefix)
const;
300 amrex::MultiFab& dens, amrex::MultiFab&
pres, amrex::MultiFab& pi,
301 std::unique_ptr<amrex::MultiFab>& z_cc);
303 #ifdef ERF_USE_NETCDF
305 void writeToNCColumnFile (
int lev,
306 const std::string& colfile_name, amrex::Real xloc, amrex::Real yloc,
316 #ifdef ERF_USE_MULTIBLOCK
319 ERF (
const amrex::RealBox& rb,
int max_level_in,
320 const amrex::Vector<int>& n_cell_in,
int coord,
321 const amrex::Vector<amrex::IntVect>& ref_ratios,
322 const amrex::Array<int,AMREX_SPACEDIM>& is_per,
326 void Evolve_MB (
int MBstep,
int max_block_step);
329 amrex::Real get_t_old() {
return t_old[0];}
330 amrex::Real get_t_new() {
return t_new[0];}
333 void SetParmParsePrefix (std::string name) {
pp_prefix = name; }
339 std::vector<amrex::Box> domain_p;
341 amrex::Vector<amrex::Vector<amrex::MultiFab> >
vars_new;
342 amrex::Vector<amrex::Vector<amrex::MultiFab> >
vars_old;
345 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
vel_t_avg;
354 #ifdef ERF_USE_NETCDF
355 void fill_from_realbdy (
const amrex::Vector<amrex::MultiFab*>& mfs,
362 #ifdef ERF_USE_NETCDF
363 void init_from_wrfinput (
int lev);
364 void init_from_metgrid (
int lev);
367 #ifdef ERF_USE_WINDFARM
368 void init_windfarm(
int lev);
372 void MakeEBGeometry ();
374 void make_eb_cylinder ();
375 void make_eb_regular ();
409 void init_stuff (
int lev,
const amrex::BoxArray& ba,
const amrex::DistributionMapping& dm,
410 amrex::Vector<amrex::MultiFab>& lev_new,
411 amrex::Vector<amrex::MultiFab>& lev_old);
426 void FillPatch (
int lev, amrex::Real time,
427 const amrex::Vector<amrex::MultiFab*>& mfs_vel,
428 const amrex::Vector<amrex::MultiFab*>& mfs_mom,
429 bool fillset=
true,
bool cons_only=
false);
443 const amrex::Vector<amrex::MultiFab*>& mfs_vel,
444 const amrex::Vector<amrex::MultiFab*>& mfs_mom,
445 int ng_cons,
int ng_vel,
bool cons_only,
int icomp_cons,
int ncomp_cons,
446 bool allow_most_bcs =
true);
454 void timeStep (
int lev, amrex::Real time,
int iteration);
457 void Advance (
int lev, amrex::Real time, amrex::Real dt_lev,
int iteration,
int ncycle);
482 static amrex::Vector<std::string>
PlotFileVarNames (amrex::Vector<std::string> plot_var_names) ;
485 void setPlotVariables (
const std::string& pp_plot_var_names, amrex::Vector<std::string>& plot_var_names);
487 void appendPlotVariables (
const std::string& pp_plot_var_names, amrex::Vector<std::string>& plot_var_names);
489 #ifdef ERF_USE_NETCDF
491 void writeNCPlotFile (
int lev,
int which,
const std::string& dir,
492 const amrex::Vector<const amrex::MultiFab*> &mf,
493 const amrex::Vector<std::string> &plot_var_names,
494 const amrex::Vector<int>& level_steps, amrex::Real time)
const;
497 void WriteNCCheckpointFile ()
const;
500 void ReadNCCheckpointFile ();
503 static void WriteNCMultiFab (
const amrex::FabArray<amrex::FArrayBox> &fab,
504 const std::string& name,
505 bool set_ghost =
false) ;
508 void ReadNCMultiFab (amrex::FabArray<amrex::FArrayBox> &mf,
509 const std::string &name,
510 int coordinatorProc = amrex::ParallelDescriptor::IOProcessorNumber(),
511 int allow_empty_mf = 0);
514 void createNCColumnFile (
int lev,
515 const std::string& colfile_name, amrex::Real xloc, amrex::Real yloc);
518 void init_from_wrfbdy (amrex::Vector<amrex::FArrayBox*> x_vel_lateral,
519 amrex::Vector<amrex::FArrayBox*> y_vel_lateral,
520 amrex::Vector<amrex::FArrayBox*> z_vel_lateral,
521 amrex::Vector<amrex::FArrayBox*> T_lateral);
523 amrex::Real start_bdy_time;
535 amrex::Vector<amrex::Vector<amrex::FArrayBox>> bdy_data_xlo;
536 amrex::Vector<amrex::Vector<amrex::FArrayBox>> bdy_data_xhi;
537 amrex::Vector<amrex::Vector<amrex::FArrayBox>> bdy_data_ylo;
538 amrex::Vector<amrex::Vector<amrex::FArrayBox>> bdy_data_yhi;
540 amrex::Real bdy_time_interval;
541 amrex::Vector<std::unique_ptr<amrex::MultiFab>> lat_m, lon_m;
542 amrex::Real Latitude;
543 amrex::Real Longitude;
570 void post_update (amrex::MultiFab& state_mf, amrex::Real time,
const amrex::Geometry& geom);
571 void fill_rhs (amrex::MultiFab& rhs_mf,
const amrex::MultiFab& state_mf, amrex::Real time,
const amrex::Geometry& geom);
580 std::unique_ptr<ProblemBase>
prob =
nullptr;
592 amrex::Vector<amrex::Real>
dt;
597 #ifndef ERF_USE_MULTIBLOCK
598 amrex::Vector<amrex::Vector<amrex::MultiFab> >
vars_new;
599 amrex::Vector<amrex::Vector<amrex::MultiFab> >
vars_old;
602 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
vel_t_avg;
605 amrex::Vector<std::unique_ptr<MRISplitIntegrator<amrex::Vector<amrex::MultiFab> > > >
mri_integrator_mem;
607 #ifdef ERF_USE_POISSON_SOLVE
608 amrex::Vector<amrex::MultiFab> pp_inc;
613 amrex::Vector<std::unique_ptr<ERFPhysBCFunct_u>>
physbcs_u;
614 amrex::Vector<std::unique_ptr<ERFPhysBCFunct_v>>
physbcs_v;
615 amrex::Vector<std::unique_ptr<ERFPhysBCFunct_w>>
physbcs_w;
620 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
Qv_prim;
630 std::unique_ptr<Microphysics>
micro;
631 amrex::Vector<amrex::Vector<amrex::MultiFab*>>
qmoist;
633 amrex::Vector<amrex::MultiFab>
Nturb;
641 amrex::Vector<amrex::Vector<amrex::MultiFab*>>
lsm_data;
642 amrex::Vector<amrex::Vector<amrex::MultiFab*>>
lsm_flux;
644 #if defined(ERF_USE_RRTMGP)
646 amrex::Vector<std::unique_ptr<amrex::MultiFab>> qheating_rates;
649 amrex::Vector<std::unique_ptr<amrex::MultiFab>> sw_lw_fluxes;
650 amrex::Vector<std::unique_ptr<amrex::MultiFab>> solar_zenith;
656 amrex::Vector<ERFFillPatcher>
FPr_c;
657 amrex::Vector<ERFFillPatcher>
FPr_u;
658 amrex::Vector<ERFFillPatcher>
FPr_v;
659 amrex::Vector<ERFFillPatcher>
FPr_w;
670 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::MultiFab>>>
sst_lev;
671 amrex::Vector<amrex::Vector<std::unique_ptr<amrex::iMultiFab>>>
lmask_lev;
679 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
z_phys_nd;
680 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
z_phys_cc;
682 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
detJ_cc;
683 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
ax;
684 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
ay;
685 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
az;
689 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
ax_src;
690 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
ay_src;
691 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
az_src;
695 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
ax_new;
696 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
ay_new;
697 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
az_new;
699 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
z_t_rk;
701 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
mapfac_m;
702 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
mapfac_u;
703 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
mapfac_v;
752 amrex::Real
stop_time = std::numeric_limits<amrex::Real>::max();
794 const amrex::Vector<std::string>
cons_names {
"density",
"rhotheta",
"rhoKE",
"rhoQKE",
"rhoadv_0",
795 "rhoQ1",
"rhoQ2",
"rhoQ3",
796 "rhoQ4",
"rhoQ5",
"rhoQ6"};
799 const amrex::Vector<std::string>
derived_names {
"soundspeed",
"temp",
"theta",
"KE",
"QKE",
"scalar",
800 "vorticity_x",
"vorticity_y",
"vorticity_z",
802 "pres_hse",
"dens_hse",
"pressure",
"pert_pres",
"pert_dens",
"eq_pot_temp",
"num_turb",
803 "dpdx",
"dpdy",
"pres_hse_x",
"pres_hse_y",
804 "z_phys",
"detJ" ,
"mapfac",
"lat_m",
"lon_m",
806 "u_t_avg",
"v_t_avg",
"w_t_avg",
"umag_t_avg",
814 "qt",
"qv",
"qc",
"qi",
"qp",
"qrain",
"qsnow",
"qgraup",
"rain_accum",
"snow_accum",
"graup_accum"
815 #ifdef ERF_COMPUTE_ERROR
816 ,
"xvel_err",
"yvel_err",
"zvel_err",
"pp_err"
823 #ifdef ERF_USE_PARTICLES
825 ParticleData particleData;
828 bool m_use_tracer_particles;
829 bool m_use_hydro_particles;
832 void readTracersParams();
835 void initializeTracers ( amrex::ParGDBBase*,
836 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& );
838 void evolveTracers(
int,
840 amrex::Vector<amrex::Vector<amrex::MultiFab>>&,
841 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& );
846 #ifdef ERF_USE_POISSON_SOLVE
847 static int mg_verbose;
910 amrex::Vector<amrex::Gpu::DeviceVector<amrex::Real> >
d_rhoqt_src;
913 amrex::Vector<amrex::Gpu::DeviceVector<amrex::Real> >
d_w_subsid;
915 amrex::Vector< amrex::Vector<amrex::Real> >
h_u_geos;
916 amrex::Vector<amrex::Gpu::DeviceVector<amrex::Real> >
d_u_geos;
918 amrex::Vector< amrex::Vector<amrex::Real> >
h_v_geos;
919 amrex::Vector<amrex::Gpu::DeviceVector<amrex::Real> >
d_v_geos;
928 amrex::Vector<amrex::Vector<amrex::Gpu::DeviceVector<amrex::Real> > >
d_rayleigh_ptrs;
931 amrex::Vector<amrex::Vector<amrex::Gpu::DeviceVector<amrex::Real> > >
d_sponge_ptrs;
947 std::unique_ptr<WriteBndryPlanes>
m_w2d =
nullptr;
948 std::unique_ptr<ReadBndryPlanes>
m_r2d =
nullptr;
949 std::unique_ptr<ABLMost>
m_most =
nullptr;
964 static AMREX_FORCE_INLINE
1083 int numCores = amrex::ParallelDescriptor::NProcs();
1085 numCores = numCores * omp_get_max_threads();
1089 numCores * (amrex::ParallelDescriptor::second() -
startCPUTime) +
1097 if (amrex::ParallelDescriptor::IOProcessor())
1099 datalog[i] = std::make_unique<std::fstream>();
1100 datalog[i]->open(filename.c_str(),std::ios::out|std::ios::app);
1102 amrex::FileOpenFailed(filename);
1105 amrex::ParallelDescriptor::Barrier(
"ERF::setRecordDataInfo");
1110 amrex::MultiFab dummy(grids[lev],dmap[lev],1,0);
1111 for (amrex::MFIter mfi(dummy); mfi.isValid(); ++mfi)
1113 const amrex::Box& bx = mfi.validbox();
1114 if (bx.contains(cell)) {
1115 sampleptlog[i] = std::make_unique<std::fstream>();
1116 sampleptlog[i]->open(filename.c_str(),std::ios::out|std::ios::app);
1118 amrex::FileOpenFailed(filename);
1122 amrex::ParallelDescriptor::Barrier(
"ERF::setRecordSamplePointInfo");
1127 amrex::MultiFab dummy(grids[lev],dmap[lev],1,0);
1128 for (amrex::MFIter mfi(dummy); mfi.isValid(); ++mfi)
1130 const amrex::Box& bx = mfi.validbox();
1131 if (bx.contains(cell)) {
1133 samplelinelog[i]->open(filename.c_str(),std::ios::out|std::ios::app);
1135 amrex::FileOpenFailed(filename);
1139 amrex::ParallelDescriptor::Barrier(
"ERF::setRecordSampleLineInfo");
1142 amrex::Vector<std::unique_ptr<std::fstream> >
datalog;
1162 amrex::Vector<std::unique_ptr<amrex::FabFactory<amrex::FArrayBox> > >
m_factory;
1164 [[nodiscard]] amrex::FabFactory<amrex::FArrayBox>
const&
1167 [[nodiscard]] amrex::EBFArrayBoxFactory
const&
1168 EBFactory (
int lev)
const noexcept {
1169 return static_cast<amrex::EBFArrayBoxFactory const&
>(*
m_factory[lev]);
1172 [[nodiscard]]
static int nghost_eb_basic ()
1176 [[nodiscard]]
static int nghost_eb_volume ()
1179 [[nodiscard]]
static int nghost_eb_full ()
1188 static void print_usage(MPI_Comm , std::ostream& );
1189 static void print_error(MPI_Comm ,
const std::string& msg);
Containes the Eulerian microphysics class.
#define NVAR_max
Definition: IndexDefines.H:27
Containes the Lagrangian microphysics class.
amrex::Vector< amrex::MultiFab > vars_ewp
Definition: ERF.H:635
void MakeHorizontalAverages()
Definition: ERF.cpp:1470
amrex::Vector< amrex::MultiFab > rU_new
Definition: ERF.H:624
int last_check_file_step
Definition: ERF.H:743
void initRayleigh()
Initialize Rayleigh damping profiles.
Definition: ERF_init1d.cpp:18
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Tau23_lev
Definition: ERF.H:665
amrex::Vector< amrex::Vector< amrex::Box > > boxes_at_level
Definition: ERF.H:584
std::unique_ptr< ABLMost > m_most
Definition: ERF.H:949
amrex::Vector< std::string > samplelinelogname
Definition: ERF.H:1150
int max_step
Definition: ERF.H:750
amrex::Real dz_min
Definition: ERF.H:962
void setRayleighRefFromSounding(bool restarting)
Set Rayleigh mean profiles from input sounding.
Definition: ERF_init1d.cpp:56
int last_plot_file_step_2
Definition: ERF.H:741
static std::string input_sponge_file
Definition: ERF.H:879
amrex::Vector< std::unique_ptr< MRISplitIntegrator< amrex::Vector< amrex::MultiFab > > > > mri_integrator_mem
Definition: ERF.H:605
void WritePlotFile(int which, amrex::Vector< std::string > plot_var_names)
Definition: Plotfile.cpp:145
void Evolve()
Definition: ERF.cpp:324
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > d_rhotheta_src
Definition: ERF.H:907
amrex::Vector< ERFFillPatcher > FPr_u
Definition: ERF.H:657
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_diss)
Definition: ERF_Write1DProfiles.cpp:396
amrex::Vector< amrex::IntVect > sampleline
Definition: ERF.H:1151
amrex::Vector< amrex::Vector< amrex::MultiFab > > vars_new
Definition: ERF.H:598
amrex::Real rotor_dia
Definition: ERF.H:636
ERF(ERF &&) noexcept=delete
AMREX_FORCE_INLINE int NumSampleLineLogs() noexcept
Definition: ERF.H:1046
static void print_tpls(std::ostream &)
Definition: console_io.cpp:137
std::string DataLogName(int i) const noexcept
The filename of the ith datalog file.
Definition: ERF.H:1154
void WriteGenericPlotfileHeaderWithTerrain(std::ostream &HeaderFile, int nlevels, const amrex::Vector< amrex::BoxArray > &bArray, const amrex::Vector< std::string > &varnames, amrex::Real time, const amrex::Vector< int > &level_steps, const std::string &versionName, const std::string &levelPrefix, const std::string &mfPrefix) const
Definition: Plotfile.cpp:1443
amrex::Vector< std::unique_ptr< amrex::MultiFab > > thin_yforce
Definition: ERF.H:737
void ErrorEst(int lev, amrex::TagBoxArray &tags, amrex::Real time, int ngrow) override
Definition: ERF_Tagging.cpp:15
std::string plot_file_2
Definition: ERF.H:773
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NVAR_max > m_bc_extdir_vals
Definition: ERF.H:721
void FillBdyCCVels(amrex::Vector< amrex::MultiFab > &mf_cc_vel)
Definition: ERF_FillPatch.cpp:545
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SFS_hfx3_lev
Definition: ERF.H:674
amrex::Vector< amrex::Vector< amrex::Real > > h_w_subsid
Definition: ERF.H:912
amrex::Vector< amrex::Real > wind_speed
Definition: ERF.H:637
static void print_banner(MPI_Comm, std::ostream &)
Definition: console_io.cpp:60
amrex::Vector< std::unique_ptr< std::fstream > > datalog
Definition: ERF.H:1142
static amrex::Real sum_per
Definition: ERF.H:852
amrex::Vector< ERFFillPatcher > FPr_v
Definition: ERF.H:658
int cf_set_width
Definition: ERF.H:655
amrex::Vector< std::unique_ptr< amrex::MultiFab > > mapfac_u
Definition: ERF.H:702
static amrex::Real previousCPUTimeUsed
Definition: ERF.H:1078
void setPlotVariables(const std::string &pp_plot_var_names, amrex::Vector< std::string > &plot_var_names)
Definition: Plotfile.cpp:18
amrex::Gpu::DeviceVector< amrex::Real > d_havg_temperature
Definition: ERF.H:940
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Tau31_lev
Definition: ERF.H:664
amrex::Vector< amrex::Vector< amrex::Vector< amrex::Real > > > h_sponge_ptrs
Definition: ERF.H:925
static amrex::Real fixed_fast_dt
Definition: ERF.H:764
void fill_from_bndryregs(const amrex::Vector< amrex::MultiFab * > &mfs, amrex::Real time)
Definition: BoundaryConditions_bndryreg.cpp:13
amrex::Vector< std::unique_ptr< amrex::MultiFab > > mapfac_m
Definition: ERF.H:701
void setRecordDataInfo(int i, const std::string &filename)
Definition: ERF.H:1095
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SFS_hfx1_lev
Definition: ERF.H:674
void init_from_input_sounding(int lev)
Definition: ERF_init_from_input_sounding.cpp:49
bool cc_profiles
Definition: ERF.H:783
amrex::Gpu::DeviceVector< amrex::Real > d_havg_qv
Definition: ERF.H:942
static amrex::Real column_loc_y
Definition: ERF.H:890
void ReadParameters()
Definition: ERF.cpp:1211
static amrex::Vector< std::string > PlotFileVarNames(amrex::Vector< std::string > plot_var_names)
Definition: Plotfile.cpp:133
void InitializeFromFile()
amrex::Vector< std::unique_ptr< ERFPhysBCFunct_cons > > physbcs_cons
Definition: ERF.H:612
static bool init_sounding_ideal
Definition: ERF.H:883
amrex::Vector< std::unique_ptr< amrex::MultiFab > > ay_new
Definition: ERF.H:696
ERF()
Definition: ERF.cpp:96
std::string restart_type
Definition: ERF.H:788
amrex::Vector< std::unique_ptr< amrex::MultiFab > > z_phys_nd_src
Definition: ERF.H:687
amrex::Vector< std::unique_ptr< amrex::MultiFab > > detJ_cc
Definition: ERF.H:682
amrex::Real m_plot_per_1
Definition: ERF.H:776
amrex::Vector< std::unique_ptr< amrex::MultiFab > > z_phys_cc
Definition: ERF.H:680
amrex::Vector< std::unique_ptr< amrex::MultiFab > > eddyDiffs_lev
Definition: ERF.H:666
static SolverChoice solverChoice
Definition: ERF.H:821
std::string check_type
Definition: ERF.H:787
amrex::Vector< ERFFillPatcher > FPr_c
Definition: ERF.H:656
void initialize_bcs(int lev)
Definition: ERF_make_new_arrays.cpp:420
amrex::Vector< amrex::MultiFab > base_state_new
Definition: ERF.H:706
amrex::Vector< std::unique_ptr< amrex::MultiFab > > az
Definition: ERF.H:685
int regrid_int
Definition: ERF.H:769
void write_1D_profiles_stag(amrex::Real time)
Definition: ERF_Write1DProfiles_stag.cpp:21
amrex::Vector< amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > > d_sponge_ptrs
Definition: ERF.H:931
amrex::Vector< amrex::Vector< amrex::Real > > h_rhoqt_src
Definition: ERF.H:909
amrex::Vector< long > dt_mri_ratio
Definition: ERF.H:593
amrex::Vector< std::unique_ptr< amrex::MultiFab > > vel_t_avg
Definition: ERF.H:602
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::iMultiFab > > > lmask_lev
Definition: ERF.H:671
amrex::Real stop_time
Definition: ERF.H:752
AMREX_FORCE_INLINE int NumSamplePointLogs() noexcept
Definition: ERF.H:1032
amrex::Vector< amrex::Real > h_havg_pressure
Definition: ERF.H:935
void update_diffusive_arrays(int lev, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm)
Definition: ERF_make_new_arrays.cpp:285
static int verbose
Definition: ERF.H:845
amrex::Vector< amrex::Real > h_havg_qc
Definition: ERF.H:937
amrex::Vector< std::unique_ptr< ERFPhysBCFunct_w > > physbcs_w
Definition: ERF.H:615
amrex::Vector< int > min_k_at_level
Definition: ERF.H:577
void Advance(int lev, amrex::Real time, amrex::Real dt_lev, int iteration, int ncycle)
Definition: ERF_Advance.cpp:21
amrex::Vector< amrex::MultiFab > vars_fitch
Definition: ERF.H:634
static std::string column_file_name
Definition: ERF.H:891
amrex::Vector< std::unique_ptr< std::fstream > > samplelinelog
Definition: ERF.H:1149
std::unique_ptr< Microphysics > micro
Definition: ERF.H:630
amrex::Vector< amrex::MultiFab > base_state
Definition: ERF.H:705
AMREX_FORCE_INLINE amrex::YAFluxRegister * getAdvFluxReg(int lev)
Definition: ERF.H:1004
amrex::Vector< std::unique_ptr< ERFPhysBCFunct_w_no_terrain > > physbcs_w_no_terrain
Definition: ERF.H:616
amrex::Vector< amrex::Real > h_havg_density
Definition: ERF.H:933
amrex::Vector< std::unique_ptr< amrex::MultiFab > > z_phys_nd_new
Definition: ERF.H:693
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Qv_prim
Definition: ERF.H:620
static int sum_interval
Definition: ERF.H:851
void restart()
Definition: ERF.cpp:1099
static std::string input_sounding_file
Definition: ERF.H:876
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Tau13_lev
Definition: ERF.H:664
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, bool allow_most_bcs=true)
Definition: ERF_FillPatch.cpp:231
amrex::IntVect & SampleLine(int i)
Definition: ERF.H:1065
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Tau21_lev
Definition: ERF.H:663
amrex::Vector< amrex::MultiFab > rV_new
Definition: ERF.H:626
std::string PlotFileName(int lev) const
void write_1D_profiles(amrex::Real time)
Definition: ERF_Write1DProfiles.cpp:15
void initialize_integrator(int lev, amrex::MultiFab &cons_mf, amrex::MultiFab &vel_mf)
Definition: ERF_make_new_arrays.cpp:398
amrex::Vector< std::unique_ptr< amrex::MultiFab > > thin_zforce
Definition: ERF.H:738
amrex::Vector< amrex::BCRec > domain_bcs_type
Definition: ERF.H:714
int m_plot_int_1
Definition: ERF.H:774
void post_timestep(int nstep, amrex::Real time, amrex::Real dt_lev)
Definition: ERF.cpp:411
std::string pp_prefix
Definition: ERF.H:349
std::string SampleLineLogName(int i) const noexcept
The filename of the ith samplelinelog file.
Definition: ERF.H:1160
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::MultiFab > > > sst_lev
Definition: ERF.H:670
amrex::Vector< std::unique_ptr< amrex::MultiFab > > thin_xforce
Definition: ERF.H:736
AMREX_FORCE_INLINE int NumSamplePoints() noexcept
Definition: ERF.H:1059
static amrex::Real bndry_output_planes_per
Definition: ERF.H:896
amrex::Real m_check_per
Definition: ERF.H:790
void init_custom(int lev)
Definition: ERF_init_custom.cpp:26
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Tau33_lev
Definition: ERF.H:662
std::unique_ptr< ProblemBase > prob
Definition: ERF.H:580
amrex::Vector< int > num_files_at_level
Definition: ERF.H:583
void init_bcs()
Definition: ERF_init_bcs.cpp:21
void ComputeDt()
Definition: ERF_ComputeTimestep.cpp:11
int profile_int
Definition: ERF.H:782
amrex::Vector< std::unique_ptr< ERFPhysBCFunct_u > > physbcs_u
Definition: ERF.H:613
amrex::Vector< amrex::Real > t_new
Definition: ERF.H:590
amrex::Vector< amrex::Real > t_avg_cnt
Definition: ERF.H:603
amrex::Vector< std::string > plot_var_names_1
Definition: ERF.H:792
int m_check_int
Definition: ERF.H:789
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NVAR_max > m_bc_neumann_vals
Definition: ERF.H:724
amrex::Real estTimeStep(int lev, long &dt_fast_ratio) const
Definition: ERF_ComputeTimestep.cpp:49
static std::string sponge_type
Definition: ERF.H:861
static amrex::Real startCPUTime
Definition: ERF.H:1077
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SFS_diss_lev
Definition: ERF.H:675
amrex::Vector< amrex::MultiFab > rU_old
Definition: ERF.H:623
amrex::Vector< amrex::Real > t_old
Definition: ERF.H:591
AMREX_FORCE_INLINE int NumSampleLines() noexcept
Definition: ERF.H:1072
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Theta_prim
Definition: ERF.H:619
amrex::Vector< std::unique_ptr< amrex::MultiFab > > z_t_rk
Definition: ERF.H:699
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: Plotfile.cpp:87
amrex::Vector< std::unique_ptr< ERFPhysBCFunct_v > > physbcs_v
Definition: ERF.H:614
amrex::Vector< std::string > plot_var_names_2
Definition: ERF.H:793
amrex::Vector< amrex::Real > zlevels_stag
Definition: ERF.H:678
static amrex::Real column_per
Definition: ERF.H:888
static int output_bndry_planes
Definition: ERF.H:894
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > d_v_geos
Definition: ERF.H:919
int last_plot_file_step_1
Definition: ERF.H:740
static std::string nc_bdy_file
Definition: ERF.H:871
static amrex::Vector< amrex::Vector< std::string > > nc_init_file
Definition: ERF.H:868
void init_only(int lev, amrex::Real time)
Definition: ERF.cpp:1130
static int input_bndry_planes
Definition: ERF.H:900
amrex::Gpu::DeviceVector< amrex::Real > d_havg_qc
Definition: ERF.H:943
amrex::Real hub_height
Definition: ERF.H:636
void AverageDown()
Definition: ERF.cpp:1612
amrex::Vector< amrex::Vector< amrex::Real > > h_v_geos
Definition: ERF.H:918
InputSoundingData input_sounding_data
Definition: ERF.H:547
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > d_rhoqt_src
Definition: ERF.H:910
amrex::MultiFab fine_mask
Definition: ERF.H:960
amrex::Gpu::DeviceVector< amrex::Real > d_havg_density
Definition: ERF.H:939
void init_from_hse(int lev)
Definition: ERF_init_from_hse.cpp:34
static bool use_real_bcs
Definition: ERF.H:865
amrex::Vector< amrex::YAFluxRegister * > advflux_reg
Definition: ERF.H:709
amrex::Vector< amrex::Vector< amrex::Real > > h_rhotheta_src
Definition: ERF.H:906
static int ng_pres_hse
Definition: ERF.H:903
static amrex::Real bndry_output_planes_start_time
Definition: ERF.H:897
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, amrex::Real time, const amrex::Vector< int > &level_steps, 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: Plotfile.cpp:1358
static amrex::Real cfl
Definition: ERF.H:758
amrex::Gpu::DeviceVector< amrex::BCRec > domain_bcs_type_d
Definition: ERF.H:715
InputSpongeData input_sponge_data
Definition: ERF.H:550
void FillPatch(int lev, amrex::Real time, const amrex::Vector< amrex::MultiFab * > &mfs_vel, const amrex::Vector< amrex::MultiFab * > &mfs_mom, bool fillset=true, bool cons_only=false)
Definition: ERF_FillPatch.cpp:22
void derive_diag_profiles_stag(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_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)
Definition: ERF_Write1DProfiles_stag.cpp:276
amrex::Vector< amrex::MultiFab > Nturb
Definition: ERF.H:633
std::string restart_chkfile
Definition: ERF.H:755
amrex::Vector< std::string > sampleptlogname
Definition: ERF.H:1146
void update_terrain_arrays(int lev, amrex::Real time)
Definition: ERF_make_new_arrays.cpp:350
amrex::IntVect & SamplePoint(int i)
Definition: ERF.H:1052
amrex::Vector< int > max_k_at_level
Definition: ERF.H:578
amrex::Vector< amrex::Vector< amrex::Real > > h_u_geos
Definition: ERF.H:915
void InitializeLevelFromData(int lev, const amrex::MultiFab &initial_data)
void sum_integrated_quantities(amrex::Real time)
Definition: ERF_WriteScalarProfiles.cpp:14
amrex::Vector< std::string > datalogname
Definition: ERF.H:1143
void initHSE()
Initialize HSE.
Definition: ERF_init1d.cpp:240
static amrex::Real column_loc_x
Definition: ERF.H:889
amrex::Vector< std::unique_ptr< amrex::MultiFab > > ax
Definition: ERF.H:683
amrex::Vector< std::unique_ptr< amrex::MultiFab > > z_phys_nd
Definition: ERF.H:679
void MakeDiagnosticAverage(amrex::Vector< amrex::Real > &h_havg, amrex::MultiFab &S, int n)
Definition: ERF.cpp:1565
amrex::Vector< amrex::Real > h_havg_temperature
Definition: ERF.H:934
amrex::Vector< std::unique_ptr< std::fstream > > sampleptlog
Definition: ERF.H:1145
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)
Definition: ERF_make_new_arrays.cpp:26
amrex::Vector< std::unique_ptr< amrex::MultiFab > > detJ_cc_src
Definition: ERF.H:688
amrex::Gpu::DeviceVector< amrex::Real > d_havg_pressure
Definition: ERF.H:941
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SmnSmn_lev
Definition: ERF.H:667
const amrex::Vector< std::string > derived_names
Definition: ERF.H:799
amrex::Real start_time
Definition: ERF.H:751
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_diss)
Definition: ERF_Write1DProfiles_stag.cpp:489
amrex::Vector< std::unique_ptr< amrex::MultiFab > > ay_src
Definition: ERF.H:690
void sample_points(int lev, amrex::Real time, amrex::IntVect cell, amrex::MultiFab &mf)
Definition: ERF_WriteScalarProfiles.cpp:181
AMREX_FORCE_INLINE std::ostream & DataLog(int i)
Definition: ERF.H:1011
void writeJobInfo(const std::string &dir) const
Definition: writeJobInfo.cpp:9
amrex::Vector< int > nsubsteps
Definition: ERF.H:587
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > yflux_imask
Definition: ERF.H:731
amrex::Vector< amrex::MultiFab > rW_new
Definition: ERF.H:628
amrex::Vector< std::unique_ptr< amrex::MultiFab > > az_new
Definition: ERF.H:697
std::unique_ptr< WriteBndryPlanes > m_w2d
Definition: ERF.H:947
std::string plot_file_1
Definition: ERF.H:772
AMREX_FORCE_INLINE std::ostream & SampleLineLog(int i)
Definition: ERF.H:1039
amrex::Vector< amrex::Vector< amrex::MultiFab * > > lsm_flux
Definition: ERF.H:642
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Tau32_lev
Definition: ERF.H:665
std::string SamplePointLogName(int i) const noexcept
The filename of the ith sampleptlog file.
Definition: ERF.H:1157
void refinement_criteria_setup()
Definition: ERF_Tagging.cpp:107
static int bndry_output_planes_interval
Definition: ERF.H:895
void RemakeLevel(int lev, amrex::Real time, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm) override
Definition: ERF_make_new_level.cpp:366
static void GotoNextLine(std::istream &is)
Definition: Checkpoint.cpp:13
void MakeNewLevelFromScratch(int lev, amrex::Real time, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm) override
Definition: ERF_make_new_level.cpp:27
void initSponge()
Initialize sponge profiles.
Definition: ERF_init1d.cpp:122
int real_width
Definition: ERF.H:872
void MakeNewLevelFromCoarse(int lev, amrex::Real time, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm) override
Definition: ERF_make_new_level.cpp:270
amrex::Vector< std::unique_ptr< amrex::FabFactory< amrex::FArrayBox > > > m_factory
Definition: ERF.H:1162
amrex::Vector< std::unique_ptr< amrex::MultiFab > > ax_src
Definition: ERF.H:689
void input_sponge(int lev)
Definition: ERF_input_sponge.cpp:20
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > d_u_geos
Definition: ERF.H:916
void Define_ERFFillPatchers(int lev)
Definition: ERF.cpp:1746
AMREX_FORCE_INLINE int NumDataLogs() noexcept
Definition: ERF.H:1018
amrex::Vector< amrex::MultiFab > rW_old
Definition: ERF.H:627
void advance_lsm(int lev, amrex::MultiFab &, const amrex::Real &dt_advance)
Definition: ERF_advance_lsm.cpp:5
void FillCoarsePatch(int lev, amrex::Real time)
Definition: ERF_FillPatch.cpp:427
void ClearLevel(int lev) override
Definition: ERF_make_new_level.cpp:486
void derive_diag_profiles(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_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)
Definition: ERF_Write1DProfiles.cpp:184
static amrex::Vector< amrex::AMRErrorTag > ref_tags
Definition: ERF.H:954
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > d_w_subsid
Definition: ERF.H:913
amrex::Vector< ERFFillPatcher > FPr_w
Definition: ERF.H:659
int real_set_width
Definition: ERF.H:873
amrex::Vector< std::unique_ptr< amrex::MultiFab > > SFS_hfx2_lev
Definition: ERF.H:674
static amrex::Real fixed_dt
Definition: ERF.H:763
amrex::Vector< amrex::Real > thrust_coeff
Definition: ERF.H:637
amrex::Vector< amrex::Vector< amrex::MultiFab * > > lsm_data
Definition: ERF.H:641
void WriteCheckpointFile() const
Definition: Checkpoint.cpp:23
static int output_1d_column
Definition: ERF.H:886
amrex::Vector< std::unique_ptr< amrex::MultiFab > > az_src
Definition: ERF.H:691
static int fixed_mri_dt_ratio
Definition: ERF.H:765
int m_plot_int_2
Definition: ERF.H:775
amrex::Vector< amrex::Real > dt
Definition: ERF.H:592
static amrex::Real init_shrink
Definition: ERF.H:759
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:396
amrex::Vector< amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > > d_rayleigh_ptrs
Definition: ERF.H:928
void InitData()
Definition: ERF.cpp:535
void advance_microphysics(int lev, amrex::MultiFab &cons_in, const amrex::Real &dt_advance, const int &iteration, const amrex::Real &time)
Definition: ERF_advance_microphysics.cpp:5
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Tau12_lev
Definition: ERF.H:663
int cf_width
Definition: ERF.H:654
amrex::Vector< amrex::Vector< amrex::Vector< amrex::Real > > > h_rayleigh_ptrs
Definition: ERF.H:922
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > zflux_imask
Definition: ERF.H:732
int plot_file_on_restart
Definition: ERF.H:744
void Construct_ERFFillPatchers(int lev)
Definition: ERF.cpp:1720
void post_update(amrex::MultiFab &state_mf, amrex::Real time, const amrex::Geometry &geom)
amrex::Vector< int > num_boxes_at_level
Definition: ERF.H:582
void erf_enforce_hse(int lev, amrex::MultiFab &dens, amrex::MultiFab &pres, amrex::MultiFab &pi, std::unique_ptr< amrex::MultiFab > &z_cc)
Definition: ERF_init1d.cpp:259
amrex::FabFactory< amrex::FArrayBox > const & Factory(int lev) const noexcept
Definition: ERF.H:1165
static void print_error(MPI_Comm, const std::string &msg)
Definition: console_io.cpp:43
static int ng_dens_hse
Definition: ERF.H:902
std::unique_ptr< ReadBndryPlanes > m_r2d
Definition: ERF.H:948
amrex::Vector< std::unique_ptr< amrex::MultiFab > > ay
Definition: ERF.H:684
amrex::Vector< std::unique_ptr< amrex::MultiFab > > ax_new
Definition: ERF.H:695
amrex::Vector< amrex::Vector< amrex::MultiFab * > > qmoist
Definition: ERF.H:631
static amrex::Real getCPUTime()
Definition: ERF.H:1081
LandSurface lsm
Definition: ERF.H:640
static amrex::Real change_max
Definition: ERF.H:760
void AverageDownTo(int crse_lev, int scomp, int ncomp)
Definition: ERF.cpp:1625
void setRecordSampleLineInfo(int i, int lev, amrex::IntVect &cell, const std::string &filename)
Definition: ERF.H:1125
void setSpongeRefFromSounding(bool restarting)
Set sponge mean profiles from input sounding.
Definition: ERF_init1d.cpp:152
amrex::Vector< std::unique_ptr< amrex::MultiFab > > detJ_cc_new
Definition: ERF.H:694
amrex::Vector< std::unique_ptr< amrex::MultiFab > > mapfac_v
Definition: ERF.H:703
amrex::Real nominal_power
Definition: ERF.H:636
amrex::Array< std::string, 2 *AMREX_SPACEDIM > domain_bc_type
Definition: ERF.H:718
void init_uniform(int lev)
Definition: ERF_init_uniform.cpp:17
static AMREX_FORCE_INLINE int ComputeGhostCells(const AdvChoice &advChoice, bool use_num_diff)
Definition: ERF.H:966
static void writeBuildInfo(std::ostream &os)
Definition: writeJobInfo.cpp:137
amrex::GpuArray< ERF_BC, AMREX_SPACEDIM *2 > phys_bc_type
Definition: ERF.H:727
std::string check_file
Definition: ERF.H:786
static std::string plotfile_type
Definition: ERF.H:855
amrex::Vector< amrex::IntVect > samplepoint
Definition: ERF.H:1147
amrex::Vector< amrex::Real > h_havg_qv
Definition: ERF.H:936
amrex::Real volWgtSumMF(int lev, const amrex::MultiFab &mf, int comp, const amrex::MultiFab &mapfac, bool local, bool finemask)
Definition: ERF_WriteScalarProfiles.cpp:310
static void print_usage(MPI_Comm, std::ostream &)
Definition: console_io.cpp:26
amrex::Vector< amrex::MultiFab > rV_old
Definition: ERF.H:625
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Tau11_lev
Definition: ERF.H:662
amrex::Vector< int > istep
Definition: ERF.H:586
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > xflux_imask
Definition: ERF.H:730
void derive_upwp(amrex::Vector< amrex::Real > &h_havg)
void ReadCheckpointFile()
Definition: Checkpoint.cpp:265
bool writeNow(const amrex::Real cur_time, const amrex::Real dt, const int nstep, const int plot_int, const amrex::Real plot_per)
Definition: ERF.cpp:2013
amrex::Vector< amrex::Vector< amrex::MultiFab > > vars_old
Definition: ERF.H:599
amrex::MultiFab & build_fine_mask(int lev)
Definition: ERF_WriteScalarProfiles.cpp:359
static std::string init_type
Definition: ERF.H:858
AMREX_FORCE_INLINE std::ostream & SamplePointLog(int i)
Definition: ERF.H:1025
amrex::Vector< amrex::Real > power
Definition: ERF.H:637
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::Geometry fine_geom, amrex::Real dt, amrex::Real time)
Definition: ERF_advance_dycore.cpp:38
void setRecordSamplePointInfo(int i, int lev, amrex::IntVect &cell, const std::string &filename)
Definition: ERF.H:1108
static int column_interval
Definition: ERF.H:887
static void print_summary(std::ostream &)
void FillPatchMoistVars(int lev, amrex::MultiFab &mf)
Definition: ERF_FillPatch.cpp:190
amrex::Vector< std::unique_ptr< amrex::MultiFab > > Tau22_lev
Definition: ERF.H:662
void sample_lines(int lev, amrex::Real time, amrex::IntVect cell, amrex::MultiFab &mf)
Definition: ERF_WriteScalarProfiles.cpp:219
void initializeMicrophysics(const int &)
Definition: ERF.cpp:1072
bool plot_lsm
Definition: ERF.H:779
const amrex::Vector< std::string > cons_names
Definition: ERF.H:794
amrex::Real thrust_coeff_standing
Definition: ERF.H:636
void timeStep(int lev, amrex::Real time, int iteration)
Definition: ERF_TimeStep.cpp:16
amrex::Real m_plot_per_2
Definition: ERF.H:777
Definition: LandSurface.H:10
Definition: MultiBlockContainer.H:8
Definition: Radiation.H:36
@ FaceConserativeLinear
Definition: ERF.H:77
@ CellConservativeQuartic
Definition: ERF.H:75
@ CellBilinear
Definition: ERF.H:72
@ FaceLinear
Definition: ERF.H:76
@ PCInterp
Definition: ERF.H:69
@ NodeBilinear
Definition: ERF.H:70
@ CellConservativeLinear
Definition: ERF.H:71
@ CellQuadratic
Definition: ERF.H:73
@ CellConservativeProtected
Definition: ERF.H:74
@ pres
Definition: Kessler.H:33
@ T
Definition: IndexDefines.H:67
Definition: console_io.cpp:12
Definition: AdvStruct.H:19
AdvType moistscal_horiz_adv_type
Definition: AdvStruct.H:287
AdvType dycore_vert_adv_type
Definition: AdvStruct.H:284
AdvType moistscal_vert_adv_type
Definition: AdvStruct.H:288
AdvType dryscal_horiz_adv_type
Definition: AdvStruct.H:285
AdvType dycore_horiz_adv_type
Definition: AdvStruct.H:283
AdvType dryscal_vert_adv_type
Definition: AdvStruct.H:286
Definition: DataStruct.H:63