weir3a5.sharpcrest()
function, the computations are exclusively based on the foot-second unit system and careful adherance by the user is required as not all coefficients are dimensionless.The discharge equation for an acceptable tail-water condition $h_t$ is $$Q = k_c k_t C b H^{1.5}$$ where $Q$ is discharge in cubic feet per second, $k_c$ is the contraction coefficient that also is a function of the abutment rounding $r$, $k_t$ is the submergence adjustment coefficient, $C$ is the discharge coefficient, $b$ is the width in feet of the weir crest, and $H$ is total free-flow head in feet on the weir assuming $h_t = 0$, which is computed by $$H = h + v_o = h + \alpha v^2/2g$$ where $h$ is static head in feet on the weir, $v_o$ is velocity head in feet in the approach section, $v$ is mean velocity in feet per second in the section computed by $v=Q/A$ for cross section area $A$ in square feet, which by default is computed by $A=(h + P)B$, but can be superceded. The quantity $g$ is the acceleration of gravity and is hardwired to 32.2 feet per square second. The dimensionless quantity $\alpha$ permits accommodation of a velocity head correction that is often attributable to cross section subdivision. The $\alpha$ is outside the scope of this documentation, is almost always $\alpha=1$, and is made available as an argument for advanced users.
The weir3a5.sharpcrest()
function is vectorized meaning that optional vectors of $h$ can be specified along with an optional and equal length vector $h_t$. The function assumes rectangular approach conditions to compute approach area $A$ if not superceded by the optional A
argument, which also can be a vector.
The weir3a5.sharpcrest()
function also permits optional vectors of $L$ and $b/B$ (by the argument contractratio
) so that tuning of the weir-computed discharge to a measured discharge potentially can be made. The crest length $L$ can be used to increase discharge slightly by shortening in say the circumstances of a slightly downward sloping crest. The $b/B$ can be used to decrease discharge by decreasing $k_c$ in say the circumstance of an inlet that is rougher or has asperities that slightly increase the expected contraction and reduce flow efficiency. To clarify, the fact that $L$ and $b/B$ can be vectorized as optional arguments shows a mechanism by which tuning of the computational results to measured $Q$ values can occur without replacing the fundamental nomographs and lookup tables of TWRI3A5 for $k_c$, $k_t$, and $C$. In all cases, these coefficients can be superceded by user-specified scalars or vectors in various combinations.
weir3a5.sharpcrest(h, ht=NULL, b=NULL, B=NULL, P=NULL, L=NULL, r=0, A=NULL, alpha=1, slopeus="vertical", kc=NULL, kt=NULL, C=NULL, contractratio=NULL, extended=TRUE, header="", resetkts=TRUE, flowdigits=2, coedigits=3, verbose=FALSE, eps=0.001, maxit=20)
contractratio
and A
to bypass any computations normally involving $B$. This would be the mechanism to bypass the $B$ as a scalar requirement;tan()
.) The string vertical must be provided as the value for slopeus
for vertical slopes;slopeus
. Optionally, this coefficient may be a vector;b.over.B[i] <- contractratio[i]
;attributes()
of the returned data frame under the non-original label name of header
;flow
of the returned data frame.data.frame()
is returned and the extended=TRUE
version is described below:
resetkts=TRUE
, because weir3a5.sharpcrest()
uses iteration to determine $H$. This practice diverges slightly from TWRI3A5 (fig.4);weir3a5.sharpcrest
.extended=FALSE
version is restricted to the most salient items including $k_t Q_H$, $Q_H$, $Q_h$, $v_o$, $C$, $k_c$, and $k_t$.
weir.sharpcrest
weir3a5.sharpcrest(0.45, L=0.125, P=0.32, b=5.81, B=5.81)
h <- seq(0.15,0.64,by=.01)
Qo <- weir3a5.sharpcrest(h, L=0.125, P=0.32, b=5.81, B=5.81)
print(Qo)
ht <- seq(0.15,0.64,by=.01)/2
weir3a5.sharpcrest(h, ht=ht, L=0.125, P=0.32, b=5.81, B=5.81)
plot(Qo$flow, Qo$head, type="l", log="xy")
Q <- weir3a5.sharpcrest(h, ht=0.21*h, L=0.125, P=0.32, b=5.81, B=5.81)
lines(Q$flow, Q$head, lty=2)
Q <- weir3a5.sharpcrest(h, ht=0.4*h, L=0.125, P=0.32, b=5.81, B=5.81)
lines(Q$flow, Q$head, lty=2)
Q <- weir3a5.sharpcrest(h, ht=0.6*h, L=0.125, P=0.32, b=5.81, B=5.81)
lines(Q$flow, Q$head, lty=2)
Q <- weir3a5.sharpcrest(h, ht=0.8*h, L=0.125, P=0.32, b=5.81, B=5.81)
lines(Q$flow, Q$head, lty=2)
Run the code above in your browser using DataLab