|
ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
|
#include <ERF_SLM.H>


Public Member Functions | |
| SLM () | |
| virtual | ~SLM ()=default |
| void | Define (SolverChoice &sc) override |
| void | Init (const int &, const amrex::MultiFab &cons_in, const amrex::MultiFab &u_in, const amrex::MultiFab &v_in, const amrex::Geometry &geom, const amrex::Geometry &geom0, amrex::Vector< amrex::BCRec > &domain_bcs_type, amrex::IntVect &refRatio, const amrex::Real &dt, std::unique_ptr< amrex::MultiFab > &z_phys_nd_in, amrex::Vector< amrex::Vector< std::string >> &nc_init_file) override |
| void | Lsm_Regrid_Level (const int &lev, const amrex::MultiFab &cons_in, const amrex::MultiFab &u_in, const amrex::MultiFab &v_in, const amrex::Geometry &geom, const amrex::Geometry &geom0, amrex::Vector< amrex::BCRec > &domain_bcs_type, amrex::IntVect &refRatio, const amrex::Real &dt, std::unique_ptr< amrex::MultiFab > &z_phys_nd_in, amrex::Vector< amrex::Vector< std::string >> &nc_init_file, const amrex::Geometry &source_geom, const amrex::Geometry &source_lsm_geom, const amrex::IntVect &source_ref_ratio, const bool has_source) override |
| void | Advance (const double &dt) override |
| void | Advance (const amrex::Real &dt, const amrex::Real &t_new, const amrex::Real &t_start) override |
| void | AdvanceSLM () |
| amrex::MultiFab * | Lsm_Data_Ptr (const int &varIdx) override |
| amrex::MultiFab * | Lsm_Flux_Ptr (const int &varIdx) override |
| amrex::Geometry | Lsm_Geom () override |
| amrex::Geometry | Lsm_Atmos_Geom () override |
| void | Lsm_Set_Source_Data_Ptr (const int &varIdx, amrex::MultiFab *source_data_ptr) override |
| void | Lsm_Set_Source_Flux_Ptr (const int &varIdx, amrex::MultiFab *source_flux_ptr) override |
| int | Lsm_Unmapped_Size () override |
| amrex::MultiFab * | Lsm_Unmapped_Ptr (const int &varIdx) override |
| void | Lsm_Set_Source_Unmapped_Ptr (const int &varIdx, amrex::MultiFab *source_data_ptr) override |
| void | Lsm_Interpolate_From_Source (const amrex::Geometry &source_geom, const amrex::Geometry &source_lsm_geom, const amrex::IntVect &ref_ratio, LSMTransferMode mode) override |
| int | Lsm_Data_Size () override |
| int | Lsm_Flux_Size () override |
| std::string | Lsm_DataName (const int &varIdx) override |
| int | Lsm_DataIndex (const std::string &varname) override |
| std::string | Lsm_FluxName (const int &varIdx) override |
| int | Lsm_FluxIndex (const std::string &varname) override |
| std::unordered_map< std::string, std::string > & | Lsm_WRFInputNames () override |
| void | Copy_State_to_Lsm (const amrex::MultiFab &cons_in, const amrex::MultiFab &u_in, const amrex::MultiFab &v_in) override |
| void | Copy_Lsm_to_State (amrex::MultiFab &cons_in) override |
| void | Update_Lsm_Vars (amrex::MultiFab &cons_in, amrex::MultiFab &u_in, amrex::MultiFab &v_in) override |
| bool | Get_Update_Status () override |
| void | Update_State_Vars (amrex::MultiFab &cons_in) override |
| void | set_precip_input (const amrex::MultiFab *precip_in) override |
| void | set_terrain_inputs (const amrex::Vector< std::unique_ptr< amrex::MultiFab >> &sst_in, const amrex::Vector< std::unique_ptr< amrex::iMultiFab >> &lmask_in) override |
| int | Lsm_Type () override |
| void | writeSLM_Data (const PlotFileType plotfile_type, const amrex::Real cur_time, const std::string plot_prefix, const int level_step, const int lev, const int finest_lev, amrex::MultiFab &fab, amrex::Geometry &geom, amrex::Vector< std::string > &varnames) |
| void | init_from_inputs () |
| void | slm_init () |
| void | init_layer_depths () |
| void | init_soil_vars () |
| void | init_landtype () |
| void | init_soil_tw () |
| void | init_slm_vars () |
| void | init_wrfinput_vars () |
| void | initialize_surface_outputs () |
| void | rebuild_restart_fields () |
| SLMParameterTable | ReadParameterFile (const std::string &filename, amrex::Vector< std::string > &veg_categories, amrex::Vector< std::string > &soil_categories) |
| void | validate_parameter_tables () |
| void | init_from_params () |
| void | load_builtin_radiation_parameters () |
| void | UpdateLAI (const amrex::MFIter &mfi) |
| void | UpdateLAIParameters (const amrex::MFIter &mfi) |
| void | radiation_noahmp (const amrex::MFIter &mfi) |
| void | albedo_noahmp (const amrex::MFIter &mfi, int i, int j, amrex::Real dt, amrex::Real cosz, amrex::Real snowh, amrex::Real fsno, amrex::Real fwet, amrex::Real sneqvo, amrex::Real sneqv, amrex::Real qsnow, amrex::Real tg, amrex::Real tv, amrex::Real elai, amrex::Real esai, const amrex::Real *smc, int nsoil, amrex::Real fveg, amrex::Real &albold, amrex::Real &tauss, amrex::Real *albgrd, amrex::Real *albgri, amrex::Real *albd, amrex::Real *albi, amrex::Real *fabd, amrex::Real *fabi, amrex::Real *ftdd, amrex::Real *ftid, amrex::Real *ftii, amrex::Real &fsun, amrex::Real *frevd, amrex::Real *frevi, amrex::Real *fregd, amrex::Real *fregi, amrex::Real &bgap, amrex::Real &wgap, amrex::Real *albsnd, amrex::Real *albsni) |
| void | transfer_coeff (const amrex::MFIter &mfi) |
| void | resistances (const amrex::MFIter &mfi) |
| void | fluxes_canopy (const amrex::MFIter &mfi) |
| void | solve_ground_skin_temperature (const amrex::MFIter &mfi) |
| void | soil_water (const amrex::MFIter &mfi) |
| void | soil_temperature (const amrex::MFIter &mfi) |
| void | soil_nudging (const amrex::MFIter &mfi3d) |
| void | set_dt (const amrex::Real &dt) |
| const amrex::Vector< const amrex::MultiFab * > & | export_to_RRTMGP () |
| std::unordered_map< std::string, std::string > & | get_rad_output_map () |
| void | WriteCheckpoint (const int &lev, const std::string &checkpointname) const override |
| void | ReadCheckpoint (const int &lev, const std::string &checkpointname) override |
| void | initialize_zrefxy () |
| void | initialize_processed_state (const bool preserve_checkpoint_fields=false) |
| virtual void | Init (const int &, const amrex::MultiFab &, const amrex::Geometry &, const amrex::Geometry &, amrex::Vector< amrex::BCRec > &, amrex::IntVect &, const amrex::Real &, amrex::Vector< amrex::Vector< std::string >> &) |
| virtual void | Init (const int &lev, const amrex::MultiFab &cons_in, const amrex::MultiFab &, const amrex::MultiFab &, const amrex::Geometry &geom, const amrex::Geometry &geom0, amrex::Vector< amrex::BCRec > &domain_bcs_type, amrex::IntVect &refRatio, const amrex::Real &dt_advance, std::unique_ptr< amrex::MultiFab > &, amrex::Vector< amrex::Vector< std::string >> &nc_init_file) |
Public Member Functions inherited from NullSurf | |
| NullSurf () | |
| virtual | ~NullSurf ()=default |
| virtual void | Init (const int &, const amrex::MultiFab &, const amrex::Geometry &, const amrex::Geometry &, amrex::Vector< amrex::BCRec > &, amrex::IntVect &, const amrex::Real &, amrex::Vector< amrex::Vector< std::string >> &) |
| virtual void | Advance_With_State (const int &, amrex::MultiFab &, amrex::MultiFab &, amrex::MultiFab &, amrex::MultiFab *, amrex::MultiFab *, const SurfacePrecipAccumulationSources &, const amrex::Real &, const amrex::Real &, const int &, const bool, amrex::MultiFab *) |
| virtual void | Plot_Landfile (const int &) |
| virtual void | Update_Micro_Vars (amrex::MultiFab &) |
| virtual void | Copy_State_to_Micro (const amrex::MultiFab &) |
| virtual void | Copy_Micro_to_State (amrex::MultiFab &) |
| virtual void | Lsm_Set_Lev0_Data_Ptr (const int &, amrex::MultiFab *) |
| virtual void | Lsm_Set_Lev0_Flux_Ptr (const int &, amrex::MultiFab *) |
| virtual bool | Runs_Own_Land_Driver () const |
| virtual int | Get_LSM_Step () const |
| virtual void | Set_LSM_Step (int) |
| virtual void | Write_Lsm_Restart (const std::string &) const |
| virtual void | Read_Lsm_Restart (const std::string &) |
Static Public Member Functions | |
| AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE void | surrad_noahmp (amrex::Real mpe, amrex::Real fsun, amrex::Real fsha, amrex::Real elai, amrex::Real vai, amrex::Real laisun, amrex::Real laisha, const amrex::Real *solad, const amrex::Real *solai, const amrex::Real *fabd, const amrex::Real *fabi, const amrex::Real *ftdd, const amrex::Real *ftid, const amrex::Real *ftii, const amrex::Real *albgrd, const amrex::Real *albgri, const amrex::Real *albd, const amrex::Real *albi, const amrex::Real *frevd, const amrex::Real *frevi, const amrex::Real *fregd, const amrex::Real *fregi, amrex::Real &parsun, amrex::Real &parsha, amrex::Real &sav, amrex::Real &sag, amrex::Real &fsa, amrex::Real &fsr, amrex::Real &fsrv, amrex::Real &fsrg) |
| AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE void | snow_age_noahmp (amrex::Real dt, amrex::Real tg, amrex::Real sneqvo, amrex::Real sneqv, amrex::Real tau0, amrex::Real grain_growth, amrex::Real extra_growth, amrex::Real dirt_soot, amrex::Real swemx, amrex::Real &tauss, amrex::Real &fage) |
| AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE void | snowalb_bats_noahmp (int nband, amrex::Real fsno, amrex::Real cosz, amrex::Real fage, amrex::Real bats_cosz, amrex::Real bats_vis_new, amrex::Real bats_nir_new, amrex::Real bats_vis_age, amrex::Real bats_nir_age, amrex::Real bats_vis_dir, amrex::Real bats_nir_dir, amrex::Real *albsnd, amrex::Real *albsni) |
| AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE void | groundalb_noahmp (int nsoil, int nband, int ice, int ist, amrex::Real fsno, const amrex::Real *smc, const amrex::Real *albsnd, const amrex::Real *albsni, amrex::Real cosz, amrex::Real tg, const amrex::Real *albsat, const amrex::Real *albdry, const amrex::Real *alblak, amrex::Real *albgrd, amrex::Real *albgri) |
| AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE void | twostream_noahmp (int ib, int ic, int vegtyp, amrex::Real cosz, amrex::Real vai, amrex::Real fwet, amrex::Real t, const amrex::Real *albgrd, const amrex::Real *albgri, const amrex::Real *rho, const amrex::Real *tau, amrex::Real fveg, int ist, amrex::Real xl, amrex::Real omegas_param, amrex::Real betads, amrex::Real betais, int opt_rad, amrex::Real rc, amrex::Real hvt, amrex::Real hvb, amrex::Real den, amrex::Real *fab, amrex::Real *fre, amrex::Real *ftd, amrex::Real *fti, amrex::Real &gdir, amrex::Real *frev, amrex::Real *freg, amrex::Real &bgap, amrex::Real &wgap, amrex::Real &xl_out, amrex::Real &chil_out, amrex::Real &phi1_out, amrex::Real &phi2_out) |
| AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real | fh_calc (const amrex::Real &t, const amrex::Real &mps, const amrex::Real &sw, const amrex::Real &B) |
| AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real | linear_interp (const amrex::Real t0, const amrex::Real t1, const amrex::Real t, const amrex::Real x, const amrex::Real y) |
| static void | GotoNextLine (std::istream &is) |
Private Types | |
| using | FabPtr = std::shared_ptr< amrex::MultiFab > |
Private Attributes | |
| int | m_lsm_data_size = 44 |
| int | m_lsm_flux_size = 5 |
| amrex::Vector< int > | LsmDataMap |
| amrex::Vector< int > | LsmFluxMap |
| amrex::Vector< std::string > | LsmDataName |
| amrex::Vector< std::string > | LsmFluxName |
| amrex::Geometry | m_geom |
| amrex::Geometry | m_geom0 |
| amrex::Geometry | m_lsm_geom |
| amrex::Geometry | m_lsm_geom0 |
| amrex::Vector< amrex::BCRec > | m_domain_bcs_type |
| amrex::BoxArray | ba_lsm_2d |
| amrex::Real | m_dt |
| int | khi_lsm |
| int | klo_lsm |
| amrex::Array< FabPtr, LsmVar_SLM::NumVars > | lsm_fab_vars |
| amrex::Array< FabPtr, LsmFlux_SLM::NumVars > | lsm_fab_flux |
| amrex::Vector< amrex::MultiFab * > | source_data |
| amrex::Vector< amrex::MultiFab * > | source_flux |
| amrex::Vector< amrex::MultiFab * > | source_unmapped |
| int | m_nz_lsm = 7 |
| std::vector< amrex::Real > | m_dz_lsm |
| std::string | rad_input_file |
| int | landtype0 = 16 |
| amrex::Real | LAI0 = zero |
| amrex::Vector< amrex::Real > | clay0 |
| amrex::Vector< amrex::Real > | sand0 |
| amrex::Vector< amrex::Real > | sw0 |
| amrex::Vector< amrex::Real > | st0 |
| amrex::Vector< amrex::Real > | relax_hgt |
| amrex::Real | tabs_s = zero |
| amrex::Real | t00 = 300.0 |
| bool | use_terrain = false |
| bool | dosoilwnudging = false |
| bool | dosoiltnudging = false |
| amrex::Real | tausoil = 86400.0 |
| amrex::Real | z0_soil = 0.01 |
| amrex::Real | mws_mx0 = 50.0 |
| amrex::Real | Rc_max = 5000.0 |
| amrex::Real | T_opt = 298.0 |
| amrex::Real | zref = myhalf |
| amrex::MultiFab | zrefxy |
| amrex::MultiFab | t_canop |
| amrex::MultiFab | mw |
| amrex::MultiFab | mws |
| amrex::MultiFab | t_skin |
| amrex::MultiFab | t_ground_skin |
| amrex::MultiFab | t_sfc |
| amrex::MultiFab | q_sfc |
| amrex::MultiFab | t_cas |
| amrex::MultiFab | q_cas |
| amrex::MultiFab | q_gr |
| amrex::MultiFab | sdew |
| amrex::iMultiFab | landmask |
| amrex::iMultiFab | landtype |
| amrex::iMultiFab | nroot |
| amrex::MultiFab | LAI |
| amrex::MultiFab | SAI |
| amrex::MultiFab | sstxy |
| amrex::iMultiFab | vegetype |
| amrex::MultiFab | vege_YES |
| amrex::MultiFab | cp_vege |
| amrex::MultiFab | cbiom |
| amrex::MultiFab | dleaf |
| amrex::MultiFab | z0_sfc |
| amrex::MultiFab | Khai_L |
| amrex::MultiFab | phi_1 |
| amrex::MultiFab | phi_2 |
| amrex::MultiFab | IR_emis_vege |
| amrex::MultiFab | IR_emis_soil |
| amrex::MultiFab | IR_emis_grnd |
| amrex::MultiFab | ztop |
| amrex::MultiFab | disp_hgt |
| amrex::MultiFab | Rgl |
| amrex::MultiFab | Rc_min |
| amrex::MultiFab | hs_rc |
| amrex::MultiFab | precip_extinc |
| amrex::MultiFab | precip_sfc |
| amrex::MultiFab | mw_mx |
| amrex::MultiFab | mws_mx |
| amrex::MultiFab | BAI |
| amrex::MultiFab | IMPERV |
| amrex::MultiFab | soilt_vars |
| amrex::MultiFab | soilw_vars |
| amrex::MultiFab | mw_inc |
| amrex::MultiFab | evapo_dry |
| amrex::MultiFab | evapo_wet |
| amrex::MultiFab | shf_canop |
| amrex::MultiFab | shf_soil |
| amrex::MultiFab | shf_air |
| amrex::MultiFab | lhf_canop |
| amrex::MultiFab | lhf_soil |
| amrex::MultiFab | lhf_air |
| amrex::MultiFab | evp_canop |
| amrex::MultiFab | evp_soil |
| amrex::MultiFab | evp_air |
| amrex::MultiFab | albedovis_v |
| amrex::MultiFab | albedonir_v |
| amrex::MultiFab | albedovis_s |
| amrex::MultiFab | albedonir_s |
| amrex::MultiFab | r_a |
| amrex::MultiFab | r_b |
| amrex::MultiFab | r_c |
| amrex::MultiFab | r_d |
| amrex::MultiFab | r_soil |
| amrex::MultiFab | net_rad |
| amrex::MultiFab | wet_canop |
| amrex::Real | time = zero |
| amrex::Real | start_time = -1.0 |
| bool | first_step = true |
| bool | m_updated = false |
| std::string | parameter_file = "NoahmpTable.TBL" |
| std::string | veg_dataset = "modis" |
| std::string | soil_dataset = "stas" |
| int | num_landtypes = -1 |
| int | num_veg_params = -1 |
| int | num_soil_params = -1 |
| SLMParameterTable | full_params |
| amrex::Vector< std::string > | param_veg_categories |
| amrex::Vector< std::string > | param_soil_categories |
| std::unordered_map< std::string, std::unique_ptr< amrex::Gpu::DeviceVector< amrex::Real > > > | d_soil_params |
| std::unordered_map< std::string, std::unique_ptr< amrex::Gpu::DeviceVector< amrex::Real > > > | d_veg_params |
| std::unordered_map< std::string, std::unique_ptr< amrex::Gpu::DeviceVector< amrex::Real > > > | d_rad_params |
| std::vector< std::vector< amrex::Real > > | sai_table |
| std::vector< std::vector< amrex::Real > > | lai_table |
| amrex::Gpu::DeviceVector< amrex::Real > | d_lai_curr |
| amrex::Gpu::DeviceVector< amrex::Real > | d_lai_next |
| amrex::Gpu::DeviceVector< amrex::Real > | d_sai_curr |
| amrex::Gpu::DeviceVector< amrex::Real > | d_sai_next |
| bool | use_param_file = false |
| bool | interpolate_lai = false |
| bool | use_wrf_lai = false |
| bool | params_updated = false |
| int | opt_rad = 1 |
| int | opt_alb = 1 |
| amrex::Real | betads_rad = myhalf |
| amrex::Real | betais_rad = myhalf |
| amrex::Real | tau0_rad = 1.0e6 |
| amrex::Real | grain_growth_rad = 5000. |
| amrex::Real | extra_growth_rad = 10. |
| amrex::Real | dirt_soot_rad = 0.3 |
| amrex::Real | rsurf_exp = 5.0 |
| amrex::Real | bats_cosz_rad = two |
| amrex::Real | bats_vis_new_rad = 0.95 |
| amrex::Real | bats_nir_new_rad = 0.65 |
| amrex::Real | bats_vis_age_rad = 0.2 |
| amrex::Real | bats_nir_age_rad = myhalf |
| amrex::Real | bats_vis_dir_rad = 0.4 |
| amrex::Real | bats_nir_dir_rad = 0.4 |
| amrex::Real | swemx_rad = one |
| amrex::Real | snow_emis_rad = 0.95 |
| amrex::Real | eg_soil_rad = 0.97 |
| amrex::Real | eg_lake_rad = 0.98 |
| amrex::MultiFab | albold_noahmp |
| amrex::MultiFab | tauss_noahmp |
| std::vector< std::vector< amrex::Real > > | param_table |
| amrex::TableData< amrex::Real, 2 > | d_param_table |
| amrex::Real | m_calday = -1.0 |
| int | m_orbital_year = -1 |
| int | m_orbital_mon = -1 |
| int | m_orbital_day = -1 |
| int | m_orbital_sec = -1 |
| amrex::MultiFab * | z_phys_nd |
| amrex::MultiFab | slm_diag |
| amrex::Vector< const amrex::MultiFab * > | slm_to_rad_vars |
| bool | use_wrfinput = false |
| bool | wrfinput_initialized = false |
| amrex::Vector< int > | unmapped_fields |
Static Private Attributes | |
| static constexpr amrex::Real | t_canop_max = 343. |
| static constexpr amrex::Real | tfriz = 273.15 |
| static constexpr amrex::Real | epsv = 0.61 |
| static constexpr amrex::Real | cp = 1004.0 |
| static constexpr amrex::Real | cp_water = 4.1796e6 |
| static constexpr amrex::Real | sigma = 5.67e-8 |
| static constexpr amrex::Real | IR_emis_urban = 0.9 |
| static constexpr amrex::Real | r_litter = zero |
| static std::unordered_map< std::string, std::string > | wrfinput_map |
| static std::unordered_map< std::string, std::string > | rad_output_map |
| static const std::unordered_set< int > | surf_vars |
| static constexpr const char * | LsmVarName_Full [] |
| static const std::vector< std::string > | diag_names |
The Simplified Land-surface Model (SLM) supplies lower-boundary sensible-heat, latent-heat, and momentum fluxes for land cells.
The original formulation and evaluation of SLM are documented in Lee and Khairoutdinov (2015), "A Simplified Land Model (SLM) for use in cloud-resolving models: Formulation and evaluation," Journal of Advances in Modeling Earth Systems, 7, 1368–1392, https://doi.org/10.1002/2014MS000419.
SLM includes selected formulations adapted from NoahMP, updates inherited from gSAM-SLM, and SLM-specific corrections to the surface energy and water budgets. It remains a simplified land model and is not a complete implementation of NoahMP.
|
private |
|
virtualdefault |
|
inlineoverridevirtual |
|
inlineoverridevirtual |
Reimplemented from NullSurf.
| void SLM::AdvanceSLM | ( | ) |
Referenced by Advance().


