Skip to contents

Hydraulic Estimation

A primary application for AHG relations is hydraulic simulation and approximation. AHG relationships are not only useful for translating one hydraulic variable to an estimate of another, but they can be used to parameterize the shape, roughness, and behavior of a channel for routing applications applications (e.g. see Heldmeyer 2019)

Example data

Staring with the same data in other examples, we can retain the last 10 year of data and apply an NLS filter (see section of data filtering for more)

data <- nwis %>% 
  select(date, Q = Q_cms, Y = Y_m, TW = TW_m, V = V_ms) %>% 
  date_filter(10, keep_max = TRUE) %>% 
  nls_filter(allowance = .5)

glimpse(data)
#> Rows: 85
#> Columns: 5
#> $ date <date> 1987-04-07, 2013-01-17, 2013-04-04, 2013-06-11, 2013-08-19, 2013…
#> $ Q    <dbl> 317.1486864, 21.6907048, 40.2099227, 55.2178517, 8.8631731, 7.079…
#> $ Y    <dbl> 3.7651748, 0.8401875, 1.1666478, 1.5349831, 0.5720217, 0.5648958,…
#> $ TW   <dbl> 51.81600, 35.05200, 35.35680, 33.83280, 22.25040, 22.86000, 21.85…
#> $ V    <dbl> 1.624584, 0.737616, 0.975360, 1.063752, 0.697992, 0.545592, 0.466…

Compute Roughness

Roughness defines the friction exerted by the stream bed on water flowing through it. One way to estimate roughness is to solve Manning’s equation:

\[ n = \frac{R^{2/3}S^{1/2}}{V} \]

where V is velocity, R is hydraulic radius and S is longitudinal slope.

We can use the smoothed reach-scale longitudinal slopes from the NHDPlusv2 by extracting the value for the gage we used by combining the NLDI and get_vaa() capabilities in nhdplusTools.

Following the assumptions made in the HyG Dataset we use the median depth (Y) as an approximation for R, the median Velocity (V) from the field measurement record. Thus, we report roughness which approximates the historical median measured flow at each gage.

library(nhdplusTools)

# Need to run for first use of get_vaa():
# nhdplusTools::download_vaa()

q <- get_nldi_feature(list("featureSource" = "nwissite", 
                          featureID = "USGS-01096500"))

att <- get_vaa("slope") %>% 
  filter(comid == q$comid)

(n <- compute_n(data, S = att$slope))
#> [1] 0.1377112

Compute r, d, R and p

Dingman (2018) presented analytic derivations of the AHG parameters and how the AHG coefficients are related to cross-section hydraulics and geometry. Specifically 4 variables are called out:

r

The exponent r reflects the cross-section shape where a triangle is represented by r = 1, the ‘Lane Type B stable channel’ (Henderson, 1966) by r ≈1.75, a parabola by r = 2. As r →∞, the channel becomes rectangular (Fig. 1). The value of r can be computed as:

\[ r = f/b \]

Figure 1

Figure 1

p, q, k

The exponent p (along with q) exist in Chézy and Manning uniform-flow equations. In Chézy, p = 1/2 and Manning’s, p = 2/3 while in both Chézy and Manning q = 1/2.

Since neither equation is generally dimensionally correct they require unit adjustments. and several studies have indicated that p and q have different values than assumed in the Chézy/Manning relations [e.g. Riggs (1976), Dingman and Sharma (1997), Bjerklie et al. (2005), Lopez et al. (2007), Ferguson (2007), Ferguson (2010)].

p can be computed as:

\[ p = m/f \]

The general determination of κ and p from channel characteristics (especially slope and boundary roughness) is a central problem in open-channel hydraulics that has resisted simple solution. In practice, coefficient κ and exponent p can be determined by regression of ln(V) on ln(Y)

compute_ahg(Q = data$Y,  P = data$V, type = "kp")[1,] %>% 
  rename(k = coef, p = exp)
#>   type         p        k nrmse   pb method
#> 1   kp 0.5974488 0.781589  8.43 0.56    nls

d, R

dand R are derived parameters critical to Dingman’s analytical expressions (Dingman 2018). They are based on r and p

\[ R ≡ (1 + r)/r \]

\[ d ≡ 1 + r + rp \]

To estimate the suite of these parameters, we provide the compute_hydraulic_params

fit <- ahg_estimate(data)[1,]
fit <- compute_hydraulic_params(fit)

t(fit)
#>            1
#> r  2.9348425
#> p  0.6014734
#> d  5.7000720
#> R  1.3407338
#> bd 0.1754364
#> fd 0.5148781
#> md 0.3096855

Implications

If r is determined from the channel cross-section geometry and p from the cross-section hydraulic relation, we can write the AHG relations of in terms of the channel hydraulics and geometry:

\[ W = BFW^{r+(r*p)} * (BFD/ R)^{-(1+p) / d} * Q^{1/d} \] \[ Y = BFW^{r/d} * (BFD/ R)^{1 / d} * κ^{-r/d} * Q^{1/d} \]

\[ V = BFW^{-(r*p)/d} * (BFD/ R)^{p / d} * κ^{(1+r)/d} * Q^{(-r*p)/d} \]

Generate Cross sections

cs <- cross_section(r = fit$r, 
                    TW = max(data$TW), 
                    Ymax = max(data$Y))

head(cs)
#>   ind        x        Y         A
#> 1   1 0.000000 3.552589 133.70695
#> 2   2 1.040816 3.151475 113.69994
#> 3   3 2.081633 2.781429  96.01412
#> 4   4 3.122449 2.441240  80.46464
#> 5   5 4.163265 2.129691  66.87407
#> 6   6 5.204082 1.845565  55.07242