ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
|
#include <ERF.H>
Public Member Functions | |
ERF () | |
~ERF () override | |
void | ERF_shared () |
ERF (ERF &&) noexcept=delete | |
ERF & | operator= (ERF &&other) noexcept=delete |
ERF (const ERF &other)=delete | |
ERF & | operator= (const ERF &other)=delete |
void | Evolve () |
void | ErrorEst (int lev, amrex::TagBoxArray &tags, amrex::Real time, int ngrow) override |
void | InitData () |
void | InitData_pre () |
void | InitData_post () |
void | compute_divergence (int lev, amrex::MultiFab &rhs, amrex::Vector< amrex::MultiFab > &mom_mf, amrex::Geometry const &geom_at_lev) |
void | project_velocities (int lev, amrex::Real dt, amrex::Vector< amrex::MultiFab > &vars, amrex::MultiFab &p) |
void | project_velocities_tb (int lev, amrex::Real dt, amrex::Vector< amrex::MultiFab > &vars, amrex::MultiFab &p) |
void | solve_with_gmres (int lev, amrex::Vector< amrex::MultiFab > &rhs, amrex::Vector< amrex::MultiFab > &p, amrex::Vector< amrex::Array< amrex::MultiFab, AMREX_SPACEDIM >> &fluxes) |
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) |
amrex::Array< amrex::LinOpBCType, AMREX_SPACEDIM > | get_projection_bc (amrex::Orientation::Side side) const noexcept |
bool | projection_has_dirichlet (amrex::Array< amrex::LinOpBCType, AMREX_SPACEDIM > bcs) const |
void | init_only (int lev, amrex::Real time) |
void | restart () |
bool | writeNow (const amrex::Real cur_time, const amrex::Real dt, const int nstep, const int plot_int, const amrex::Real plot_per) |
void | post_timestep (int nstep, amrex::Real time, amrex::Real dt_lev) |
void | sum_integrated_quantities (amrex::Real time) |
void | write_1D_profiles (amrex::Real time) |
void | write_1D_profiles_stag (amrex::Real time) |
amrex::Real | cloud_fraction (amrex::Real time) |
void | FillBdyCCVels (amrex::Vector< amrex::MultiFab > &mf_cc_vel) |
void | sample_points (int lev, amrex::Real time, amrex::IntVect cell, amrex::MultiFab &mf) |
void | sample_lines (int lev, amrex::Real time, amrex::IntVect cell, amrex::MultiFab &mf) |
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) |
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) |
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) |
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) |
amrex::Real | volWgtSumMF (int lev, const amrex::MultiFab &mf, int comp, const amrex::MultiFab &mapfac, bool local, bool finemask) |
void | MakeNewLevelFromCoarse (int lev, amrex::Real time, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm) override |
void | RemakeLevel (int lev, amrex::Real time, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm) override |
void | ClearLevel (int lev) override |
void | MakeNewLevelFromScratch (int lev, amrex::Real time, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm) override |
amrex::Real | estTimeStep (int lev, long &dt_fast_ratio) const |
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) |
void | advance_microphysics (int lev, amrex::MultiFab &cons_in, const amrex::Real &dt_advance, const int &iteration, const amrex::Real &time) |
void | advance_lsm (int lev, amrex::MultiFab &, const amrex::Real &dt_advance) |
amrex::MultiFab & | build_fine_mask (int lev) |
void | MakeHorizontalAverages () |
void | MakeDiagnosticAverage (amrex::Vector< amrex::Real > &h_havg, amrex::MultiFab &S, int n) |
void | derive_upwp (amrex::Vector< amrex::Real > &h_havg) |
void | WritePlotFile (int which, PlotFileType plotfile_type, amrex::Vector< std::string > plot_var_names) |
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 |
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 |
void | erf_enforce_hse (int lev, amrex::MultiFab &dens, amrex::MultiFab &pres, amrex::MultiFab &pi, amrex::MultiFab &th, std::unique_ptr< amrex::MultiFab > &z_cc) |
void | init_from_input_sounding (int lev) |
void | input_sponge (int lev) |
void | init_from_hse (int lev) |
void | init_immersed_body (int lev, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm) |
void | fill_from_bndryregs (const amrex::Vector< amrex::MultiFab * > &mfs, amrex::Real time) |
void | AverageDownTo (int crse_lev, int scomp, int ncomp) |
void | WriteCheckpointFile () const |
void | ReadCheckpointFile () |
void | ReadCheckpointFileMOST () |
void | writeJobInfo (const std::string &dir) const |
Static Public Member Functions | |
static bool | is_it_time_for_action (int nstep, amrex::Real time, amrex::Real dt, int action_interval, amrex::Real action_per) |
static void | writeBuildInfo (std::ostream &os) |
static void | print_banner (MPI_Comm, std::ostream &) |
static void | print_usage (MPI_Comm, std::ostream &) |
static void | print_error (MPI_Comm, const std::string &msg) |
static void | print_summary (std::ostream &) |
static void | print_tpls (std::ostream &) |
Public Attributes | |
std::string | pp_prefix {"erf"} |
Private Member Functions | |
void | ReadParameters () |
void | ParameterSanityChecks () |
void | AverageDown () |
void | update_diffusive_arrays (int lev, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm) |
void | init_zphys (int lev, amrex::Real time) |
void | remake_zphys (int lev, std::unique_ptr< amrex::MultiFab > &temp_zphys_nd) |
void | update_terrain_arrays (int lev) |
void | Construct_ERFFillPatchers (int lev) |
void | Define_ERFFillPatchers (int lev) |
void | init1DArrays () |
void | init_bcs () |
void | init_custom (int lev) |
void | init_uniform (int lev) |
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) |
void | turbPert_update (const int lev, const amrex::Real dt) |
void | turbPert_amplitude (const int lev) |
void | initialize_integrator (int lev, amrex::MultiFab &cons_mf, amrex::MultiFab &vel_mf) |
void | make_physbcs (int lev) |
void | initializeMicrophysics (const int &) |
void | FillPatch (int lev, amrex::Real time, const amrex::Vector< amrex::MultiFab * > &mfs_vel, bool cons_only=false) |
void | FillPatch (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) |
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) |
void | FillCoarsePatch (int lev, amrex::Real time) |
void | timeStep (int lev, amrex::Real time, int iteration) |
void | Advance (int lev, amrex::Real time, amrex::Real dt_lev, int iteration, int ncycle) |
void | initHSE () |
Initialize HSE. More... | |
void | initHSE (int lev) |
void | initRayleigh () |
Initialize Rayleigh damping profiles. More... | |
void | initSponge () |
Initialize sponge profiles. More... | |
void | setRayleighRefFromSounding (bool restarting) |
Set Rayleigh mean profiles from input sounding. More... | |
void | setSpongeRefFromSounding (bool restarting) |
Set sponge mean profiles from input sounding. More... | |
void | ComputeDt (int step=-1) |
std::string | PlotFileName (int lev) const |
void | setPlotVariables (const std::string &pp_plot_var_names, amrex::Vector< std::string > &plot_var_names) |
void | appendPlotVariables (const std::string &pp_plot_var_names, amrex::Vector< std::string > &plot_var_names) |
void | init_Dirichlet_bc_data (const std::string input_file) |
void | InitializeFromFile () |
void | InitializeLevelFromData (int lev, const amrex::MultiFab &initial_data) |
void | post_update (amrex::MultiFab &state_mf, amrex::Real time, const amrex::Geometry &geom) |
void | fill_rhs (amrex::MultiFab &rhs_mf, const amrex::MultiFab &state_mf, amrex::Real time, const amrex::Geometry &geom) |
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) |
void | refinement_criteria_setup () |
AMREX_FORCE_INLINE amrex::YAFluxRegister * | getAdvFluxReg (int lev) |
AMREX_FORCE_INLINE std::ostream & | DataLog (int i) |
AMREX_FORCE_INLINE int | NumDataLogs () noexcept |
AMREX_FORCE_INLINE std::ostream & | SamplePointLog (int i) |
AMREX_FORCE_INLINE int | NumSamplePointLogs () noexcept |
AMREX_FORCE_INLINE std::ostream & | SampleLineLog (int i) |
AMREX_FORCE_INLINE int | NumSampleLineLogs () noexcept |
amrex::IntVect & | SamplePoint (int i) |
AMREX_FORCE_INLINE int | NumSamplePoints () noexcept |
amrex::IntVect & | SampleLine (int i) |
AMREX_FORCE_INLINE int | NumSampleLines () noexcept |
void | setRecordDataInfo (int i, const std::string &filename) |
void | setRecordSamplePointInfo (int i, int lev, amrex::IntVect &cell, const std::string &filename) |
void | setRecordSampleLineInfo (int i, int lev, amrex::IntVect &cell, const std::string &filename) |
std::string | DataLogName (int i) const noexcept |
The filename of the ith datalog file. More... | |
std::string | SamplePointLogName (int i) const noexcept |
The filename of the ith sampleptlog file. More... | |
std::string | SampleLineLogName (int i) const noexcept |
The filename of the ith samplelinelog file. More... | |
Static Private Member Functions | |
static amrex::Vector< std::string > | PlotFileVarNames (amrex::Vector< std::string > plot_var_names) |
static void | GotoNextLine (std::istream &is) |
static AMREX_FORCE_INLINE int | ComputeGhostCells (const AdvChoice &advChoice, bool use_num_diff) |
static amrex::Real | getCPUTime () |
Private Attributes | |
InputSoundingData | input_sounding_data |
InputSpongeData | input_sponge_data |
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > | xvel_bc_data |
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > | yvel_bc_data |
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > | zvel_bc_data |
std::unique_ptr< ProblemBase > | prob = nullptr |
amrex::Vector< int > | num_boxes_at_level |
amrex::Vector< int > | num_files_at_level |
amrex::Vector< amrex::Vector< amrex::Box > > | boxes_at_level |
amrex::Vector< int > | istep |
amrex::Vector< int > | nsubsteps |
amrex::Vector< amrex::Real > | t_new |
amrex::Vector< amrex::Real > | t_old |
amrex::Vector< amrex::Real > | dt |
amrex::Vector< long > | dt_mri_ratio |
amrex::Vector< amrex::Vector< amrex::MultiFab > > | vars_new |
amrex::Vector< amrex::Vector< amrex::MultiFab > > | vars_old |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | vel_t_avg |
amrex::Vector< amrex::Real > | t_avg_cnt |
amrex::Vector< std::unique_ptr< MRISplitIntegrator< amrex::Vector< amrex::MultiFab > > > > | mri_integrator_mem |
amrex::Vector< amrex::MultiFab > | pp_inc |
amrex::Vector< std::unique_ptr< ERFPhysBCFunct_cons > > | physbcs_cons |
amrex::Vector< std::unique_ptr< ERFPhysBCFunct_u > > | physbcs_u |
amrex::Vector< std::unique_ptr< ERFPhysBCFunct_v > > | physbcs_v |
amrex::Vector< std::unique_ptr< ERFPhysBCFunct_w > > | physbcs_w |
amrex::Vector< std::unique_ptr< ERFPhysBCFunct_base > > | physbcs_base |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | Theta_prim |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | Qv_prim |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | Qr_prim |
amrex::Vector< amrex::MultiFab > | rU_old |
amrex::Vector< amrex::MultiFab > | rU_new |
amrex::Vector< amrex::MultiFab > | rV_old |
amrex::Vector< amrex::MultiFab > | rV_new |
amrex::Vector< amrex::MultiFab > | rW_old |
amrex::Vector< amrex::MultiFab > | rW_new |
amrex::Vector< amrex::MultiFab > | zmom_crse_rhs |
std::unique_ptr< Microphysics > | micro |
amrex::Vector< amrex::Vector< amrex::MultiFab * > > | qmoist |
LandSurface | lsm |
amrex::Vector< amrex::Vector< amrex::MultiFab * > > | lsm_data |
amrex::Vector< amrex::Vector< amrex::MultiFab * > > | lsm_flux |
int | cf_width {0} |
int | cf_set_width {0} |
amrex::Vector< ERFFillPatcher > | FPr_c |
amrex::Vector< ERFFillPatcher > | FPr_u |
amrex::Vector< ERFFillPatcher > | FPr_v |
amrex::Vector< ERFFillPatcher > | FPr_w |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | Tau11_lev |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | Tau22_lev |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | Tau33_lev |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | Tau12_lev |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | Tau21_lev |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | Tau13_lev |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | Tau31_lev |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | Tau23_lev |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | Tau32_lev |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | eddyDiffs_lev |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | SmnSmn_lev |
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::MultiFab > > > | sst_lev |
amrex::Vector< amrex::Vector< std::unique_ptr< amrex::iMultiFab > > > | lmask_lev |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | SFS_hfx1_lev |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | SFS_hfx2_lev |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | SFS_hfx3_lev |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | SFS_diss_lev |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | SFS_q1fx1_lev |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | SFS_q1fx2_lev |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | SFS_q1fx3_lev |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | SFS_q2fx3_lev |
amrex::Vector< amrex::Vector< amrex::Real > > | zlevels_stag |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | z_phys_nd |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | z_phys_cc |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | detJ_cc |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | ax |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | ay |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | az |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | z_phys_nd_src |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | detJ_cc_src |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | ax_src |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | ay_src |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | az_src |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | z_phys_nd_new |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | detJ_cc_new |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | ax_new |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | ay_new |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | az_new |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | z_t_rk |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | mapfac_m |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | mapfac_u |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | mapfac_v |
amrex::Vector< amrex::Vector< amrex::Real > > | stretched_dz_h |
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > | stretched_dz_d |
amrex::Vector< amrex::MultiFab > | base_state |
amrex::Vector< amrex::MultiFab > | base_state_new |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | Hwave |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | Lwave |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | Hwave_onegrid |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | Lwave_onegrid |
bool | finished_wave = false |
amrex::Vector< amrex::YAFluxRegister * > | advflux_reg |
amrex::Vector< amrex::BCRec > | domain_bcs_type |
amrex::Gpu::DeviceVector< amrex::BCRec > | domain_bcs_type_d |
amrex::Array< std::string, 2 *AMREX_SPACEDIM > | domain_bc_type |
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > | m_bc_extdir_vals |
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > | m_bc_neumann_vals |
amrex::GpuArray< ERF_BC, AMREX_SPACEDIM *2 > | phys_bc_type |
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > | xflux_imask |
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > | yflux_imask |
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > | zflux_imask |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | thin_xforce |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | thin_yforce |
amrex::Vector< std::unique_ptr< amrex::MultiFab > > | thin_zforce |
int | last_plot_file_step_1 |
int | last_plot_file_step_2 |
int | last_check_file_step |
int | plot_file_on_restart = 1 |
int | max_step = std::numeric_limits<int>::max() |
amrex::Real | start_time = 0.0 |
amrex::Real | stop_time = std::numeric_limits<amrex::Real>::max() |
std::string | restart_chkfile = "" |
amrex::Vector< amrex::Real > | fixed_dt |
amrex::Vector< amrex::Real > | fixed_fast_dt |
int | regrid_int = -1 |
std::string | plot_file_1 {"plt_1_"} |
std::string | plot_file_2 {"plt_2_"} |
bool | m_expand_plotvars_to_unif_rr = false |
int | m_plot_int_1 = -1 |
int | m_plot_int_2 = -1 |
amrex::Real | m_plot_per_1 = -1.0 |
amrex::Real | m_plot_per_2 = -1.0 |
bool | m_plot_face_vels = false |
bool | plot_lsm = false |
int | profile_int = -1 |
bool | destag_profiles = true |
std::string | check_file {"chk"} |
std::string | check_type {"native"} |
std::string | restart_type {"native"} |
int | m_check_int = -1 |
amrex::Real | m_check_per = -1.0 |
amrex::Vector< std::string > | plot_var_names_1 |
amrex::Vector< std::string > | plot_var_names_2 |
const amrex::Vector< std::string > | cons_names |
const amrex::Vector< std::string > | derived_names |
TurbulentPerturbation | turbPert |
int | real_width {0} |
int | real_set_width {0} |
amrex::Vector< amrex::Vector< amrex::Real > > | h_rhotheta_src |
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > | d_rhotheta_src |
amrex::Vector< amrex::Vector< amrex::Real > > | h_rhoqt_src |
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > | d_rhoqt_src |
amrex::Vector< amrex::Vector< amrex::Real > > | h_w_subsid |
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > | d_w_subsid |
amrex::Vector< amrex::Vector< amrex::Real > > | h_u_geos |
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > | d_u_geos |
amrex::Vector< amrex::Vector< amrex::Real > > | h_v_geos |
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > | d_v_geos |
amrex::Vector< amrex::Vector< amrex::Vector< amrex::Real > > > | h_rayleigh_ptrs |
amrex::Vector< amrex::Vector< amrex::Vector< amrex::Real > > > | h_sponge_ptrs |
amrex::Vector< amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > > | d_rayleigh_ptrs |
amrex::Vector< amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > > | d_sponge_ptrs |
amrex::Vector< amrex::Real > | h_havg_density |
amrex::Vector< amrex::Real > | h_havg_temperature |
amrex::Vector< amrex::Real > | h_havg_pressure |
amrex::Vector< amrex::Real > | h_havg_qv |
amrex::Vector< amrex::Real > | h_havg_qc |
amrex::Gpu::DeviceVector< amrex::Real > | d_havg_density |
amrex::Gpu::DeviceVector< amrex::Real > | d_havg_temperature |
amrex::Gpu::DeviceVector< amrex::Real > | d_havg_pressure |
amrex::Gpu::DeviceVector< amrex::Real > | d_havg_qv |
amrex::Gpu::DeviceVector< amrex::Real > | d_havg_qc |
std::unique_ptr< WriteBndryPlanes > | m_w2d = nullptr |
std::unique_ptr< ReadBndryPlanes > | m_r2d = nullptr |
std::unique_ptr< ABLMost > | m_most = nullptr |
amrex::Vector< std::unique_ptr< ForestDrag > > | m_forest |
amrex::MultiFab | fine_mask |
amrex::Vector< amrex::Real > | dz_min |
int | sampler_interval = -1 |
amrex::Real | sampler_per = -1.0 |
std::unique_ptr< SampleData > | data_sampler = nullptr |
amrex::Vector< std::unique_ptr< std::fstream > > | datalog |
amrex::Vector< std::string > | datalogname |
amrex::Vector< std::unique_ptr< std::fstream > > | sampleptlog |
amrex::Vector< std::string > | sampleptlogname |
amrex::Vector< amrex::IntVect > | samplepoint |
amrex::Vector< std::unique_ptr< std::fstream > > | samplelinelog |
amrex::Vector< std::string > | samplelinelogname |
amrex::Vector< amrex::IntVect > | sampleline |
amrex::Vector< std::unique_ptr< amrex::FabFactory< amrex::FArrayBox > > > | m_factory |
Static Private Attributes | |
static amrex::Real | cfl = 0.8 |
static amrex::Real | init_shrink = 1.0 |
static amrex::Real | change_max = 1.1 |
static int | fixed_mri_dt_ratio = 0 |
static SolverChoice | solverChoice |
static int | verbose = 0 |
static int | mg_verbose = 0 |
static bool | use_fft = false |
static int | sum_interval = -1 |
static int | pert_interval = -1 |
static amrex::Real | sum_per = -1.0 |
static PlotFileType | plotfile_type_1 = PlotFileType::None |
static PlotFileType | plotfile_type_2 = PlotFileType::None |
static InitType | init_type |
static StateInterpType | interpolation_type |
static std::string | sponge_type |
static bool | use_real_bcs |
static amrex::Vector< amrex::Vector< std::string > > | nc_init_file = {{""}} |
static std::string | nc_bdy_file |
static bool | init_sounding_ideal = false |
static int | output_1d_column = 0 |
static int | column_interval = -1 |
static amrex::Real | column_per = -1.0 |
static amrex::Real | column_loc_x = 0.0 |
static amrex::Real | column_loc_y = 0.0 |
static std::string | column_file_name = "column_data.nc" |
static int | output_bndry_planes = 0 |
static int | bndry_output_planes_interval = -1 |
static amrex::Real | bndry_output_planes_per = -1.0 |
static amrex::Real | bndry_output_planes_start_time = 0.0 |
static int | input_bndry_planes = 0 |
static int | ng_dens_hse |
static int | ng_pres_hse |
static amrex::Vector< amrex::AMRErrorTag > | ref_tags |
static amrex::Real | startCPUTime = 0.0 |
static amrex::Real | previousCPUTimeUsed = 0.0 |
ERF::ERF | ( | ) |
|
overridedefault |
|
deletenoexcept |
|
delete |
|
private |
Function that advances the solution at one level for a single time step – this does some preliminaries then calls erf_advance
[in] | lev | level of refinement (coarsest level is 0) |
[in] | time | start time for time advance |
[in] | dt_lev | time step for this time advance |
void ERF::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 | ||
) |
Function that advances the solution at one level for a single time step – this sets up the multirate time integrator and calls the integrator's advance function
[in] | level | level of refinement (coarsest level is 0) |
[in] | state_old | old-time conserved variables |
[in] | state_new | new-time conserved variables |
[in] | xvel_old | old-time x-component of velocity |
[in] | yvel_old | old-time y-component of velocity |
[in] | zvel_old | old-time z-component of velocity |
[in] | xvel_new | new-time x-component of velocity |
[in] | yvel_new | new-time y-component of velocity |
[in] | zvel_new | new-time z-component of velocity |
[in] | cc_src | source term for conserved variables |
[in] | xmom_src | source term for x-momenta |
[in] | ymom_src | source term for y-momenta |
[in] | zmom_src | source term for z-momenta |
[in] | fine_geom | container for geometry information at current level |
[in] | dt_advance | time step for this time advance |
[in] | old_time | old time for this time advance |
void ERF::advance_lsm | ( | int | lev, |
amrex::MultiFab & | , | ||
const amrex::Real & | dt_advance | ||
) |
void ERF::advance_microphysics | ( | int | lev, |
amrex::MultiFab & | cons_in, | ||
const amrex::Real & | dt_advance, | ||
const int & | iteration, | ||
const amrex::Real & | time | ||
) |
|
private |
|
private |
void ERF::AverageDownTo | ( | int | crse_lev, |
int | scomp, | ||
int | ncomp | ||
) |
MultiFab & ERF::build_fine_mask | ( | int | level | ) |
Helper function for constructing a fine mask, that is, a MultiFab masking coarser data at a lower level by zeroing out covered cells in the fine mask MultiFab we compute.
level | Fine level index which masks underlying coarser data |
|
override |
Real ERF::cloud_fraction | ( | amrex::Real | time | ) |
void ERF::compute_divergence | ( | int | lev, |
amrex::MultiFab & | rhs, | ||
amrex::Vector< amrex::MultiFab > & | mom_mf, | ||
amrex::Geometry const & | geom_at_lev | ||
) |
Project the single-level velocity field to enforce incompressibility Note that the level may or may not be level 0.
|
private |
Function that calls estTimeStep for each level
|
inlinestaticprivate |
|
private |
|
inlineprivate |
|
inlineprivatenoexcept |
The filename of the ith datalog file.
|
private |
void ERF::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 | ||
) |
Computes the profiles for diagnostic quantities.
h_avg_u | Profile for x-velocity on Host |
h_avg_v | Profile for y-velocity on Host |
h_avg_w | Profile for z-velocity on Host |
h_avg_rho | Profile for density on Host |
h_avg_th | Profile for potential temperature on Host |
h_avg_ksgs | Profile for Kinetic Energy on Host |
h_avg_uu | Profile for x-velocity squared on Host |
h_avg_uv | Profile for x-velocity * y-velocity on Host |
h_avg_uw | Profile for x-velocity * z-velocity on Host |
h_avg_vv | Profile for y-velocity squared on Host |
h_avg_vw | Profile for y-velocity * z-velocity on Host |
h_avg_ww | Profile for z-velocity squared on Host |
h_avg_uth | Profile for x-velocity * potential temperature on Host |
h_avg_uiuiu | Profile for u_i*u_i*u triple product on Host |
h_avg_uiuiv | Profile for u_i*u_i*v triple product on Host |
h_avg_uiuiw | Profile for u_i*u_i*w triple product on Host |
h_avg_p | Profile for pressure perturbation on Host |
h_avg_pu | Profile for pressure perturbation * x-velocity on Host |
h_avg_pv | Profile for pressure perturbation * y-velocity on Host |
h_avg_pw | Profile for pressure perturbation * z-velocity on Host |
void ERF::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 | ||
) |
Computes the profiles for diagnostic quantities at staggered heights.
h_avg_u | Profile for x-velocity on Host |
h_avg_v | Profile for y-velocity on Host |
h_avg_w | Profile for z-velocity on Host |
h_avg_rho | Profile for density on Host |
h_avg_th | Profile for potential temperature on Host |
h_avg_ksgs | Profile for Kinetic Energy on Host |
h_avg_uu | Profile for x-velocity squared on Host |
h_avg_uv | Profile for x-velocity * y-velocity on Host |
h_avg_uw | Profile for x-velocity * z-velocity on Host |
h_avg_vv | Profile for y-velocity squared on Host |
h_avg_vw | Profile for y-velocity * z-velocity on Host |
h_avg_ww | Profile for z-velocity squared on Host |
h_avg_uth | Profile for x-velocity * potential temperature on Host |
h_avg_uiuiu | Profile for u_i*u_i*u triple product on Host |
h_avg_uiuiv | Profile for u_i*u_i*v triple product on Host |
h_avg_uiuiw | Profile for u_i*u_i*w triple product on Host |
h_avg_p | Profile for pressure perturbation on Host |
h_avg_pu | Profile for pressure perturbation * x-velocity on Host |
h_avg_pv | Profile for pressure perturbation * y-velocity on Host |
h_avg_pw | Profile for pressure perturbation * z-velocity on Host |
void ERF::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 | ||
) |
void ERF::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 | ||
) |
void ERF::derive_upwp | ( | amrex::Vector< amrex::Real > & | h_havg | ) |
void ERF::erf_enforce_hse | ( | int | lev, |
amrex::MultiFab & | dens, | ||
amrex::MultiFab & | pres, | ||
amrex::MultiFab & | pi, | ||
amrex::MultiFab & | th, | ||
std::unique_ptr< amrex::MultiFab > & | z_cc | ||
) |
Enforces hydrostatic equilibrium when using terrain.
[in] | lev | Integer specifying the current level |
[out] | dens | MultiFab storing base state density |
[out] | pres | MultiFab storing base state pressure |
[out] | pi | MultiFab storing base state Exner function |
[in] | z_cc | Pointer to MultiFab storing cell centered z-coordinates |
void ERF::ERF_shared | ( | ) |
|
override |
Function to tag cells for refinement – this overrides the pure virtual function in AmrCore
[in] | levc | level of refinement at which we tag cells (0 is coarsest level) |
[out] | tags | array of tagged cells |
[in] | time | current time |
Real ERF::estTimeStep | ( | int | level, |
long & | dt_fast_ratio | ||
) | const |
Function that calls estTimeStep for each level
[in] | level | level of refinement (coarsest level i 0) |
[out] | dt_fast_ratio | ratio of slow to fast time step |
void ERF::Evolve | ( | ) |
Referenced by main().
void ERF::fill_from_bndryregs | ( | const amrex::Vector< amrex::MultiFab * > & | mfs, |
amrex::Real | time | ||
) |
|
private |
void ERF::FillBdyCCVels | ( | amrex::Vector< amrex::MultiFab > & | mf_cc_vel | ) |
|
private |
|
private |
|
private |
|
private |
|
noexcept |
|
inlineprivate |
|
inlinestaticprivate |
|
staticprivate |
|
private |
|
private |
Initializes data structures in the ERF class that specify which boundary conditions we are implementing on each face of the domain.
This function also maps the selected boundary condition types (e.g. Outflow, Inflow, Periodic, Dirichlet, ...) to the specific implementation needed for each variable.
Stores this information in both host and device vectors so it is available for GPU kernels.