| void SLM::albedo_noahmp | ( | const amrex::MFIter & | mfi, |
| int | i, | ||
| int | j, | ||
| amrex::Real | dt, | ||
| amrex::Real | cosz, | ||
| amrex::Real | snowh, | ||
| amrex::Real | fsno, | ||
| amrex::Real | fwet, | ||
| amrex::Real | sneqvo, | ||
| amrex::Real | sneqv, | ||
| amrex::Real | qsnow, | ||
| amrex::Real | tg, | ||
| amrex::Real | tv, | ||
| amrex::Real | elai, | ||
| amrex::Real | esai, | ||
| const amrex::Real * | smc, | ||
| int | nsoil, | ||
| amrex::Real | fveg, | ||
| amrex::Real & | albold, | ||
| amrex::Real & | tauss, | ||
| amrex::Real * | albgrd, | ||
| amrex::Real * | albgri, | ||
| amrex::Real * | albd, | ||
| amrex::Real * | albi, | ||
| amrex::Real * | fabd, | ||
| amrex::Real * | fabi, | ||
| amrex::Real * | ftdd, | ||
| amrex::Real * | ftid, | ||
| amrex::Real * | ftii, | ||
| amrex::Real & | fsun, | ||
| amrex::Real * | frevd, | ||
| amrex::Real * | frevi, | ||
| amrex::Real * | fregd, | ||
| amrex::Real * | fregi, | ||
| amrex::Real & | bgap, | ||
| amrex::Real & | wgap, | ||
| amrex::Real * | albsnd, | ||
| amrex::Real * | albsni | ||
| ) |
|
overridevirtual |
Reimplemented from NullSurf.
Referenced by Update_State_Vars().


