Calculate the critical depth.

1 | ```
critical_depth(Q, yopt, g, B, SS)
``` |

`Q` |
Flow rate [ |

`yopt` |
Initial guess for normal depth [ |

`g` |
Gravitational acceleration [ |

`B` |
Channel bottom width [ |

`SS` |
Channel sideslope [ |

The critical depth is the water depth at which a channel flow regime will transition from supercritical to subcritical (or vice versa). Calculation of the critical depth is based on a specific energy formulation, i.e.

*E = y + z + \frac{Q^2}{2gB^2y^2}*

where *y* is the flow depth, *z* is
the elevation relative to some datum (assumed to be 0), and the last term
represents kinetic energy. More specifically, the function operates
by finding the point where the derivative of specific energy w.r.t. *y* is zero, i.e.
*y = y_c* when

*\frac{dE}{dy} = 1 - \frac{Q^2}{gA^3}\frac{dA}{dy} = 0*

.

The critical depth *y_c* [*L*].

1 2 | ```
critical_depth(250, 2, 32.2, 100, 0) # rectangular channel
critical_depth(126, 1, 9.81, 6.1, 1.5) # trapezoidal channel with sideslope 3H:2V
``` |

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.

Please suggest features or report bugs with the GitHub issue tracker.

All documentation is copyright its authors; we didn't write any of that.