9 #include <AMReX_FArrayBox.H>
10 #include <AMReX_Geometry.H>
11 #include <AMReX_MultiFabUtil.H>
12 #include <AMReX_iMultiFab.H>
13 #include <AMReX_TableData.H>
14 #include <AMReX_ParmParse.H>
168 using SLMParameterTable = std::unordered_map<std::string, amrex::Vector<std::pair<std::string, amrex::Vector<amrex::Real>>>>;
187 using FabPtr = std::shared_ptr<amrex::MultiFab>;
208 "The SLM land surface model requires a moisture model: it exchanges water vapor "
209 "with the atmospheric state, which has no RhoQ1 component when "
210 "erf.moisture_model = None. Set erf.moisture_model, "
211 "or choose a different erf.land_surface_model.");
216 if (sc.
init_type == InitType::WRFInput) {
217 amrex::Print() <<
" SLM is initializing from WRFInput!" << std::endl;
227 const amrex::MultiFab& cons_in,
228 const amrex::MultiFab& u_in,
229 const amrex::MultiFab& v_in,
230 const amrex::Geometry& geom,
231 const amrex::Geometry& geom0,
232 amrex::Vector<amrex::BCRec>& domain_bcs_type,
233 amrex::IntVect& refRatio,
235 std::unique_ptr<amrex::MultiFab>& z_phys_nd_in,
236 amrex::Vector<amrex::Vector<std::string>>& nc_init_file)
override;
243 const amrex::MultiFab& cons_in,
244 const amrex::MultiFab& u_in,
245 const amrex::MultiFab& v_in,
246 const amrex::Geometry& geom,
247 const amrex::Geometry& geom0,
248 amrex::Vector<amrex::BCRec>& domain_bcs_type,
249 amrex::IntVect& refRatio,
251 std::unique_ptr<amrex::MultiFab>& z_phys_nd_in,
252 amrex::Vector<amrex::Vector<std::string>>& nc_init_file,
253 const amrex::Geometry& source_geom,
254 const amrex::Geometry& source_lsm_geom,
255 const amrex::IntVect& source_ref_ratio,
256 const bool has_source)
override;
330 amrex::MultiFab* source_data_ptr)
override
344 amrex::MultiFab* source_flux_ptr)
override
374 amrex::MultiFab* source_data_ptr)
override
388 const amrex::Geometry& source_lsm_geom,
389 const amrex::IntVect& ref_ratio,
412 std::string lc_varname = amrex::toLower(varname);
418 AMREX_ASSERT(varIdx != -1);
434 std::string lc_varname = amrex::toLower(varname);
444 std::unordered_map<std::string, std::string>&
450 Copy_State_to_Lsm (
const amrex::MultiFab& cons_in,
const amrex::MultiFab& u_in,
const amrex::MultiFab& v_in)
override;
456 Update_Lsm_Vars (amrex::MultiFab& cons_in, amrex::MultiFab& u_in, amrex::MultiFab& v_in)
override
481 const amrex::Vector<std::unique_ptr<amrex::iMultiFab>>& lmask_in)
override;
488 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);
533 void UpdateLAI (
const amrex::MFIter &mfi);
552 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
562 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
568 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
575 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
582 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
607 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
611 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
616 #ifdef ERF_USE_NETCDF
617 void writeSLM_NetCDF (
const amrex::MultiFab& mf,
const amrex::Vector<std::string>& varnames,
618 const amrex::Real cur_time,
const std::string plot_prefix,
const int level_step);
620 void writeNCHeader (
ncutils::NCFile &nc_file,
const amrex::Geometry &geom);
623 const std::string
name,
amrex::Real cur_time,
bool write_ghost =
false);
626 const amrex::Vector<const amrex::MultiFab*> &mf_vec,
627 const amrex::Vector<std::string> &mf_names,
628 const amrex::Geometry& geom)
const;
649 void WriteCheckpoint (
const int &lev,
const std::string &checkpointname)
const override;
651 void ReadCheckpoint (
const int &lev,
const std::string &checkpointname)
override;
727 amrex::Vector<amrex::Real>
sw0;
728 amrex::Vector<amrex::Real>
st0;
867 std::unordered_map<std::string, std::unique_ptr<amrex::Gpu::DeviceVector<amrex::Real>>>
d_soil_params;
868 std::unordered_map<std::string, std::unique_ptr<amrex::Gpu::DeviceVector<amrex::Real>>>
d_veg_params;
869 std::unordered_map<std::string, std::unique_ptr<amrex::Gpu::DeviceVector<amrex::Real>>>
d_rad_params;
956 inline static std::unordered_map<std::string, std::string>
wrfinput_map = {
957 {
"DZS",
"soil_thickness"},
962 {
"IVGTYP",
"vegtype"},
963 {
"ISLTYP",
"soiltype"},
965 {
"VEGFRA",
"veg_frac"},
966 {
"SHDMIN",
"veg_frac_min"},
967 {
"SHDMAX",
"veg_frac_max"},
973 {
"cos_zenith_angle",
"cos_zenith"},
975 {
"sw_flux_dn_dir_vis",
"SW_dw_dir_vis"},
976 {
"sw_flux_dn_dir_nir",
"SW_dw_dir_nir"},
977 {
"sw_flux_dn_dif_vis",
"SW_dw_dif_vis"},
978 {
"sw_flux_dn_dif_nir",
"SW_dw_dif_nir"},
979 {
"lw_flux_dn",
"LW_dw"}
992 inline static const std::unordered_set<int>
surf_vars = {
1031 "tsurf",
"ustar",
"tstar",
"qstar",
"ref_t",
"ref_q",
"ref_p",
"ref_d",
"ref_u",
"ref_v",
"ref_precip",
1032 "SW_dw_dir_vis",
"SW_dw_dir_nir",
"SW_dw_dif_vis",
"SW_dw_dif_nir",
"LW_dw",
"zenith",
1033 "tveg",
"mv",
"tsoil",
"wsoil",
"sand",
"clay",
"soil_thickness",
"node_z",
"interface_z",
1034 "soilw_nudge",
"soilt_nudge",
"sw_over_sat",
"soil_relax_hgt",
"soilt_obs",
"soilw_obs",
"soil_transp_frac",
"w_s_FC",
"w_s_WP",
1035 "sst_capa",
"sst_cond",
"poro_soil",
"theta_FC",
"theta_WP",
"m_pot_sat",
"Bconst",
"ks",
"lai",
"vegtype",
"soiltype",
1036 "veg_frac",
"veg_frac_min",
"veg_frac_max",
"surface_u",
"surface_v",
"surface_vapor",
"surface_heat",
"precip_soil",
"emis_sfc",
"alb_nir_sfc",
"alb_vis_sfc",
"alb_nir_sfc_diff",
"alb_vis_sfc_diff"
1052 #ifdef ERF_USE_NETCDF
1054 inline static const std::unordered_set<int> const_vars = {
1076 inline static const std::vector<std::string> soilt_var_names = {
1084 inline static const std::vector<std::string> soilw_var_names = {
1093 amrex::MultiFab rad_input_data;
1094 int num_rad_times = 0;
1095 amrex::Vector<amrex::Real> rad_times;
1096 inline static const std::vector<std::string> rad_names = {
1097 "S_SWVIS",
"S_SWNIR",
"S_SWVISD",
"S_SWNIRD",
"S_COSZRS",
"S_LWDS"};
AMREX_ALWAYS_ASSERT(bx.length()[2]==khi+1)
AMREX_ALWAYS_ASSERT_WITH_MESSAGE(m_cloud_chamber_config.active, "Cloud Chamber: initializer reached without a parsed configuration")
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE int idx(int i, int j, int k, int nx, int ny)
Definition: ERF_InitForEnsemble.cpp:396
LSMTransferMode
Definition: ERF_NullSurf.H:10
constexpr amrex::Real two
Definition: ERF_NumericalConstants.H:38
constexpr amrex::Real one
Definition: ERF_NumericalConstants.H:37
constexpr amrex::Real zero
Definition: ERF_NumericalConstants.H:36
constexpr amrex::Real myhalf
Definition: ERF_NumericalConstants.H:41
std::string name
Definition: ERF_Plotfile2DCatalog.cpp:105
std::unordered_map< std::string, amrex::Vector< std::pair< std::string, amrex::Vector< amrex::Real > >> > SLMParameterTable
Definition: ERF_SLM.H:168
amrex::Real Real
Definition: ERF_ShocInterface.H:19
Definition: ERF_NullSurf.H:15
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 >> &)
Definition: ERF_NullSurf.H:27
Definition: ERF_SLM.H:185
amrex::MultiFab z0_sfc
Definition: ERF_SLM.H:789
amrex::MultiFab mw
Definition: ERF_SLM.H:763
amrex::Vector< amrex::Real > sand0
Definition: ERF_SLM.H:726
amrex::MultiFab t_canop
Definition: ERF_SLM.H:762
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)
Definition: ERF_SLM.cpp:4933
amrex::Real start_time
Definition: ERF_SLM.H:852
void Define(SolverChoice &sc) override
Definition: ERF_SLM.H:200
amrex::MultiFab evp_air
Definition: ERF_SLM.H:831
void Lsm_Interpolate_From_Source(const amrex::Geometry &source_geom, const amrex::Geometry &source_lsm_geom, const amrex::IntVect &ref_ratio, LSMTransferMode mode) override
Definition: ERF_SLM.cpp:1172
amrex::Real snow_emis_rad
Definition: ERF_SLM.H:914
amrex::Geometry m_geom0
Definition: ERF_SLM.H:682
amrex::MultiFab * Lsm_Flux_Ptr(const int &varIdx) override
Definition: ERF_SLM.H:307
SLM()
Definition: ERF_SLM.H:193
amrex::MultiFab q_gr
Definition: ERF_SLM.H:772
amrex::Real bats_cosz_rad
Definition: ERF_SLM.H:904
amrex::Gpu::DeviceVector< amrex::Real > d_sai_next
Definition: ERF_SLM.H:877
static const std::unordered_set< int > surf_vars
Definition: ERF_SLM.H:992
void load_builtin_radiation_parameters()
Definition: ERF_SLM.cpp:795
void init_slm_vars()
Definition: ERF_SLM.cpp:1949
std::unordered_map< std::string, std::string > & Lsm_WRFInputNames() override
Definition: ERF_SLM.H:445
amrex::Real bats_vis_dir_rad
Definition: ERF_SLM.H:909
std::unordered_map< std::string, std::unique_ptr< amrex::Gpu::DeviceVector< amrex::Real > > > d_veg_params
Definition: ERF_SLM.H:868
amrex::iMultiFab landmask
Definition: ERF_SLM.H:776
amrex::MultiFab mw_mx
Definition: ERF_SLM.H:803
amrex::Vector< std::string > param_soil_categories
Definition: ERF_SLM.H:865
static constexpr amrex::Real epsv
Definition: ERF_SLM.H:745
bool use_terrain
Definition: ERF_SLM.H:735
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 >> &)
Definition: ERF_NullSurf.H:27
void initialize_processed_state(const bool preserve_checkpoint_fields=false)
Definition: ERF_SLM.cpp:1253
int Lsm_DataIndex(const std::string &varname) override
Definition: ERF_SLM.H:409
amrex::MultiFab shf_air
Definition: ERF_SLM.H:823
amrex::Real tabs_s
Definition: ERF_SLM.H:731
int khi_lsm
Definition: ERF_SLM.H:699
amrex::MultiFab net_rad
Definition: ERF_SLM.H:847
void init_soil_vars()
Definition: ERF_SLM.cpp:1877
bool use_param_file
Definition: ERF_SLM.H:879
amrex::Real tau0_rad
Definition: ERF_SLM.H:899
amrex::Vector< amrex::BCRec > m_domain_bcs_type
Definition: ERF_SLM.H:691
const amrex::Vector< const amrex::MultiFab * > & export_to_RRTMGP()
Definition: ERF_SLM.H:635
amrex::MultiFab evp_canop
Definition: ERF_SLM.H:829
int m_lsm_flux_size
Definition: ERF_SLM.H:668
amrex::MultiFab shf_soil
Definition: ERF_SLM.H:822
void radiation_noahmp(const amrex::MFIter &mfi)
Definition: ERF_SLM.cpp:5628
int Lsm_Unmapped_Size() override
Definition: ERF_SLM.H:357
amrex::Vector< amrex::MultiFab * > source_data
Definition: ERF_SLM.H:710
void init_from_inputs()
Definition: ERF_SLM.cpp:408
amrex::MultiFab mw_inc
Definition: ERF_SLM.H:814
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
Definition: ERF_SLM.cpp:4847
void initialize_surface_outputs()
Definition: ERF_SLM.cpp:2019
amrex::Vector< amrex::Real > sw0
Definition: ERF_SLM.H:727
amrex::MultiFab cbiom
Definition: ERF_SLM.H:787
void init_from_params()
Definition: ERF_SLM.cpp:2530
amrex::Real bats_vis_age_rad
Definition: ERF_SLM.H:907
amrex::Real T_opt
Definition: ERF_SLM.H:754
amrex::MultiFab Khai_L
Definition: ERF_SLM.H:790
int landtype0
Definition: ERF_SLM.H:722
bool dosoiltnudging
Definition: ERF_SLM.H:738
amrex::Geometry m_lsm_geom0
Definition: ERF_SLM.H:688
amrex::MultiFab phi_2
Definition: ERF_SLM.H:792
amrex::Real mws_mx0
Definition: ERF_SLM.H:743
amrex::MultiFab evp_soil
Definition: ERF_SLM.H:830
void init_soil_tw()
Definition: ERF_SLM.cpp:1658
void soil_temperature(const amrex::MFIter &mfi)
Definition: ERF_SLM.cpp:4448
amrex::MultiFab LAI
Definition: ERF_SLM.H:779
amrex::Real bats_vis_new_rad
Definition: ERF_SLM.H:905
amrex::MultiFab wet_canop
Definition: ERF_SLM.H:848
amrex::Vector< std::string > LsmFluxName
Definition: ERF_SLM.H:676
static constexpr amrex::Real cp_water
Definition: ERF_SLM.H:748
amrex::Real m_dt
Definition: ERF_SLM.H:696
amrex::Real tausoil
Definition: ERF_SLM.H:739
static void GotoNextLine(std::istream &is)
Definition: ERF_SLM_IO.cpp:375
amrex::MultiFab IR_emis_grnd
Definition: ERF_SLM.H:795
static std::unordered_map< std::string, std::string > wrfinput_map
Definition: ERF_SLM.H:956
void WriteCheckpoint(const int &lev, const std::string &checkpointname) const override
Definition: ERF_SLM_IO.cpp:381
std::vector< amrex::Real > m_dz_lsm
Definition: ERF_SLM.H:718
amrex::iMultiFab nroot
Definition: ERF_SLM.H:778
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)
Definition: ERF_SLM.cpp:5271
bool use_wrf_lai
Definition: ERF_SLM.H:881
static constexpr amrex::Real t_canop_max
Definition: ERF_SLM.H:733
amrex::MultiFab q_sfc
Definition: ERF_SLM.H:768
std::string rad_input_file
Definition: ERF_SLM.H:719
amrex::MultiFab t_sfc
Definition: ERF_SLM.H:767
amrex::Real betads_rad
Definition: ERF_SLM.H:895
amrex::MultiFab t_cas
Definition: ERF_SLM.H:769
void soil_nudging(const amrex::MFIter &mfi3d)
Definition: ERF_SLM.cpp:4611
bool wrfinput_initialized
Definition: ERF_SLM.H:984
amrex::MultiFab ztop
Definition: ERF_SLM.H:796
amrex::MultiFab albedovis_s
Definition: ERF_SLM.H:835
void Advance(const amrex::Real &dt, const amrex::Real &t_new, const amrex::Real &t_start) override
Definition: ERF_SLM.H:266
SLMParameterTable ReadParameterFile(const std::string &filename, amrex::Vector< std::string > &veg_categories, amrex::Vector< std::string > &soil_categories)
Definition: ERF_SLM.cpp:2216
int klo_lsm
Definition: ERF_SLM.H:701
amrex::Gpu::DeviceVector< amrex::Real > d_lai_next
Definition: ERF_SLM.H:875
amrex::MultiFab vege_YES
Definition: ERF_SLM.H:785
int m_orbital_mon
Definition: ERF_SLM.H:943
void Advance(const double &dt) override
Definition: ERF_SLM.H:260
amrex::MultiFab shf_canop
Definition: ERF_SLM.H:821
void fluxes_canopy(const amrex::MFIter &mfi)
Definition: ERF_SLM.cpp:3728
std::string veg_dataset
Definition: ERF_SLM.H:857
static constexpr amrex::Real IR_emis_urban
Definition: ERF_SLM.H:758
void validate_parameter_tables()
Definition: ERF_SLM.cpp:2317
amrex::Real dirt_soot_rad
Definition: ERF_SLM.H:902
amrex::Real swemx_rad
Definition: ERF_SLM.H:911
static const std::vector< std::string > diag_names
Definition: ERF_SLM.H:1041
amrex::MultiFab slm_diag
Definition: ERF_SLM.H:950
amrex::Array< FabPtr, LsmVar_SLM::NumVars > lsm_fab_vars
Definition: ERF_SLM.H:704
static constexpr amrex::Real cp
Definition: ERF_SLM.H:747
SLMParameterTable full_params
Definition: ERF_SLM.H:863
amrex::MultiFab precip_extinc
Definition: ERF_SLM.H:801
amrex::Real bats_nir_new_rad
Definition: ERF_SLM.H:906
void Copy_State_to_Lsm(const amrex::MultiFab &cons_in, const amrex::MultiFab &u_in, const amrex::MultiFab &v_in) override
Definition: ERF_SLM.cpp:4680
void Lsm_Set_Source_Unmapped_Ptr(const int &varIdx, amrex::MultiFab *source_data_ptr) override
Definition: ERF_SLM.H:373
amrex::MultiFab precip_sfc
Definition: ERF_SLM.H:802
static constexpr const char * LsmVarName_Full[]
Definition: ERF_SLM.H:1030
static constexpr amrex::Real tfriz
Definition: ERF_SLM.H:742
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)
Definition: ERF_SLM.cpp:5508
amrex::MultiFab t_skin
Definition: ERF_SLM.H:765
amrex::Vector< std::string > param_veg_categories
Definition: ERF_SLM.H:864
int opt_rad
Definition: ERF_SLM.H:885
void resistances(const amrex::MFIter &mfi)
Definition: ERF_SLM.cpp:3438
amrex::Vector< amrex::Real > clay0
Definition: ERF_SLM.H:725
amrex::MultiFab albedonir_s
Definition: ERF_SLM.H:835
int Lsm_FluxIndex(const std::string &varname) override
Definition: ERF_SLM.H:431
amrex::Geometry m_geom
Definition: ERF_SLM.H:679
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)
Definition: ERF_SLM.cpp:5101
amrex::Real bats_nir_dir_rad
Definition: ERF_SLM.H:910
amrex::MultiFab albold_noahmp
Definition: ERF_SLM.H:935
int num_soil_params
Definition: ERF_SLM.H:861
void slm_init()
Definition: ERF_SLM.cpp:832
int Lsm_Flux_Size() override
Definition: ERF_SLM.H:398
amrex::Real Rc_max
Definition: ERF_SLM.H:753
amrex::Geometry Lsm_Geom() override
Definition: ERF_SLM.H:317
amrex::Vector< amrex::MultiFab * > source_flux
Definition: ERF_SLM.H:711
amrex::MultiFab * Lsm_Data_Ptr(const int &varIdx) override
Definition: ERF_SLM.H:297
amrex::Real m_calday
Definition: ERF_SLM.H:941
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)
Definition: ERF_SLM.cpp:4668
std::string parameter_file
Definition: ERF_SLM.H:856
amrex::MultiFab mws
Definition: ERF_SLM.H:764
amrex::MultiFab Rgl
Definition: ERF_SLM.H:798
amrex::MultiFab IR_emis_vege
Definition: ERF_SLM.H:793
bool dosoilwnudging
Definition: ERF_SLM.H:737
amrex::Real time
Definition: ERF_SLM.H:850
amrex::MultiFab sstxy
Definition: ERF_SLM.H:781
bool interpolate_lai
Definition: ERF_SLM.H:880
amrex::MultiFab IMPERV
Definition: ERF_SLM.H:806
amrex::MultiFab r_d
Definition: ERF_SLM.H:842
int m_lsm_data_size
Definition: ERF_SLM.H:665
void init_layer_depths()
Definition: ERF_SLM.cpp:1832
void ReadCheckpoint(const int &lev, const std::string &checkpointname) override
Definition: ERF_SLM_IO.cpp:683
amrex::iMultiFab landtype
Definition: ERF_SLM.H:777
amrex::MultiFab r_c
Definition: ERF_SLM.H:841
void Lsm_Set_Source_Flux_Ptr(const int &varIdx, amrex::MultiFab *source_flux_ptr) override
Definition: ERF_SLM.H:343
int Lsm_Type() override
Definition: ERF_SLM.H:483
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)
Definition: ERF_SLM.cpp:4660
std::string Lsm_DataName(const int &varIdx) override
Definition: ERF_SLM.H:402
std::vector< std::vector< amrex::Real > > sai_table
Definition: ERF_SLM.H:871
void transfer_coeff(const amrex::MFIter &mfi)
Definition: ERF_SLM.cpp:3214
amrex::Vector< amrex::Real > st0
Definition: ERF_SLM.H:728
static constexpr amrex::Real r_litter
Definition: ERF_SLM.H:844
amrex::Vector< amrex::MultiFab * > source_unmapped
Definition: ERF_SLM.H:712
void soil_water(const amrex::MFIter &mfi)
Definition: ERF_SLM.cpp:4172
void set_precip_input(const amrex::MultiFab *precip_in) override
Definition: ERF_SLM.cpp:4818
void Update_Lsm_Vars(amrex::MultiFab &cons_in, amrex::MultiFab &u_in, amrex::MultiFab &v_in) override
Definition: ERF_SLM.H:456
amrex::TableData< amrex::Real, 2 > d_param_table
Definition: ERF_SLM.H:939
void solve_ground_skin_temperature(const amrex::MFIter &mfi)
Definition: ERF_SLM.cpp:3885
amrex::Real extra_growth_rad
Definition: ERF_SLM.H:901
amrex::Vector< std::string > LsmDataName
Definition: ERF_SLM.H:675
void init_wrfinput_vars()
Definition: ERF_SLM.cpp:954
void set_dt(const amrex::Real &dt)
Definition: ERF_SLM.H:631
amrex::BoxArray ba_lsm_2d
Definition: ERF_SLM.H:693
amrex::MultiFab evapo_dry
Definition: ERF_SLM.H:817
amrex::MultiFab r_a
Definition: ERF_SLM.H:839
std::shared_ptr< amrex::MultiFab > FabPtr
Definition: ERF_SLM.H:187
amrex::MultiFab t_ground_skin
Definition: ERF_SLM.H:766
bool first_step
Definition: ERF_SLM.H:853
amrex::Gpu::DeviceVector< amrex::Real > d_sai_curr
Definition: ERF_SLM.H:876
void AdvanceSLM()
Definition: ERF_SLM.cpp:2895
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)
amrex::MultiFab r_b
Definition: ERF_SLM.H:840
std::string Lsm_FluxName(const int &varIdx) override
Definition: ERF_SLM.H:424
amrex::Geometry m_lsm_geom
Definition: ERF_SLM.H:685
void Lsm_Set_Source_Data_Ptr(const int &varIdx, amrex::MultiFab *source_data_ptr) override
Definition: ERF_SLM.H:329
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
Definition: ERF_SLM.cpp:1090
int m_nz_lsm
Definition: ERF_SLM.H:715
int m_orbital_sec
Definition: ERF_SLM.H:945
amrex::MultiFab * Lsm_Unmapped_Ptr(const int &varIdx) override
Definition: ERF_SLM.H:363
amrex::MultiFab BAI
Definition: ERF_SLM.H:805
int m_orbital_year
Definition: ERF_SLM.H:942
amrex::Real zref
Definition: ERF_SLM.H:755
amrex::MultiFab lhf_soil
Definition: ERF_SLM.H:827
amrex::Real grain_growth_rad
Definition: ERF_SLM.H:900
int Lsm_Data_Size() override
Definition: ERF_SLM.H:394
amrex::Gpu::DeviceVector< amrex::Real > d_lai_curr
Definition: ERF_SLM.H:874
int num_landtypes
Definition: ERF_SLM.H:859
void Copy_Lsm_to_State(amrex::MultiFab &cons_in) override
Definition: ERF_SLM.cpp:4911
std::vector< std::vector< amrex::Real > > lai_table
Definition: ERF_SLM.H:872
amrex::MultiFab * z_phys_nd
Definition: ERF_SLM.H:947
bool Get_Update_Status() override
Definition: ERF_SLM.H:468
void init_landtype()
Definition: ERF_SLM.cpp:1339
void UpdateLAI(const amrex::MFIter &mfi)
Definition: ERF_SLM.cpp:2714
amrex::MultiFab phi_1
Definition: ERF_SLM.H:791
amrex::MultiFab q_cas
Definition: ERF_SLM.H:770
amrex::Real eg_lake_rad
Definition: ERF_SLM.H:916
amrex::Vector< int > LsmDataMap
Definition: ERF_SLM.H:671
amrex::Real bats_nir_age_rad
Definition: ERF_SLM.H:908
bool params_updated
Definition: ERF_SLM.H:882
amrex::MultiFab sdew
Definition: ERF_SLM.H:773
amrex::Real betais_rad
Definition: ERF_SLM.H:896
amrex::MultiFab albedonir_v
Definition: ERF_SLM.H:834
amrex::MultiFab dleaf
Definition: ERF_SLM.H:788
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)
Definition: ERF_SLM.cpp:5154
amrex::Geometry Lsm_Atmos_Geom() override
Definition: ERF_SLM.H:323
amrex::Vector< int > unmapped_fields
Definition: ERF_SLM.H:987
amrex::MultiFab cp_vege
Definition: ERF_SLM.H:786
amrex::Vector< amrex::Real > relax_hgt
Definition: ERF_SLM.H:729
std::unordered_map< std::string, std::unique_ptr< amrex::Gpu::DeviceVector< amrex::Real > > > d_rad_params
Definition: ERF_SLM.H:869
std::unordered_map< std::string, std::string > & get_rad_output_map()
Definition: ERF_SLM.H:640
void Update_State_Vars(amrex::MultiFab &cons_in) override
Definition: ERF_SLM.H:471
amrex::MultiFab lhf_air
Definition: ERF_SLM.H:828
amrex::Vector< const amrex::MultiFab * > slm_to_rad_vars
Definition: ERF_SLM.H:952
amrex::MultiFab lhf_canop
Definition: ERF_SLM.H:826
void initialize_zrefxy()
Definition: ERF_SLM.cpp:1227
bool use_wrfinput
Definition: ERF_SLM.H:983
amrex::Real eg_soil_rad
Definition: ERF_SLM.H:915
amrex::MultiFab mws_mx
Definition: ERF_SLM.H:804
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)
Definition: ERF_SLM.cpp:5209
amrex::Real z0_soil
Definition: ERF_SLM.H:741
amrex::MultiFab disp_hgt
Definition: ERF_SLM.H:797
amrex::MultiFab albedovis_v
Definition: ERF_SLM.H:834
int opt_alb
Definition: ERF_SLM.H:886
amrex::MultiFab tauss_noahmp
Definition: ERF_SLM.H:936
amrex::MultiFab r_soil
Definition: ERF_SLM.H:843
std::vector< std::vector< amrex::Real > > param_table
Definition: ERF_SLM.H:938
amrex::Real rsurf_exp
Definition: ERF_SLM.H:903
amrex::MultiFab soilt_vars
Definition: ERF_SLM.H:811
int m_orbital_day
Definition: ERF_SLM.H:944
amrex::MultiFab hs_rc
Definition: ERF_SLM.H:800
amrex::Real t00
Definition: ERF_SLM.H:732
amrex::MultiFab soilw_vars
Definition: ERF_SLM.H:812
amrex::Real LAI0
Definition: ERF_SLM.H:724
amrex::MultiFab Rc_min
Definition: ERF_SLM.H:799
amrex::iMultiFab vegetype
Definition: ERF_SLM.H:784
amrex::Vector< int > LsmFluxMap
Definition: ERF_SLM.H:672
amrex::MultiFab evapo_wet
Definition: ERF_SLM.H:818
std::string soil_dataset
Definition: ERF_SLM.H:858
bool m_updated
Definition: ERF_SLM.H:854
std::unordered_map< std::string, std::unique_ptr< amrex::Gpu::DeviceVector< amrex::Real > > > d_soil_params
Definition: ERF_SLM.H:867
amrex::MultiFab zrefxy
Definition: ERF_SLM.H:756
static std::unordered_map< std::string, std::string > rad_output_map
Definition: ERF_SLM.H:972
amrex::Array< FabPtr, LsmFlux_SLM::NumVars > lsm_fab_flux
Definition: ERF_SLM.H:707
amrex::MultiFab SAI
Definition: ERF_SLM.H:780
void UpdateLAIParameters(const amrex::MFIter &mfi)
Definition: ERF_SLM.cpp:2857
static constexpr amrex::Real sigma
Definition: ERF_SLM.H:750
int num_veg_params
Definition: ERF_SLM.H:860
void rebuild_restart_fields()
Definition: ERF_SLM.cpp:2113
amrex::MultiFab IR_emis_soil
Definition: ERF_SLM.H:794
Definition: ERF_NCInterface.H:344
@ SLM
Definition: ERF_LSM_Types.H:8
@ None
Definition: ERF_LSM_Types.H:6
@ NumVars
Definition: ERF_SLM.H:105
@ t_flux
Definition: ERF_SLM.H:100
@ tau23
Definition: ERF_SLM.H:103
@ tau13
Definition: ERF_SLM.H:102
@ q_flux
Definition: ERF_SLM.H:101
@ olen
Definition: ERF_SLM.H:104
@ mv
Definition: ERF_SLM.H:47
@ theta_FC
Definition: ERF_SLM.H:70
@ pref
Definition: ERF_SLM.H:34
@ uref
Definition: ERF_SLM.H:36
@ swdsvisxyref
Definition: ERF_SLM.H:39
@ ustar
Definition: ERF_SLM.H:28
@ alb_nir_sfc_diff
Definition: ERF_SLM.H:91
@ ks
Definition: ERF_SLM.H:74
@ sst_cond
Definition: ERF_SLM.H:68
@ flbu
Definition: ERF_SLM.H:83
@ vref
Definition: ERF_SLM.H:37
@ soilt_obs
Definition: ERF_SLM.H:60
@ emis_sfc
Definition: ERF_SLM.H:88
@ NumVars
Definition: ERF_SLM.H:93
@ theta_WP
Definition: ERF_SLM.H:71
@ flbv
Definition: ERF_SLM.H:84
@ qref
Definition: ERF_SLM.H:33
@ soilw
Definition: ERF_SLM.H:49
@ clay
Definition: ERF_SLM.H:52
@ sw_over_sat
Definition: ERF_SLM.H:58
@ swdsnirxyref
Definition: ERF_SLM.H:40
@ vegtype
Definition: ERF_SLM.H:77
@ soiltype
Definition: ERF_SLM.H:78
@ soilw_nudge
Definition: ERF_SLM.H:56
@ m_pot_sat
Definition: ERF_SLM.H:72
@ interface_z
Definition: ERF_SLM.H:55
@ soilt_nudge
Definition: ERF_SLM.H:57
@ poro_soil
Definition: ERF_SLM.H:69
@ tref
Definition: ERF_SLM.H:32
@ s_depth
Definition: ERF_SLM.H:53
@ w_s_WP
Definition: ERF_SLM.H:65
@ sst_capa
Definition: ERF_SLM.H:67
@ flbq
Definition: ERF_SLM.H:85
@ alb_vis_sfc_diff
Definition: ERF_SLM.H:92
@ swdsvisdxyref
Definition: ERF_SLM.H:41
@ Bconst
Definition: ERF_SLM.H:73
@ node_z
Definition: ERF_SLM.H:54
@ coszrsxy
Definition: ERF_SLM.H:44
@ flbt
Definition: ERF_SLM.H:86
@ veg_frac
Definition: ERF_SLM.H:79
@ dref
Definition: ERF_SLM.H:35
@ veg_frac_max
Definition: ERF_SLM.H:81
@ alb_vis_sfc
Definition: ERF_SLM.H:90
@ soil_relax_hgt
Definition: ERF_SLM.H:59
@ tv
Definition: ERF_SLM.H:46
@ qstar
Definition: ERF_SLM.H:30
@ tsurf
Definition: ERF_SLM.H:27
@ swdsnirdxyref
Definition: ERF_SLM.H:42
@ prsfc
Definition: ERF_SLM.H:87
@ veg_frac_min
Definition: ERF_SLM.H:80
@ lai
Definition: ERF_SLM.H:76
@ alb_nir_sfc
Definition: ERF_SLM.H:89
@ soilt
Definition: ERF_SLM.H:48
@ soilw_obs
Definition: ERF_SLM.H:61
@ sand
Definition: ERF_SLM.H:51
@ soil_transp_frac
Definition: ERF_SLM.H:63
@ lwref
Definition: ERF_SLM.H:43
@ precipref
Definition: ERF_SLM.H:38
@ w_s_FC
Definition: ERF_SLM.H:64
@ tstar
Definition: ERF_SLM.H:29
@ rho
Definition: ERF_Kessler.H:25
constexpr std::array< amrex::Real, num_veg_params > den
Definition: ERF_SLM_DefaultParams.H:16
constexpr std::array< amrex::Real, num_veg_params > rc
Definition: ERF_SLM_DefaultParams.H:22
constexpr std::array< amrex::Real, num_veg_params > hvb
Definition: ERF_SLM_DefaultParams.H:19
constexpr std::array< amrex::Real, 2 > alblak
Definition: ERF_SLM_DefaultParams.H:58
Definition: ERF_SLM.H:146
@ st_eff_cond
Definition: ERF_SLM.H:150
@ beta
Definition: ERF_SLM.H:152
@ alpha
Definition: ERF_SLM.H:151
@ NumVars
Definition: ERF_SLM.H:153
@ st_capa
Definition: ERF_SLM.H:149
@ st_cond
Definition: ERF_SLM.H:148
Definition: ERF_SLM.H:156
@ sw_wgt
Definition: ERF_SLM.H:158
@ sh_eff_cond
Definition: ERF_SLM.H:159
@ NumVars
Definition: ERF_SLM.H:164
@ beta
Definition: ERF_SLM.H:162
@ alpha
Definition: ERF_SLM.H:161
@ sh_eff_vel
Definition: ERF_SLM.H:160
@ sdepth_mm
Definition: ERF_SLM.H:163
Definition: ERF_SLM.H:131
@ evapo_wet
Definition: ERF_SLM.H:139
@ precip_sfc
Definition: ERF_SLM.H:135
@ grflux
Definition: ERF_SLM.H:140
@ NumVars
Definition: ERF_SLM.H:141
@ drain
Definition: ERF_SLM.H:137
@ precip_in
Definition: ERF_SLM.H:134
@ precip
Definition: ERF_SLM.H:133
@ drain_flux
Definition: ERF_SLM.H:138
@ run_off_sfc
Definition: ERF_SLM.H:136
Definition: ERF_SLM.H:109
@ net_lwdn1
Definition: ERF_SLM.H:121
@ net_swdn1
Definition: ERF_SLM.H:113
@ NumVars
Definition: ERF_SLM.H:127
@ net_sw1
Definition: ERF_SLM.H:115
@ net_lw2
Definition: ERF_SLM.H:124
@ net_rad2
Definition: ERF_SLM.H:126
@ net_swdn2
Definition: ERF_SLM.H:114
@ tir2
Definition: ERF_SLM.H:118
@ net_sw2
Definition: ERF_SLM.H:116
@ net_lwdn2
Definition: ERF_SLM.H:122
@ net_lwup1
Definition: ERF_SLM.H:119
@ net_lw1
Definition: ERF_SLM.H:123
@ net_swup1
Definition: ERF_SLM.H:111
@ tir1
Definition: ERF_SLM.H:117
@ net_swup2
Definition: ERF_SLM.H:112
@ net_rad1
Definition: ERF_SLM.H:125
@ net_lwup2
Definition: ERF_SLM.H:120
@ xl
Definition: ERF_WSM6.H:324
@ t
Definition: ERF_WSM6.H:272
real(c_double), parameter t0
Definition: ERF_module_model_constants.F90:39
Definition: ERF_DataStruct.H:685
static InitType init_type
Initial-condition source selected for the run.
Definition: ERF_DataStruct.H:2218
MoistureType moisture_type
Moisture or microphysics model.
Definition: ERF_DataStruct.H:2524
static TerrainType terrain_type
Terrain or immersed-boundary representation.
Definition: ERF_DataStruct.H:2224