Calculated/Virtual Gages

34 views
Skip to first unread message

Thomas O'Keefe

unread,
Apr 12, 2026, 1:55:19 PMApr 12
to American Whitewater StreamTeam Forum
I have access to some new tools to fix issues with what we have called virtual gages that we are now calling calculated gages.

Here is an example from the Beckler River of a calculated gage based on the relative watershed area of the South Fork Skykomish:


For the moment the editing tools require admin permissions but I have had luck fixing about 30 gages that had issues--some for ~10 years. One common issue is many formulas were pulling stage instead of discharge from the dependent gage resulting in faulty calculations.

I think I have found most of the issues but if anyone is aware of others or encounters them please let me know.

One calculated gage that I am aware of that "disappeared" is the Swift River in NH. I believe I could reconstruct it if anyone knows the formula. Several requests have come in to restore it but I don't have the formula. This is where it used to live:

Upper Swift
Message has been deleted

Skip Morris

unread,
Apr 14, 2026, 3:34:18 AMApr 14
to American Whitewater StreamTeam Forum
Here's a few below.  Don't assume just because the gauge is calculated using stage it's wrong.  Some gauges only return stage, not CFS.  Other times people supply observations in stage only.  (eg, for the Swift in NH, the gauge was calculated using a spreadsheet that had hundreds of observations with Saco gauge height, not CFS.)

And for Mexican Creek below the gauge height is actually the reservoir height above the dam spillway. There's a calculation from the book "Texas Whitewater" (authored by the late Steve Daniels) that gives you the calculation of Mexican Creek flow from water level above the spillway base of 1064.195 feet. It's not a perfect calculation since the CFS should increase the higher above the spillway the lake gets, but it's the best available.  Although now, with the lake having been at low levels for years (currently 977 feet), it means Mexican Creek (the only Class IV in Texas) is bone dry.

In NH, the Swift, the Wonalancet, and Wild Ammo were very important virtual gauges since those rivers are in the middle of the mountains and otherwise people would have to drive an hour or more to look at the paint on the rock.

/Skip
----------------------------------------------------
Here's a few:

Connecticut River at Hartland Rapids (#45673)
$flow=1.0*($gauge[134]->getValue(GMETRIC_FLOW,0)+1.0*($gauge[5309]->getValue(GMETRIC_FLOW,0)+1.0*($gauge[135]->getValue(GMETRIC_FLOW,0);$time=30;return(array(2,$flow,$time));; 0; return(array(2,$flow,$time,isset($comment) ? $comment:null

Jacques-Cartier Downstream (#49083)
$flow=($gauge[48716]->getValue(GMETRIC_M_FLOW,0)*1.66); ; return(array(13,$flow,$time,isset($comment) ? $comment:null));

Jacques-Cartier Park (#49445)
$flow=($gauge[48716]->getValue(GMETRIC_M_FLOW,0)*0.60); ; ; return(array(13,$flow,$time,isset($comment) ? $comment:null));
       
Jacques-Cartier Taureau (#49446)
$flow=($gauge[48716]->getValue(GMETRIC_M_FLOW,0)*0.33); ; ; return(array(13,$flow,$time,isset($comment) ? $comment:null));

Mexican Creek (#201491)
$stage=$gauge[79838]->getValue(GMETRIC_STAGE,0); if ($stage >= 1064.195) {$flow=($stage-1064.195)*1188.1;} else {$flow=0;}; ; return(array(2,$flow,$time,isset($comment) ? $comment:null));

Rapid (#43467)
$flow=(0.000000)+(0.080000*($gauge[4806]->getValue(GMETRIC_FLOW,0)));; $time=30;; return(array(2,$flow,$time));

Swift #5, Cabin Gorge as a function of USGS Saco (#45943)
$lowadjlimit=6.8; $lowadjfact=1.17; $stage=$gauge[49]->getValue(GMETRIC_STAGE,0); $d1h=$stage-$gauge[49]->getValue(GMETRIC_STAGE,60*60); $flow=($stage*0.61)-2.0; if ($stage < $lowadjlimit) {$flow=$flow-(($lowadjlimit-$stage)/$lowadjlimit*$lowadjfact);} if ($d1h > 0) {$flow=$flow+(1.622+0.373*log($d1h));}; $time=30;; return(array(8,$flow,$time,isset($comment) ? $comment:null));

Swift 3 stage gauge as a function of the Saco River gage in Conway (#45494)
$flow=pow($gauge[49]->getValue(GMETRIC_STAGE,0),3.01798)*.00835-($gauge[49]->getValue(GMETRIC_STAGE,0)/9.0);; $time=30;; return(array(8,$flow,$time,isset($comment) ? $comment:null));
 
Upper Pemi as a function of Pemi Woodstock and East Branch (#219831)
$flow=($gauge[57]->getValue(GMETRIC_FLOW,0)-$gauge[56]->getValue(GMETRIC_FLOW,0))*0.4;; $time=30; return(array(2,$flow,$time,isset($comment) ? $comment:null))

Warner at Laing Bridge Lane (#219143)
$flow=($gauge[70]->getValue(GMETRIC_STAGE,0)*1.018)-3.58;; $time=0; return(array(8,$flow,$time,isset($comment) ? $comment:null));

Wild AMMO at Covered Bridge CFS (#275660)
$flow=0.61*($gauge[57]->getValue(GMETRIC_FLOW,60)-$gauge[56]->getValue(GMETRIC_FLOW,90*60));; ; return(array(2,$flow,$time,isset($comment) ? $comment:null));

Wild Ammo as a function of Pemi Woodstock less East Branch (#275646)
$flow=1.7009*log($gauge[57]->getValue(GMETRIC_FLOW,0)-$gauge[56]->getValue(GMETRIC_FLOW,0))-10.72; ; ; return(array(8,$flow,$time,isset($comment) ? $comment:null));
       
Wild Ammo at Covered Bridge (#250867)
$wab=2.58-(1369.0/$gauge[58]->getValue(GMETRIC_FLOW,0)); $waa=2.98-(2255.0/$gauge[129]->getValue(GMETRIC_FLOW,0)); $wape=2.62-(1624.0/($gauge[57]->getValue(GMETRIC_FLOW,0)-$gauge[56]->getValue(GMETRIC_FLOW,0))); $flow=($wab*4.0+$waa*3.0+$wape*3.0)/10.0; if ($flow < 0) {$flow=$flow/10.0;}; $time=30;; return(array(8,$flow,$time,isset($comment) ? $comment:null));

Wonalancet as Bearcamp plus variable allowance if rising. (#219142)
$bc=$gauge[50]->getValue(GMETRIC_STAGE,0); $d1h=$bc-$gauge[50]->getValue(GMETRIC_STAGE,60*60); $d1d=$bc-$gauge[50]->getValue(GMETRIC_STAGE,60*60*24); $flow=$bc*0.54-2.45; if ($d1h > 0) {$flow=$flow+($bc*$d1h*1.0);} if ($d1d > 0) {$flow=$flow+($bc*$d1d*1.1);}; $time=30;; return(array(8,$flow,$time,isset($comment) ? $comment:null));


Skip Morris

unread,
Apr 14, 2026, 10:08:17 AMApr 14
to American Whitewater StreamTeam Forum
Here's the graph for the source data for the virtual gauge on Swift (collected by Mike Cummings). You'll see his observations were gauge height, not CFS on the Saco. You'll also notice the curve for rising values is different for falling.

SwiftCabinGorgeVSSacoUSGS-MikeCummings.jpg

Skip Morris

unread,
Apr 14, 2026, 10:28:59 AMApr 14
to American Whitewater StreamTeam Forum
Here's a graph of the differences between the rising values of the Swift vs falling values.  It's a natural log curve.  When both algorithms were combined into the single virtual gauge it was very reliable.  Paddler observations over a number of years showed the virtual gauge was almost always within 0.25 feet of the painted gauge.
USGS-Saco-Vs-Swift-Rising.jpg

DRC

unread,
Apr 14, 2026, 11:22:59 AMApr 14
to american-whitewate...@googlegroups.com

Mexican Creek is not the only Class IV in Texas.  Off the top of my head, Crabapple Creek, Dolan Falls of the Devils, Long Falls of the Llano, Teardrop Falls of Onion Creek, and Horne's Falls of Barton Creek are all Class IV, at least at certain levels.  There are other Class IV creeks mentioned in Steve's book that probably haven't been run since the book was written.  Cherokee used to be another Class IV, but a friend of mine ran it in 2025 and reported that it's almost all low-head dams now.

I hadn't heard that Steve passed.  Sad to hear that.  I attempted with varying degrees of success to update his beta for AW, but "Texas Whitewater" is still the gold standard.

DRC

--
You received this message because you are subscribed to the Google Groups "American Whitewater StreamTeam Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to american-whitewater-stre...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/american-whitewater-streamteam-forum/8b032df0-44ee-4688-967f-da46ca706d9en%40googlegroups.com.

Anthon Allred

unread,
Apr 24, 2026, 10:58:20 PM (5 days ago) Apr 24
to american-whitewate...@googlegroups.com
Why are the gauge ranges currently averaged to '0' decimal points on the
State summary pages?  For example, for gauges in stage feet, this
results in values from 1.5' to 2.499999' all being averaged to 2'.

Tony Allred Jr.

Reply all
Reply to author
Forward
0 new messages