Skip to content

Commit

Permalink
Merge pull request #3 from CharlesZheZhang/wetland_refactor
Browse files Browse the repository at this point in the history
Implementing wetland model from Zhang et al. (2022) WRR
  • Loading branch information
CharlesZheZhang authored Aug 24, 2023
2 parents 45f6521 + 458cf3c commit f5a0c5b
Show file tree
Hide file tree
Showing 19 changed files with 257 additions and 35 deletions.
10 changes: 5 additions & 5 deletions drivers/hrldas/ConfigVarInTransferMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ subroutine ConfigVarInTransfer(noahmp, NoahmpIO)
noahmp%config%nmlist%OptPedotransfer = NoahmpIO%IOPT_PEDO
noahmp%config%nmlist%OptRunoffSurface = NoahmpIO%IOPT_RUNSRF
noahmp%config%nmlist%OptRunoffSubsurface = NoahmpIO%IOPT_RUNSUB
noahmp%config%nmlist%OptWetlandModel = NoahmpIO%IOPT_WETLAND ! Add an entry for wetland model, Zhe Zhang
noahmp%config%nmlist%OptGlacierTreatment = NoahmpIO%IOPT_GLA

! config domain variable
Expand Down Expand Up @@ -129,12 +130,11 @@ subroutine ConfigVarInTransfer(noahmp, NoahmpIO)

! treatment for urban point
if ( (NoahmpIO%IVGTYP(I,J) == NoahmpIO%ISURBAN_TABLE) .or. (NoahmpIO%IVGTYP(I,J) > NoahmpIO%URBTYPE_beg) ) then
if ( NoahmpIO%SF_URBAN_PHYSICS == 0 ) then
noahmp%config%domain%VegType = NoahmpIO%ISURBAN_TABLE ! treat as bulk urban point
noahmp%config%domain%FlagUrban = .true.
noahmp%config%domain%FlagUrban = .true.
if(NoahmpIO%SF_URBAN_PHYSICS == 0 ) then
noahmp%config%domain%VegType = NoahmpIO%ISURBAN_TABLE
else
noahmp%config%domain%VegType = NoahmpIO%NATURAL_TABLE ! set rural vegetation type based on table natural
! urban is handled by explicit urban scheme outside Noah-MP
noahmp%config%domain%VegType = NoahmpIO%NATURAL_TABLE ! set urban vegetation type based on table natural
NoahmpIO%GVFMAX(I,J) = 0.96 * 100.0 ! unit: %
endif
endif
Expand Down
12 changes: 12 additions & 0 deletions drivers/hrldas/NoahmpIOVarInitMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,8 @@ subroutine NoahmpIOVarInitDefault(NoahmpIO)
if ( .not. allocated (NoahmpIO%CMXY) ) allocate ( NoahmpIO%CMXY (XSTART:XEND, YSTART:YEND) ) ! bulk momentum drag coefficient
if ( .not. allocated (NoahmpIO%CHXY) ) allocate ( NoahmpIO%CHXY (XSTART:XEND, YSTART:YEND) ) ! bulk sensible heat exchange coefficient
if ( .not. allocated (NoahmpIO%FWETXY) ) allocate ( NoahmpIO%FWETXY (XSTART:XEND, YSTART:YEND) ) ! wetted or snowed fraction of the canopy (-)
if ( .not. allocated (NoahmpIO%FSATXY) ) allocate ( NoahmpIO%FSATXY (XSTART:XEND, YSTART:YEND) ) ! saturated fraction of the grid (-)
if ( .not. allocated (NoahmpIO%WSURFXY) ) allocate ( NoahmpIO%WSURFXY (XSTART:XEND, YSTART:YEND) ) ! wetland water storage [mm]
if ( .not. allocated (NoahmpIO%SNEQVOXY) ) allocate ( NoahmpIO%SNEQVOXY (XSTART:XEND, YSTART:YEND) ) ! snow mass at last time step(mm h2o)
if ( .not. allocated (NoahmpIO%ALBOLDXY) ) allocate ( NoahmpIO%ALBOLDXY (XSTART:XEND, YSTART:YEND) ) ! snow albedo at last time step (-)
if ( .not. allocated (NoahmpIO%QSNOWXY) ) allocate ( NoahmpIO%QSNOWXY (XSTART:XEND, YSTART:YEND) ) ! snowfall on the ground [mm/s]
Expand Down Expand Up @@ -324,6 +326,10 @@ subroutine NoahmpIOVarInitDefault(NoahmpIO)
if ( .not. allocated (NoahmpIO%HARVEST) ) allocate ( NoahmpIO%HARVEST (XSTART:XEND, YSTART:YEND) )
if ( .not. allocated (NoahmpIO%SEASON_GDD)) allocate ( NoahmpIO%SEASON_GDD (XSTART:XEND, YSTART:YEND) )
if ( .not. allocated (NoahmpIO%CROPTYPE) ) allocate ( NoahmpIO%CROPTYPE (XSTART:XEND,5,YSTART:YEND) )