|
overridevirtual |
Reimplemented from NullSurf.
Referenced by Update_Lsm_Vars().


|
inlineoverridevirtual |
Reimplemented from NullSurf.

|
inline |
|
static |
| void SLM::fluxes_canopy | ( | const amrex::MFIter & | mfi | ) |

|
inline |
|
inlineoverridevirtual |
|
static |
|
static |
|
overridevirtual |
Reimplemented from NullSurf.

|
inline |
| void SLM::init_from_inputs | ( | ) |
Initialize SLM from inputs.
Initializes for idealized cases if provided:

| void SLM::init_from_params | ( | ) |
Overwrites any default SLM variables from values set in the parameter file

| void SLM::init_landtype | ( | ) |
| void SLM::init_layer_depths | ( | ) |
Calculates center and face depths for each soil layer

| void SLM::init_slm_vars | ( | ) |
Referenced by Update_Lsm_Vars().


| void SLM::init_soil_tw | ( | ) |
Reads soil input file, initializes soil wetness and temperature

| void SLM::init_soil_vars | ( | ) |
Initializes soil properties based on clay and sand percentages

| void SLM::init_wrfinput_vars | ( | ) |
Initializes local SLM fields from WRFInput data.
Referenced by Advance(), and Update_Lsm_Vars().


