Skip to content

Commit f4151be

Browse files
authored
Merge branch 'ESCOMP:main' into v3.0.1-26-g85bbe71f_tracer
2 parents d6ba771 + 75b7e3a commit f4151be

17 files changed

Lines changed: 321 additions & 365 deletions
718 KB
Loading
400 KB
Loading

docs/source/tech_note/lake_routing.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Lake water balance computation
22
================================
33

4-
mizuRoute include one method-Doll-to compute natural lake discharge, and two methods-Hanasaki and HYPE- to compute discharge for managed lake.
4+
MizuRoute include one method-Doll-to compute natural lake discharge, and two methods-Hanasaki and HYPE- to compute discharge for managed lake.
55

66
Doll model
77
--------------------------

docs/source/tech_note/reach_routing.rst

Lines changed: 79 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,66 @@
44
Overall workflow
55
======================
66

7-
#. Compute HRU (Hydrologic Response Unit, or simply catchment) mean runoff [m/s]
7+
Overall computation workflow is shown in :numref:`Figure_overall_comp_workflow`. Starting with runoff depth from netCDF or coupler (e.g. CTSM coupling),
88

9-
#. Perform overland routing with HRU mean runoff as an input to compute lateral runoff (:math:`R_{lat}`) [m/s]
9+
#. Remap runoff depth [m/s] to river network HRU (Hydrologic Response Unit or simply catchment), :math:`R_{lat}`, if runoff is given at hydrologic model HRU
1010

11-
#. Convert :math:`R_{lat}` from depth unit to volume (lateral runoff times HRU area) to get lateral discharge (:math:`q_{lat}`) [m3/s]
11+
#. Convert :math:`R_{lat}` from depth unit to volume (:math:`R_{lat}` times HRU area) to get lateral runoff volume (:math:`q_{lat}`) [m3/s]
1212

13-
#. Route lateral discharge at each river reach through river network.
13+
#. Perform hillslope routing to delay lateral runoff volume, if travel time of runoff is not counted outside mizuRoute.
1414

15-
The overland routing is optional, and currently simple unit hydrograph based on gamma distribution is used to delay instantaneous runoff.
15+
#. Route inflow from upstream and add delayed lateral discharge to routed inflow at each river reach outlet.
1616