! Needed for wetland model (OPT_WETLAND=1)
if ( .not. allocated (NoahmpIO%FSATMX) ) allocate ( NoahmpIO%FSATMX (XSTART:XEND, YSTART:YEND) )
if ( .not. allocated (NoahmpIO%WCAP) ) allocate ( NoahmpIO%WCAP (XSTART:XEND, YSTART:YEND) )

! Single- and Multi-layer Urban Models
if ( NoahmpIO%SF_URBAN_PHYSICS > 0 ) then
Expand Down Expand Up @@ -519,6 +525,8 @@ subroutine NoahmpIOVarInitDefault(NoahmpIO)
NoahmpIO%CMXY = undefined_real
NoahmpIO%CHXY = undefined_real
NoahmpIO%FWETXY = undefined_real
NoahmpIO%FSATXY = undefined_real
NoahmpIO%WSURFXY = undefined_real
NoahmpIO%SNEQVOXY = undefined_real
NoahmpIO%ALBOLDXY = undefined_real
NoahmpIO%QSNOWXY = undefined_real
Expand Down Expand Up @@ -679,6 +687,10 @@ subroutine NoahmpIOVarInitDefault(NoahmpIO)
NoahmpIO%SEASON_GDD = undefined_real
NoahmpIO%CROPTYPE = undefined_real

! wetland model
NoahmpIO%FSATMX = undefined_real
NoahmpIO%WCAP = undefined_real

! tile drainage
NoahmpIO%QTDRAIN = 0.0
NoahmpIO%TD_FRACTION = undefined_real
Expand Down
13 changes: 13 additions & 0 deletions drivers/hrldas/NoahmpIOVarType.F90
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ module NoahmpIOVarType
integer :: IOPT_BTR ! soil moisture factor for stomatal resistance (1-> Noah; 2-> CLM; 3-> SSiB)
integer :: IOPT_RUNSRF ! surface runoff and groundwater (1->SIMGM; 2->SIMTOP; 3->Schaake96; 4->BATS)
integer :: IOPT_RUNSUB ! subsurface runoff option
integer :: IOPT_WETLAND ! wetland model option
integer :: IOPT_SFC ! surface layer drag coeff (CH & CM) (1->M-O; 2->Chen97)
integer :: IOPT_FRZ ! supercooled liquid water (1-> NY06; 2->Koren99)
integer :: IOPT_INF ! frozen soil permeability (1-> NY06; 2->Koren99)
Expand Down Expand Up @@ -192,6 +193,8 @@ module NoahmpIOVarType
real(kind=kind_noahmp), allocatable, dimension(:,:) :: CMXY ! bulk momentum drag coefficient
real(kind=kind_noahmp), allocatable, dimension(:,:) :: CHXY ! bulk sensible heat exchange coefficient
real(kind=kind_noahmp), allocatable, dimension(:,:) :: FWETXY ! wetted or snowed fraction of the canopy (-)
real(kind=kind_noahmp), allocatable, dimension(:,:) :: FSATXY ! saturated fraction of the grid (-)
real(kind=kind_noahmp), allocatable, dimension(:,:) :: WSURFXY ! wetland water storage
real(kind=kind_noahmp), allocatable, dimension(:,:) :: SNEQVOXY ! snow mass at last time step(mm h2o)
real(kind=kind_noahmp), allocatable, dimension(:,:) :: ALBOLDXY ! snow albedo at last time step (-)
real(kind=kind_noahmp), allocatable, dimension(:,:) :: QSNOWXY ! snowfall on the ground [mm/s]
Expand Down Expand Up @@ -360,6 +363,8 @@ module NoahmpIOVarType
!------------------------------------------------------------------------
real(kind=kind_noahmp), allocatable, dimension(:,:) :: TD_FRACTION ! tile drainage fraction