| void SLM::initialize_processed_state | ( | const bool | preserve_checkpoint_fields = false | ) |
Rebuilds SLM-local fields after transferring an evolved state.
Reconstructs local SLM fields after a processed-state transfer.

| void SLM::initialize_surface_outputs | ( | ) |
Initializes diagnostics and radiation coupling fields from the SLM state.

| void SLM::initialize_zrefxy | ( | ) |
Initializes the canopy-adjusted reference height on the current grid.
Referenced by Advance().


|
static |
| void SLM::load_builtin_radiation_parameters | ( | ) |
Loads built-in Noah-MP radiation lookup values for idealized SLM cases.
Loads the Noah-MP radiation lookup values used when no parameter file is supplied.
|
inlineoverridevirtual |
|
inlineoverridevirtual |
|
inlineoverridevirtual |
Reimplemented from NullSurf.
|
inlineoverridevirtual |
Reimplemented from NullSurf.

|
inlineoverridevirtual |
Reimplemented from NullSurf.
Referenced by Lsm_DataIndex().


|
inlineoverridevirtual |
|
inlineoverridevirtual |
Reimplemented from NullSurf.
|
inlineoverridevirtual |
|
inlineoverridevirtual |
Reimplemented from NullSurf.
Referenced by Lsm_FluxIndex().