17+
The hillslope routing method currently uses a simple unit hydrograph based on gamma distribution (only one method available) to delay instantaneous runoff.
18+
See :ref:`Hillslope routing scheme <Hillslope_routing_scheme>`).
19+
20+
The river reach routing needs to be performed in the order of upstream-to-downstream to complete the routing in the entire network.
21+
This routing order is internally computed in mizuRoute based on network topology information, ``downSegId`` (immediate downstream reach ID)
22+
23+
.. _Figure_overall_comp_workflow:
24+
25+
.. figure:: images/overall_comp_workflow.png
26+
:width: 700
27+
:height: 400
28+
29+
Overall routing procedures from runoff input into model to streamflow computation.
30+
31+
.. _Hillslope_routing_scheme:
32+
33+
Hillslope routing scheme
34+
========================
35+
36+
MizuRoute uses a similar concept to a unit-hydrograph commonly used in engineering hydrology to account for travel time of instantaneous runoff to the river reach (delay and attenuate runoff).
37+
A unit-hydrograph is defined by a hydrograph (time series of discharge) that is derived from a unit depth of excess rainfall on a drainage area within a specific time period.
38+
Here, this concept is applied to directly runoff volume over a HRU, instead of rainfall excess over a drainage area.
39+
Therefore, a unit-hydrograph represents a time series of lateral discharge into a river reach from a HRU derived from a unit volume of runoff.
40+
Here, a probability density function (PDF) is used as a unit-hydrograph, so that cumulative sum of PDF is 1.0.
41+
This means that runoff volume at a current time step is just distributed in the future, with the sum of future distributed runoff is equal to the current runoff volume (i.e., volume conserved)
42+
43+
To get actual delayed lateral flow series to the river reach, unit-hydrograph convolution is performed as below:
44+
45+
.. _Figure_uh_convolution:
46+
47+
.. figure:: images/uh_convolution.png
48+
:width: 700
49+
:height: 500
50+
51+
Illustration of discrete Unit hydrograph convolution.
52+
53+
In mizuRoute, gamma distribution is used for PDF-based unit-hydrograph and written as:
54+
55+
.. math::
56+
:label: gamma_distribution
57+
58+
f(t; a, \theta) = \frac{1}{\Gamma(a)\theta^{a}}t^{a - 1} e^{-\frac{t}{\theta}},
59+
\quad t > 0
60+
61+
where *t* is time [sec], *a* is a shape parameter [–] (a > 0), and :math:`\theta` is a timescale parameter [sec].
62+
Both the shape and timescale parameters affect the peak time of (mode of the distribution: :math:`(a - 1)\theta` and flashiness (variance of the distribution: :math:`a\theta^2` of the unit-hydrograph (UH).
63+
These UH should depend on the physical HRU characteristics. Continuous gamm distribution is descritized per time step before the convolution performed.
64+
These shape and scale parameters are currently specified as a spatially constant parameter (see :ref:`Spatially-constant parameter namelist <namelist_file>`), though they could be provided as spatially distributed parameters from river data netCDF (potential future implementation)
65+
66+
Also, please see section 3.1 in :ref:`Mizukami et al. 2016 <Mizukami2016>` for hillslope routing theory.
1767

1868
.. _River_routing_schemes:
1969

@@ -96,14 +146,37 @@ The numerical implementations of Euler kinematic wave and Diffusive wave are ess
96146
Impulse response function
97147
--------------------------
98148

149+
The impulse response function (IRF) is derived from 1-D diffusive wave equation (Eq. :eq:`0.5`). Eq. :eq:`0.5` can be solved using convolution integrals:
150+
151+
.. math::
152+
:label: 0.8
153+
154+
Q(x,t) = \int_{0}^t Q_{in}(t-s)h(x,s)ds
155+
156+
where :math:`Q_{in}` is a pulse or here input runoff volume in the river reach (e.g., inflow from HRU, or/and upstream reach), and :math:`h(x,s)` is the green function or *impulse response function*, and *x* is the distance from the inflow point in the reach to the reach location where discharge desires to be computed (i.e., HRU outlet).
99157

158+
.. math::
159+
:label: 0.9
160+
161+
h(x,t) = \frac{x}{2t \sqrt{\pi t D}} \exp(-\frac{(Ct-x)^2}{4Dt})
162+
163+
where *C* (Eq. :eq:`0.6`) is a wave celerity [m/s] and *D* (Eq. :eq:`0.7`) is a diffusivity [m\ :sup:`2`\/s].
164+
165+
This is the same concept as river routing described in Lohmann et al., (1996). Also, please see section 3.2.2 in :ref:`Mizukami et al. 2016 <Mizukami2016>`.
166+
167+
Lohmann et al., (1996) and original mizuRoute (version 1) use the *source-to-sink* approach where unique IRFs are developed for each HRU outlet (sink) to its all upstream HRUs (sources), the IRFs are applied with lateral flows from the corresponding HRUs,
168+
then routed flow from all the source HRUs are summed up to the river discharge at the target HRU outlet. This process is repeated for all the HRUs and each time step.
169+
170+
One modification made from Lohmann et al., 1996 and mizuRoute version 1 was to develop reach-specific IRF based on reach length, *C* and *D*, then apply it with inflow from the immediate upstream reach(es) to move water from upstream end to the outlet.
171+
The computed river discharge at each river reach is used as inflow of the next downstream reach. Therefore, the IRF computation is performed from upstream HRUs to downstream in the order.
172+
This approach is consistent with the other routing methods used in mizuRoute, and also requires less memory usage of IRF ordinates than source-to-sink approach, which requires storing IRFs of all the upstream HRUs for all the HRUs.
100173

101174
.. _Lagrangian_kinematic_wave:
102175

103176
Lagrangian kinmatic wave
104177
--------------------------
105178

106-
179+
Also, please see section 3.2.1 in Mizukami et al. 2016
107180

108181
.. _Euler_kinematic_wave:
109182

docs/source/users_guide/Build_model.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ Here assume that all the libaries are installed using homebrew 🍺, and gnu com
9797

9898
Execute::
9999

100-
mk -p libraries/parallelio
100+
mkdir -p libraries/parallelio
101101
./bin/git-fleximod -g .gitmodules update
102102

103103
See mizuRoute/README_EXTERNALS.rst for more details.

0 commit comments

Comments
 (0)