!------------------------------------------------------------------------
! Needed for crop model (OPT_CROP=1)
!------------------------------------------------------------------------
Expand All @@ -371,6 +376,13 @@ module NoahmpIOVarType
real(kind=kind_noahmp), allocatable, dimension(:,:) :: SEASON_GDD ! seasonal GDD
real(kind=kind_noahmp), allocatable, dimension(:,:,:) :: CROPTYPE ! crop type

!------------------------------------------------------------------------
! Needed for wetland model (OPT_WETLAND=1)
!------------------------------------------------------------------------

real(kind=kind_noahmp), allocatable, dimension(:,:) :: FSATMX ! maximum saturated fraction
real(kind=kind_noahmp), allocatable, dimension(:,:) :: WCAP ! maximum wetland capacity

!------------------------------------------------------------------------
! Single- and Multi-layer Urban Models
!------------------------------------------------------------------------
Expand Down Expand Up @@ -757,6 +769,7 @@ module NoahmpIOVarType
real(kind=kind_noahmp) :: O2_TABLE ! o2 partial pressure
real(kind=kind_noahmp) :: TIMEAN_TABLE ! gridcell mean topgraphic index (global mean)
real(kind=kind_noahmp) :: FSATMX_TABLE ! maximum surface saturated fraction (global mean)
real(kind=kind_noahmp) :: WCAP_TABLE ! maximum surface wetland capacity
real(kind=kind_noahmp) :: Z0SNO_TABLE ! snow surface roughness length (m) (0.002)
real(kind=kind_noahmp) :: SSI_TABLE ! liquid water holding capacity for snowpack (m3/m3) (0.03)
real(kind=kind_noahmp) :: SNOW_RET_FAC_TABLE ! snowpack water release timescale factor (1/s)
Expand Down
11 changes: 4 additions & 7 deletions drivers/hrldas/NoahmpInitMainMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,8 @@ subroutine NoahmpInitMain(NoahmpIO)
NoahmpIO%CMXY(I,J) = 0.0
NoahmpIO%CHXY(I,J) = 0.0
NoahmpIO%FWETXY(I,J) = 0.0
NoahmpIO%FSATXY(I,J) = 0.0
NoahmpIO%WSURFXY(I,J) = 0.0
NoahmpIO%SNEQVOXY(I,J) = 0.0
NoahmpIO%ALBOLDXY(I,J) = 0.65
NoahmpIO%QSNOWXY(I,J) = 0.0
Expand Down Expand Up @@ -187,13 +189,8 @@ subroutine NoahmpInitMain(NoahmpIO)
NoahmpIO%LAI(I,J) = 0.0
NoahmpIO%LAI(I,J) = max(NoahmpIO%LAI(I,J), 0.05) ! at least start with 0.05 for arbitrary initialization (v3.7)
NoahmpIO%XSAIXY(I,J) = max(0.1*NoahmpIO%LAI(I,J), 0.05) ! MB: arbitrarily initialize SAI using input LAI (v3.7)
if ( NoahmpIO%SF_URBAN_PHYSICS == 0 ) then
NoahmpIO%LFMASSXY(I,J) = NoahmpIO%LAI(I,J) * 1000.0 / &
max(NoahmpIO%SLA_TABLE(NoahmpIO%IVGTYP(I,J)),1.0) ! use LAI to initialize (v3.7)
else
NoahmpIO%LFMASSXY(I,J) = NoahmpIO%LAI(I,J) * 1000.0 / &
max(NoahmpIO%SLA_TABLE(NoahmpIO%NATURAL_TABLE),1.0)! use LAI to initialize (v3.7)
endif
NoahmpIO%LFMASSXY(I,J) = NoahmpIO%LAI(I,J) * 1000.0 / &
max(NoahmpIO%SLA_TABLE(NoahmpIO%IVGTYP(I,J)),1.0) ! use LAI to initialize (v3.7)
NoahmpIO%STMASSXY(I,J) = NoahmpIO%XSAIXY(I,J) * 1000.0 / 3.0 ! use SAI to initialize (v3.7)
NoahmpIO%RTMASSXY(I,J) = 500.0 ! these are all arbitrary and probably should be
NoahmpIO%WOODXY(I,J) = 500.0 ! in the table or read from initialization
Expand Down
4 changes: 3 additions & 1 deletion drivers/hrldas/NoahmpReadNamelistMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ subroutine NoahmpReadNamelist(NoahmpIO)
integer :: btr_option = 1
integer :: surface_runoff_option = 3
integer :: subsurface_runoff_option = 3
integer :: wetland_option = 0
integer :: surface_drag_option = 1
integer :: supercooled_water_option = 1
integer :: frozen_soil_option = 1
Expand Down Expand Up @@ -125,7 +126,7 @@ subroutine NoahmpReadNamelist(NoahmpIO)
btr_option, surface_drag_option, supercooled_water_option, &
frozen_soil_option, radiative_transfer_option, snow_albedo_option, &
snow_thermal_conductivity, surface_runoff_option, subsurface_runoff_option, &
pcp_partition_option, tbot_option, temp_time_scheme_option, &
wetland_option, pcp_partition_option, tbot_option, temp_time_scheme_option, &
glacier_option, surface_resistance_option, &
irrigation_option, irrigation_method, dvic_infiltration_option, &
tile_drainage_option,soil_data_option, pedotransfer_option, crop_option, &
Expand Down Expand Up @@ -325,6 +326,7 @@ subroutine NoahmpReadNamelist(NoahmpIO)
NoahmpIO%IOPT_BTR = btr_option
NoahmpIO%IOPT_RUNSRF = surface_runoff_option
NoahmpIO%IOPT_RUNSUB = subsurface_runoff_option
NoahmpIO%IOPT_WETLAND = wetland_option
NoahmpIO%IOPT_SFC = surface_drag_option
NoahmpIO%IOPT_FRZ = supercooled_water_option
NoahmpIO%IOPT_INF = frozen_soil_option
Expand Down
6 changes: 4 additions & 2 deletions drivers/hrldas/NoahmpReadTableMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -106,14 +106,14 @@ subroutine NoahmpReadTable(NoahmpIO)
BETADS, BETAIS, EG, EICE