|
inlineoverridevirtual |
Reimplemented from NullSurf.
|
overridevirtual |
|
overridevirtual |
Rebuilds SLM arrays on a remade atmospheric grid and transfers state.
Reimplemented from NullSurf.
|
inlineoverridevirtual |
Registers an exposed source data field.
Reimplemented from NullSurf.

|
inlineoverridevirtual |
Registers an exposed source flux field.
Reimplemented from NullSurf.

|
inlineoverridevirtual |
|
inlineoverridevirtual |
Reimplemented from NullSurf.
|
inlineoverridevirtual |
|
inlineoverridevirtual |
|
inlineoverridevirtual |
Reimplemented from NullSurf.
| void SLM::radiation_noahmp | ( | const amrex::MFIter & | mfi | ) |

|
overridevirtual |
Reimplemented from NullSurf.

| SLMParameterTable SLM::ReadParameterFile | ( | const std::string & | filename, |
| amrex::Vector< std::string > & | veg_categories, | ||
| amrex::Vector< std::string > & | soil_categories | ||
| ) |
Loads and parses the given .TBL file (such as NoahMPTable.TBL)
Returns an unordered map containing the name of each parameter block, where each block contains a list of variables, with each variable containing one or more values.
Returns the vegetation and soil category names loaded from file as a vector of names.
| void SLM::rebuild_restart_fields | ( | ) |
Rebuilds restart fields that can be derived from the checkpoint state.

