-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Water demand and allocation in sbm
model concept
#402
Changes from 93 commits
c082441
23bd36e
2cb6449
415f798
dce4d74
2b6017a
0233a3a
bb4ea77
589b31b
709ece5
eaeb7bb
650c493
059cd30
6dc92b8
d0f3ed2
9f5939a
6a92c78
0c99ff4
900864e
3f12e69
aac650f
37f964b
d296eab
3613d2e
b17a67a
22176e2
846a565
5555b36
2e5b559
10b5465
d8e28d5
cfb61fe
b107fe6
51295ff
48f907e
0e3542e
1ae2f22
1a6159b
e131f9d
c41311c
32a3941
8852cd3
f7eda84
58ee27b
606b0b4
cdb4534
420ea4b
aeb5419
9c8ecb6
2c83c9f
195f70b
df99114
ef17ec1
ba8e679
783a089
7eafa48
6431522
62aadd7
6b06b96
3b1aa36
d022b7b
cb0552e
5b5ad10
bad9a64
fd2cad9
bc9f826
b4b5b73
8ff5155
f2ee3bf
2774a94
3adb3a4
e1063f1
f190306
ab7f208
9210fd6
4ce82ab
0aa2907
010ebfd
2d19587
c5795a9
c4e023b
46228ac
9affb62
43bc18a
9312fd2
21d845c
f393cea
9a0927c
61640d7
495c6d9
c590219
c2ca984
a24c531
ce9ecd4
b66a3df
6b5f746
486d4aa
67ca647
6d15db1
d08def6
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -54,6 +54,13 @@ External water (supply/abstraction) `inflow` [m``^3`` s``^{-1}``] can be added | |
kinematic wave for surface water routing, as a cyclic parameter or as part of forcing (see | ||
also [Input section](@ref)). | ||
|
||
## Abstractions (internal) | ||
Abstractions (internal) from the river are possible when water demand and allocation is | ||
computed through the variable `abstraction` [m``^3`` s``{-1}``], that is set from the water | ||
demand and allocation module each time step. The `abstraction` is divided by the length of | ||
the runoff pathway and subtracted from the lateral inflow of the kinematic wave routing | ||
scheme for river flow. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What if the abstraction is higher that the lateral inflow? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Then there is negative lateral inflow. Note that abstraction is limited to the available river water volume multiplied by a fixed scaling factor (0.80), including a check for negative external inflow. |
||
|
||
## Subsurface flow routing | ||
In the SBM model the kinematic wave approach is used to route subsurface flow laterally. | ||
Different vertical hydraulic conductivity depth profiles are possible as part of the | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -22,7 +22,9 @@ internal model parameter `sl`, and is listed in the Table below between parenthe | |
| `q_av` | average discharge | m``^3`` s``^{-1}``| - | | ||
| `qlat` | lateral inflow per unit length | m``^2`` s``^{-1}``| - | | ||
| `inwater` | lateral inflow | m``^3`` s``^{-1}``| - | | ||
| `inflow` | external inflow (abstraction/supply/demand) | m``^3`` s``^{-1}``| 0.0 | | ||
| **`inflow`** | external inflow (abstraction/supply/demand) | m``^3`` s``^{-1}``| 0.0 | | ||
| `inflow_wb` | inflow waterbody (lake or reservoir model) from land part | m``^3`` s``^{-1}``| 0.0 | | ||
| `abstraction` | abstraction (computed as part of water demand and allocation) | m``^3`` s``^{-1}``| 0.0 | | ||
| `volume` | kinematic wave volume |m``^3``| - | | ||
| `h` | water level | m | - | | ||
| `h_av` | average water level | m | - | | ||
|
@@ -38,6 +40,7 @@ internal model parameter `sl`, and is listed in the Table below between parenthe | |
| `lake_index` | map cell to 0 (no lake) or i (pick lake i in lake field) | - | - | | ||
| `reservoir` | an array of reservoir models `SimpleReservoir` | - | - | | ||
| `lake` | an array of lake models `Lake` | - | - | | ||
| `waterallocation`| water allocation of type `WaterAllocationRiver` | - | - | | ||
| `kinwave_it` | boolean for kinematic wave iterations | - | false | | ||
|
||
The Table below shows the parameters (fields) of struct `SurfaceFlowLand` used for overland | ||
|
@@ -210,6 +213,7 @@ the `layered_exponential` profile `kv` is used and `z_exp` is required as part o | |
| `ssfin` | inflow from upstream cells | m``^3`` d``{-1}`` | - | | ||
| `ssfmax` | maximum subsurface flow | m``^2`` d``{-1}`` | - | | ||
| `to_river` | part of subsurface flow that flows to the river | m``^3`` d``{-1}`` | - | | ||
| `volume` | subsurface volume | m``^3`` | - | | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is the subsurface water volume right? Good to make that explicit. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes, changed the description. |
||
|
||
## Local inertial | ||
|
||
|
@@ -270,7 +274,8 @@ model parameter `mannings_n`, and is listed in the Table below between parenthes | |
| `volume` | river volume | m``^3`` | - | | ||
| `error` | error volume | m``^3`` | - | | ||
| `inwater` | lateral inflow | m``^3`` s``^{-1}`` | - | | ||
| `inflow` | external inflow (abstraction/supply/demand) | m``^3`` s``^{-1}``| 0.0 | | ||
| **`inflow`** | external inflow (abstraction/supply/demand) | m``^3`` s``^{-1}``| 0.0 | | ||
| `abstraction` | abstraction (computed as part of water demand and allocation) | m``^3`` s``^{-1}``| 0.0 | | ||
| `inflow_wb` | inflow waterbody (lake or reservoir model) from land part | m``^3`` s``^{-1}``| 0.0 | | ||
| `bankfull_volume` | bankfull volume | m``^3`` | - | | ||
| **`bankfull_depth`** | bankfull depth | m | - | | ||
|
@@ -280,6 +285,7 @@ model parameter `mannings_n`, and is listed in the Table below between parenthes | |
| `waterbody` | water body cells (reservoir or lake) | - | - | | ||
| `reservoir` | an array of reservoir models `SimpleReservoir` | - | - | | ||
| `lake` | an array of lake models `Lake` | - | - | | ||
| `waterallocation`| optional water allocation of type `WaterAllocationRiver` | - | - | | ||
| `floodplain` | optional 1D floodplain routing `FloodPlain` | - | - | | ||
|
||
### [1D floodplain](@id local-inertial_floodplain_params) | ||
|
@@ -376,6 +382,18 @@ internal model parameter `z`, and is listed in the Table below between parenthes | |
| `rivercells` | river cells| - | - | | ||
| `h_av` | average water depth| m | - | | ||
|
||
## Water allocation river | ||
The Table below shows the parameters (fields) of struct `WaterAllocationRiver`, used when | ||
water demand and allocation is computed (optional), including a description of these | ||
parameters, the unit, and default value if applicable. | ||
|
||
| parameter | description | unit | default | | ||
|:--------------- | ------------------| ----- | -------- | | ||
| `act_surfacewater_abst` | actual surface water abstraction | mm Δt⁻¹ | - | | ||
| `act_surfacewater_abst_vol`| actual surface water abstraction | m``^3`` Δt⁻¹ | - | | ||
| `available_surfacewater`| available surface water | m``^3`` | - | | ||
| `nonirri_returnflow`| return flow from non-irrigation | mm Δt⁻¹ | - | | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Perhaps mention what non-irrigation consists of here as well. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Added the non-irrigation sectors. |
||
|
||
## Groundwater flow | ||
|
||
### Confined aquifer | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -51,7 +51,7 @@ profile `kv` is used and `z_layered` is required as input. | |
| **`f`** | scaling parameter (controls exponential decline of `kv_0`) | mm``^{-1}`` | 0.001 | | ||
| **`z_exp`** | Depth from soil surface for which exponential decline of `kv_0` is valid | mm | - | | ||
| **`z_layered`** | Depth from soil surface for which layered profile (of `layered_exponential`) is valid | mm | - | | ||
| **`hb`** | air entry pressure of soil (Brooks-Corey) | cm | 10.0 | | ||
| **`hb`** | air entry pressure of soil (Brooks-Corey) | cm | -10.0 | | ||
| **`soilthickness`** | soil thickness | mm | 2000.0 | | ||
| **`infiltcappath`** | infiltration capacity of the compacted areas | mm Δt``^{-1}`` | 10.0 mm day``^{-1}`` | | ||
| **`infiltcapsoil`** | soil infiltration capacity | mm Δt``^{-1}`` | 100.0 mm day``^{-1}``| | ||
|
@@ -61,6 +61,13 @@ profile `kv` is used and `z_layered` is required as input. | |
| **`waterfrac`** | fraction of open water (excluding rivers) | - | 0.0 | | ||
| **`pathfrac`** | fraction of compacted area | - | 0.01 | | ||
| **`rootingdepth`** | rooting depth | mm | 750.0 | | ||
| **`rootfraction`** | root fraction per soil layer (relative to the total root length) | - | - | | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is the total root length here the length from the surface to the bottom of the longest root? Or is it the total length of all roots, such that it can take into account that some depths have a higher root density? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It can indeed take into account that some depths have a higher root density, changed the description to make this more clear. |
||
| **`h1`** | soil water pressure head h1 of the root water uptake reduction function (Feddes) | cm | 0.0 cm | | ||
| **`h2`** | soil water pressure head h2 of the root water uptake reduction function (Feddes) | cm | -100.0 cm | | ||
| **`h3_high`** | soil water pressure head h3_high of the root water uptake reduction function (Feddes) | cm | -400.0 cm | | ||
| **`h3_low`** | soil water pressure head h3_low of the root water uptake reduction function (Feddes) | cm | -1000.0 cm | | ||
| **`h4`** | soil water pressure head h4 of the root water uptake reduction function (Feddes) | cm | -15849.0 cm | | ||
| **`alpha_h1`** | root water uptake reduction at soil water pressure head h1 (0.0 or 1.0) | - | 1.0 | | ||
| **`rootdistpar`** | controls how roots are linked to water table | - | -500.0 | | ||
| **`cap_hmax`** | water depth beyond which capillary flux ceases | mm | 2000.0 | | ||
| **`cap_n`** | coefficient controlling capillary rise | - | 2.0 | | ||
|
@@ -134,7 +141,12 @@ profile `kv` is used and `z_layered` is required as input. | |
| `waterlevel_land` | water level land | mm | - | | ||
| `waterlevel_river` | water level river | mm | - | | ||
| `total_storage` | total water storage (excluding floodplains, lakes and reservoirs) | mm | - | | ||
|
||
| `paddy` | optional paddy (rice) fields of type `Paddy` (water demand and irrigation) | - | - | | ||
| `nonpaddy` | optional non-paddy fields of type `NonPaddy` (water demand and irrigation) | - | - | | ||
| `domestic` | optional domestic water demand of type `NonIrrigationDemand` | - | - | | ||
| `livestock` | optional livestock water demand of type `NonIrrigationDemand` | - | - | | ||
| `industry` | optional industry water demand of type `NonIrrigationDemand` | - | - | | ||
| `waterallocation` | optional water allocation of type `WaterAllocationLand` | - | - | | ||
|
||
## [HBV](@id params_hbv) | ||
The Table below shows the parameters (fields) of struct `HBV`, including a description of | ||
|
@@ -378,3 +390,82 @@ specific_leaf = "Sl" | |
| `TCsand` | transport capacity of overland flow for particle class sand | ton Δt``^{-1}`` | - | | ||
| `TCsagg` | transport capacity of overland flow for particle class small aggregates | ton Δt``^{-1}`` | - | | ||
| `TClagg` | transport capacity of overland flow for particle class large aggregates | ton Δt``^{-1}`` | - | | ||
|
||
## Water demand and allocation | ||
|
||
### Paddy | ||
The Table below shows the parameters (fields) of struct `Paddy`, including a description of | ||
these parameters, the unit, and default value if applicable. The parameters in bold | ||
represent model parameters that can be set through static and forcing input data (netCDF), | ||
and can be listed in the TOML configuration file under `[input.vertical.paddy]`, to map the | ||
internal model parameter to the external netCDF variable. | ||
|
||
| parameter | description | unit | default | | ||
|:---------------| --------------- | ---------------------- | ----- | | ||
| `demand_gross` | irrigation gross demand | mm Δt``^{-1}`` | - | | ||
| **`irrigation_efficiency`** | irrigation efficiency | - | - | | ||
| **`maximum_irrigation_depth`** | maximum irrigation depth | mm Δt``^{-1}`` | 25.0 | | ||
JoostBuitink marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| **`irrigation_areas`** | irrigation areas | - | - | | ||
| **`irrigation_trigger`** | irrigation on or off | - | - | | ||
| **`h_min`** | minimum required water depth in the irrigated paddy fields | mm | 20.0 | | ||
| **`h_opt`** | optimal water depth in the irrigated paddy fields | mm | 50.0 | | ||
| **`h_max`** | water depth when paddy field starts spilling water (overflow) | mm | 80.0 | | ||
| `h` | actual water depth in paddy field | mm | - | | ||
|
||
### Non-paddy | ||
The Table below shows the parameters (fields) of struct `NonPaddy`, including a description | ||
of these parameters, the unit, and default value if applicable. The parameters in bold | ||
represent model parameters that can be set through static and forcing input data (netCDF), | ||
and can be listed in the TOML configuration file under `[input.vertical.nonpaddy]`, to map | ||
the internal model parameter to the external netCDF variable. | ||
|
||
| parameter | description | unit | default | | ||
|:---------------| --------------- | ---------------------- | ----- | | ||
| `demand_gross` | irrigation gross demand | mm Δt``^{-1}`` | - | | ||
| **`irrigation_efficiency`** | irrigation efficiency | - | - | | ||
| **`maximum_irrigation_depth`** | maximum irrigation depth | mm Δt``^{-1}`` | 25.0 | | ||
| **`irrigation_areas`** | irrigation areas | - | - | | ||
| **`irrigation_trigger`** | irrigation on or off | - | - | | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Some indication that a Boolean is expected here would be good. Or do you expect 1 and 0? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. A Boolean is expected, added it to the description. |
||
|
||
### Non-irrigation (industry, domestic and livestock) | ||
The Table below shows the parameters (fields) of struct `NonIrrigationDemand`, including a | ||
description of these parameters, the unit, and default value if applicable. The parameters | ||
in bold represent model parameters that can be set through static and forcing input data | ||
(netCDF). These parameters can be listed for the sectors industry, domestic and livestock, | ||
in the TOML configuration file under `[input.vertical.industry]`, | ||
`[input.vertical.domestic]` and `[input.vertical.livestock]`, to map the internal model | ||
parameter to the external netCDF variable. | ||
|
||
| parameter | description | unit | default | | ||
|:---------------| --------------- | ---------------------- | ----- | | ||
| **`demand_gross`** | gross industry water demand | mm Δt``^{-1}`` | 0.0 | | ||
| **`demand_net`** | net industry water demand | mm Δt``^{-1}`` | 0.0 | | ||
| `returnflow_fraction` | return flow fraction | - | - | | ||
| `returnflow` | return flow | mm Δt``^{-1}`` | - | | ||
|
||
### Water allocation land | ||
The Table below shows the parameters (fields) of struct `WaterAllocationLand`, including a | ||
description of these parameters, the unit, and default value if applicable. The parameters | ||
in bold represent model parameters that can be set through static and forcing input data | ||
(netCDF), and can be listed in the TOML configuration file under | ||
`[input.vertical.waterallocation]`, to map the internal model parameter to the external | ||
netCDF variable. | ||
|
||
| parameter | description | unit | default | | ||
|:---------------| --------------- | ---------------------- | ----- | | ||
| `irri_demand_gross` | irrigation gross demand | mm Δt``^{-1}`` | - | | ||
| `nonirri_demand_gross` | non-irrigation gross demand | mm Δt``^{-1}`` | - | | ||
| `total_gross_demand` | total gross demand | mm Δt``^{-1}`` | - | | ||
| **`frac_sw_used`** | fraction surface water used | - | 1.0 | | ||
| **`areas`** | allocation areas | - | 1 | | ||
| `surfacewater_demand` | demand from surface water | mm Δt``^{-1}`` | - | | ||
| `surfacewater_alloc` | allocation from surface water | mm Δt``^{-1}`` | - | | ||
| `act_groundwater_abst` | actual groundwater abstraction | mm Δt``^{-1}`` | - | | ||
| `act_groundwater_abst_vol` | actual groundwater abstraction | m``^3`` Δt``^{-1}`` | - | | ||
| `available_groundwater` | available groundwater | m``^3`` | - | | ||
| `groundwater_demand` | groundwater_demand |mm Δt``^{-1}`` | - | | ||
| `groundwater_alloc` | allocation from groundwater |mm Δt``^{-1}`` | - | | ||
| `irri_alloc` | allocated water for irrigation |mm Δt``^{-1}`` | - | | ||
| `nonirri_alloc` | allocated water for non-irrigation |mm Δt``^{-1}`` | - | | ||
| `total_alloc` | total allocated water |mm Δt``^{-1}`` | - | | ||
| `nonirri_returnflow` | return flow from non-irrigation |mm Δt``^{-1}`` | - | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good to explain what you mean by internal, also in
local-inertial.md
.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good point, I did leave out this confusing term and rewrote the description a bit.