! global parameters
real(kind=kind_noahmp) :: CO2, O2, TIMEAN, FSATMX, Z0SNO, SSI, SNOW_RET_FAC ,SNOW_EMIS, SWEMX, TAU0, &
real(kind=kind_noahmp) :: CO2, O2, TIMEAN, FSATMX, WCAP, Z0SNO, SSI, SNOW_RET_FAC ,SNOW_EMIS, SWEMX, TAU0, &
GRAIN_GROWTH, EXTRA_GROWTH, DIRT_SOOT, BATS_COSZ, BATS_VIS_NEW, &
BATS_NIR_NEW, BATS_VIS_AGE, BATS_NIR_AGE, BATS_VIS_DIR, BATS_NIR_DIR, &
RSURF_SNOW, RSURF_EXP, C2_SNOWCOMPACT, C3_SNOWCOMPACT, C4_SNOWCOMPACT, &
C5_SNOWCOMPACT, DM_SNOWCOMPACT, ETA0_SNOWCOMPACT, SNLIQMAXFRAC, SWEMAXGLA, &
WSLMAX, ROUS, CMIC, SNOWDEN_MAX, CLASS_ALB_REF, CLASS_SNO_AGE, CLASS_ALB_NEW,&
PSIWLT, Z0SOIL, Z0LAKE
namelist / noahmp_global_parameters / CO2, O2, TIMEAN, FSATMX, Z0SNO, SSI, SNOW_RET_FAC ,SNOW_EMIS, SWEMX, TAU0, &
namelist / noahmp_global_parameters / CO2, O2, TIMEAN, FSATMX, WCAP, Z0SNO, SSI, SNOW_RET_FAC ,SNOW_EMIS, SWEMX, TAU0, &
GRAIN_GROWTH, EXTRA_GROWTH, DIRT_SOOT, BATS_COSZ, BATS_VIS_NEW, &
BATS_NIR_NEW, BATS_VIS_AGE, BATS_NIR_AGE, BATS_VIS_DIR, BATS_NIR_DIR, &
RSURF_SNOW, RSURF_EXP, C2_SNOWCOMPACT, C3_SNOWCOMPACT, C4_SNOWCOMPACT, &
Expand Down Expand Up @@ -485,6 +485,7 @@ subroutine NoahmpReadTable(NoahmpIO)
NoahmpIO%O2_TABLE = undefined_real
NoahmpIO%TIMEAN_TABLE = undefined_real
NoahmpIO%FSATMX_TABLE = undefined_real
NoahmpIO%WCAP_TABLE = undefined_real
NoahmpIO%Z0SNO_TABLE = undefined_real
NoahmpIO%SSI_TABLE = undefined_real
NoahmpIO%SNOW_RET_FAC_TABLE = undefined_real
Expand Down Expand Up @@ -881,6 +882,7 @@ subroutine NoahmpReadTable(NoahmpIO)
NoahmpIO%O2_TABLE = O2
NoahmpIO%TIMEAN_TABLE = TIMEAN
NoahmpIO%FSATMX_TABLE = FSATMX
NoahmpIO%WCAP_TABLE = WCAP
NoahmpIO%Z0SNO_TABLE = Z0SNO
NoahmpIO%SSI_TABLE = SSI
NoahmpIO%SNOW_RET_FAC_TABLE = SNOW_RET_FAC
Expand Down
12 changes: 11 additions & 1 deletion drivers/hrldas/WaterVarInTransferMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,8 @@ subroutine WaterVarInTransfer(noahmp, NoahmpIO)
SoilType => noahmp%config%domain%SoilType ,&
FlagUrban => noahmp%config%domain%FlagUrban ,&
RunoffSlopeType => noahmp%config%domain%RunoffSlopeType ,&
NumSnowLayerNeg => noahmp%config%domain%NumSnowLayerNeg &
NumSnowLayerNeg => noahmp%config%domain%NumSnowLayerNeg ,&
OptWetlandModel => noahmp%config%nmlist%OptWetlandModel &
)
! -------------------------------------------------------------------------

Expand Down Expand Up @@ -77,6 +78,8 @@ subroutine WaterVarInTransfer(noahmp, NoahmpIO)
noahmp%water%state%SoilMoistureEqui (1:NumSoilLayer) = NoahmpIO%SMOISEQ (I,1:NumSoilLayer,J)
noahmp%water%state%RechargeGwDeepWT = 0.0
noahmp%water%state%RechargeGwShallowWT = 0.0
noahmp%water%state%SoilSaturateFrac = NoahmpIO%FSATXY (I,J)
noahmp%water%state%WaterStorageWetland = NoahmpIO%WSURFXY (I,J)
#ifdef WRF_HYDRO
noahmp%water%state%WaterTableHydro = NoahmpIO%ZWATBLE2D (I,J)
noahmp%water%state%WaterHeadSfc = NoahmpIO%sfcheadrt (I,J)
Expand Down Expand Up @@ -111,6 +114,7 @@ subroutine WaterVarInTransfer(noahmp, NoahmpIO)
noahmp%water%param%GroundFrzCoeff = NoahmpIO%FRZK_TABLE
noahmp%water%param%GridTopoIndex = NoahmpIO%TIMEAN_TABLE
noahmp%water%param%SoilSfcSatFracMax = NoahmpIO%FSATMX_TABLE
noahmp%water%param%WetlandCapMax = NoahmpIO%WCAP_TABLE
noahmp%water%param%SpecYieldGw = NoahmpIO%ROUS_TABLE
noahmp%water%param%MicroPoreContent = NoahmpIO%CMIC_TABLE
noahmp%water%param%WaterStorageLakeMax = NoahmpIO%WSLMAX_TABLE
Expand Down Expand Up @@ -157,6 +161,12 @@ subroutine WaterVarInTransfer(noahmp, NoahmpIO)
noahmp%water%param%SoilExpCoeffB (IndexSoilLayer) = NoahmpIO%BEXP_TABLE (SoilType(IndexSoilLayer))
noahmp%water%param%SoilMatPotentialSat (IndexSoilLayer) = NoahmpIO%PSISAT_TABLE(SoilType(IndexSoilLayer))
enddo

! spatial varying wetland parameters from input
if ( OptWetlandModel == 2 ) then
noahmp%water%param%SoilSfcSatFracMax = NoahmpIO%FSATMX(I,J)
noahmp%water%param%WetlandCapMax = NoahmpIO%WCAP(I,J)
endif

! spatial varying soil texture and properties directly from input
if ( noahmp%config%nmlist%OptSoilProperty == 4 ) then
Expand Down
2 changes: 2 additions & 0 deletions drivers/hrldas/WaterVarOutTransferMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,8 @@ subroutine WaterVarOutTransfer(noahmp, NoahmpIO)
NoahmpIO%RECHXY (I,J) = NoahmpIO%RECHXY(I,J) + (noahmp%water%state%RechargeGwShallowWT*1.0e3)
NoahmpIO%DEEPRECHXY (I,J) = NoahmpIO%DEEPRECHXY(I,J) + noahmp%water%state%RechargeGwDeepWT
NoahmpIO%SMCWTDXY (I,J) = noahmp%water%state%SoilMoistureToWT
NoahmpIO%WSURFXY (I,J) = noahmp%water%state%WaterStorageWetland
NoahmpIO%FSATXY (I,J) = noahmp%water%state%SoilSaturateFrac
NoahmpIO%SMOIS (I,1:NumSoilLayer,J) = noahmp%water%state%SoilMoisture(1:NumSoilLayer)
NoahmpIO%SH2O (I,1:NumSoilLayer,J) = noahmp%water%state%SoilLiqWater(1:NumSoilLayer)
NoahmpIO%ACC_ETRANIXY(I,1:NumSoilLayer,J) = noahmp%water%flux%TranspWatLossSoilAcc(1:NumSoilLayer)
Expand Down
5 changes: 3 additions & 2 deletions parameters/NoahmpTable.TBL
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
ISCROP = 2 ! crop land type in USGS
EBLFOREST = 13 ! evergreen broadleaf forest land type in USGS
NATURAL = 5 ! natural vegation type in urban pixel in USGS
URBTYPE_beg = 50 ! land type number above which are urban (e.g., LCZ)
URBTYPE_beg = 40 ! land type number above which are urban (e.g., LCZ)
LCZ_1 = 51 ! urban local climate zone (LCZ) type 1: compact highrise
LCZ_2 = 52 ! urban local climate zone (LCZ) type 2: compact midrise
LCZ_3 = 53 ! urban local climate zone (LCZ) type 3: compact lowrise
Expand Down Expand Up @@ -243,7 +243,7 @@
ISCROP = 12 ! crop land type in MODIS
EBLFOREST = 2 ! evergreen broadleaf forest land type in MODIS
NATURAL = 14 ! natural vegation type in urban pixel in MODIS
URBTYPE_beg = 50 ! land type number above which are urban (e.g., LCZ)
URBTYPE_beg = 40 ! land type number above which are urban (e.g., LCZ)
LCZ_1 = 51 ! urban local climate zone (LCZ) type 1: compact highrise
LCZ_2 = 52 ! urban local climate zone (LCZ) type 2: compact midrise
LCZ_3 = 53 ! urban local climate zone (LCZ) type 3: compact lowrise
Expand Down Expand Up @@ -428,6 +428,7 @@
! runoff parameters used for SIMTOP and SIMGM
TIMEAN = 10.5 ! gridcell mean topgraphic index (global mean)
FSATMX = 0.38 ! maximum surface saturated fraction (global mean)
WCAP = 0.10 ! maximum wetland capacity (tunable)
ROUS = 0.20 ! specific yield [-] for Niu et al. 2007 groundwater scheme (OptRunoffSubsurface=1)
CMIC = 0.80 ! microprore content (0.0-1.0), 0.0: close to free drainage
! parameters for snow processes
Expand Down
Loading

0 comments on commit f5a0c5b

Please sign in to comment.