| void SLM::resistances | ( | const amrex::MFIter & | mfi | ) |

|
inline |
|
overridevirtual |
Reimplemented from NullSurf.

|
overridevirtual |
| void SLM::slm_init | ( | ) |
Initialize SLM

|
static |
|
static |
| void SLM::soil_nudging | ( | const amrex::MFIter & | mfi3d | ) |

| void SLM::soil_temperature | ( | const amrex::MFIter & | mfi | ) |

| void SLM::soil_water | ( | const amrex::MFIter & | mfi | ) |

| void SLM::solve_ground_skin_temperature | ( | const amrex::MFIter & | mfi | ) |

|
static |
| void SLM::transfer_coeff | ( | const amrex::MFIter & | mfi | ) |

|
static |
|
inlineoverridevirtual |
Reimplemented from NullSurf.

|
inlineoverridevirtual |
Reimplemented from NullSurf.

| void SLM::UpdateLAI | ( | const amrex::MFIter & | mfi | ) |
Updates LAI and SAI based on the current simulation time and monthly values from the LAI and SAI tables.

| void SLM::UpdateLAIParameters | ( | const amrex::MFIter & | mfi | ) |
Updates radiation parameters related to LAI

| void SLM::validate_parameter_tables | ( | ) |
Validates the selected Noah-MP parameter blocks before copying them to the device.
|
overridevirtual |
Reimplemented from NullSurf.
| void SLM::writeSLM_Data | ( | const PlotFileType | plotfile_type, |
| const amrex::Real | cur_time, | ||
| const std::string | plot_prefix, | ||
| const int | level_step, | ||
| const int | lev, | ||
| const int | finest_lev, | ||
| amrex::MultiFab & | fab, | ||
| amrex::Geometry & | geom, | ||
| amrex::Vector< std::string > & | varnames | ||
| ) |

