hydromt_wflow.WflowModel.setup_soilmaps#

WflowModel.setup_soilmaps(soil_fn: str = 'soilgrids', ptf_ksatver: str = 'brakensiek', wflow_thicknesslayers: List[int] = [100, 300, 800], output_names: Dict = {'soil__thickness': 'soil_thickness', 'soil_layer_water__brooks-corey_exponent': 'soil_brooks_corey_c', 'soil_surface_water__vertical_saturated_hydraulic_conductivity': 'soil_ksat_vertical', 'soil_water__residual_volume_fraction': 'soil_theta_r', 'soil_water__saturated_volume_fraction': 'soil_theta_s', 'soil_water__vertical_saturated_hydraulic_conductivity_scale_parameter': 'soil_f'})[source]#

Derive several (layered) soil parameters.

Based on a database with physical soil properties using available point-scale (pedo)transfer functions (PTFs) from literature with upscaling rules to ensure flux matching across scales.

Currently, supported soil_fn is “soilgrids” and “soilgrids_2020”. ptf_ksatver (PTF for the vertical hydraulic conductivity) options are “brakensiek” and “cosby”. “soilgrids” provides data at 7 specific depths, while “soilgrids_2020” provides data averaged over 6 depth intervals. This leads to small changes in the workflow: (1) M parameter uses midpoint depths in soilgrids_2020 versus specific depths in soilgrids, (2) weighted average of soil properties over soil thickness is done with the trapezoidal rule in soilgrids versus simple block weighted average in soilgrids_2020, (3) the soil_brooks_corey_c parameter is computed as weighted average over wflow_sbm soil layers defined in wflow_thicknesslayers.

The required data from soilgrids are soil bulk density ‘bd_sl*’ [g/cm3], clay content ‘clyppt_sl*’ [%], silt content ‘sltppt_sl*’ [%], organic carbon content ‘oc_sl*’ [%], pH ‘ph_sl*’ [-], sand content ‘sndppt_sl*’ [%] and soil thickness ‘soilthickness’ [cm].

A soil_mapping_fn can optionnally be provided to derive parameters based on soil texture classes. A default table soil_mapping_default is available to derive the infiltration capacity of the soil.

The following maps are added to grid:

  • soil_theta_s map:

    average saturated soil water content [m3/m3]

  • soil_theta_r map:

    average residual water content [m3/m3]

  • soil_ksat_vertical map:

    vertical saturated hydraulic conductivity at soil surface [mm/day]

  • soil_thickness map:

    soil thickness [mm]

  • soil_f map: scaling parameter controlling the decline of ksat_vertical [mm-1] (fitted with curve_fit (scipy.optimize)), bounds are checked

  • soil_f_ map:

    scaling parameter controlling the decline of soil_ksat_vertical [mm-1] (fitted with numpy linalg regression), bounds are checked

  • soil_brooks_corey_c_n map:

    Brooks Corey coefficients [-] based on pore size distribution, a map for each of the wflow_sbm soil layers (n in total)

  • meta_{soil_fn}_ksat_vertical_[z]cm map: vertical hydraulic conductivity

    [mm/day] at soil depths [z] of soil_fn data [0.0, 5.0, 15.0, 30.0, 60.0, 100.0, 200.0]

  • meta_soil_texture map: soil texture based on USDA soil texture triangle (mapping: [1:Clay, 2:Silty Clay, 3:Silty Clay-Loam, 4:Sandy Clay, 5:Sandy Clay-Loam, 6:Clay-Loam, 7:Silt, 8:Silt-Loam, 9:Loam, 10:Sand, 11: Loamy Sand, 12:Sandy Loam])

Parameters:
  • soil_fn ({'soilgrids', 'soilgrids_2020'}) – Name of RasterDataset source for soil parameter maps, see data/data_sources.yml. Should contain info for the 7 soil depths of soilgrids (or 6 depths intervals for soilgrids_2020). * Required variables: ‘bd_sl*’ [g/cm3], ‘clyppt_sl*’ [%], ‘sltppt_sl*’ [%], ‘oc_sl*’ [%], ‘ph_sl*’ [-], ‘sndppt_sl*’ [%], ‘soilthickness’ [cm]

  • ptf_ksatver ({'brakensiek', 'cosby'}) – Pedotransfer function (PTF) to use for calculation of ksat vertical (vertical saturated hydraulic conductivity [mm/day]). By default ‘brakensiek’.

  • wflow_thicknesslayers (list of int, optional) – Thickness of soil layers [mm] for wflow_sbm soil model. By default [100, 300, 800] for layers at depths 100, 400, 1200 and >1200 mm. Used only for Brooks Corey coefficients.

  • output_names (dict, optional) – Dictionary with output names that will be used in the model netcdf input files. Users should provide the Wflow.jl variable name followed by the name in the netcdf file.