|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
staticconstexprprivate |
|
private |
|
staticconstexprprivate |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
inlinestaticprivate |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
staticconstexprprivate |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
Referenced by Advance(), and Update_Lsm_Vars().
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
staticconstexprprivate |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
Referenced by Lsm_Flux_Ptr().
|
private |
Referenced by Lsm_Data_Ptr(), and Lsm_Unmapped_Ptr().
|
private |
Referenced by Lsm_Data_Ptr().
|
private |
Referenced by Lsm_DataName().
|
private |
Referenced by Lsm_Flux_Ptr().
|
private |
Referenced by Lsm_FluxName().
|
staticconstexprprivate |
|
private |
|
private |
|
private |
|
private |
|
private |
Referenced by Lsm_Atmos_Geom().
|
private |
|
private |
Referenced by Lsm_Data_Size(), Lsm_DataIndex(), and Lsm_Set_Source_Data_Ptr().
|
private |
Referenced by Lsm_Flux_Size(), Lsm_FluxIndex(), and Lsm_Set_Source_Flux_Ptr().
|
private |
Referenced by Lsm_Geom().
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
Referenced by Advance(), and Get_Update_Status().
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
staticconstexprprivate |
|
private |
|
private |
|
inlinestaticprivate |
Referenced by get_rad_output_map().
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
staticconstexprprivate |
|
private |
|
private |
Referenced by export_to_RRTMGP().
|
private |
|
private |
|
private |
|
private |
|
private |
Referenced by Lsm_Set_Source_Data_Ptr().
|
private |
Referenced by Lsm_Set_Source_Flux_Ptr().
|
private |
Referenced by Lsm_Set_Source_Unmapped_Ptr().
|
private |
|
private |
|
private |
Referenced by Advance().
|
inlinestaticprivate |
|
private |
|
private |
|
private |
|
private |
|
staticconstexprprivate |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
staticconstexprprivate |
|
private |
Referenced by Advance().
|
private |
Referenced by Lsm_Set_Source_Unmapped_Ptr(), Lsm_Unmapped_Ptr(), and Lsm_Unmapped_Size().
|
private |
|
private |
Referenced by Define().
|
private |
|
private |
Referenced by Advance(), Define(), and Update_Lsm_Vars().
|
private |
|
private |
|
private |
|
private |
|
private |
Referenced by Advance(), and Update_Lsm_Vars().
|
inlinestaticprivate |
Referenced by Lsm_WRFInputNames().
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |