HomeMy WebLinkAboutAppendix B - Finalized Inflow Data Development - French Broad
1
APPENDIX B – Finalized Inflow Data Development for the French Broad River Basin
2
Section 1. Introduction
This report provides a detailed account of the inflow development for the French Broad, Pigeon, and
Nolichucky River Basins. The inflow record runs from October 1929 to September 2017.a There are
40 streamflow gages in the basin that are used in this project. These are listed in Table 1, and the key ones used as inflow locations are mapped in Figures 1a-1c. These gages have at least 10 years of daily data with which to make valid statistical comparisons with other gages. Most of the gages have incomplete records; they either started after 1930 or ended before 2017. 23 of the gages are used as
inflow locations in the model, while the rest (as well as some others outside the basin) were used just
to provide more data for fillin (see below) when computing statistics. The inflow dataset is based on “unimpaired” gage flows. Gages only show the actual flow in the stream; they have no information about what the flow would have been without human intervention.
“Impairments” are modifications of the natural flows due to change in reservoir storage (including
evaporation and precipitation on the reservoir surface) and consumptive withdrawals of water (municipal, industrial, or agricultural). If water is withdrawn above a gage and returned to the river below the gage, the impairment is the entire withdrawal.
The next section describes the process used to compute daily flows and gains. Because of the noise in
the data, it is important to look at the data at each step to find unrealistic values. These are noted later. The summary of the inflow development process was provided to the stakeholder group as a slide deck (FB_Nolichucky_Pigeon OASIS Modeling Mtg#2 10-01-2018.pptx, Oct. 2018).
a A provisional record extends beyond September 2017, but this does not account for most of the actual impairments. Future updates will require impairment data for the inflow dataset to be considered finalized.
3
Table 1. List of Gages used in the French Broad-Pigeon-Nolichucky Model Inflow Development
Site Number Site Name Period of Record
Drainage Area (sq. mi.) Basin
03439000 French Broad River at Rosman, NC 10/1935 - Present 67.9 French Broad
03439500 French Broad at Calvert, NC 1/1930 – 9/1955 103 French Broad
03440000 Catheys Creek near Brevard, NC 10/1944 – 9/2004 11.7 French Broad
03441000 Davidson River near Brevard, NC 1/1930 - Present 40.4 French Broad
03441500 Little River near Penrose, NC 10/1942 – 9/1955 41.4 French Broad
03443000 French Broad River at Blantyre, NC 1/1930 - Present 296 French Broad
03446000 Mills River near Mills River, NC 4/1934 - Present 66.7 French Broad
03446500 Clear Creek near Hendersonville, NC 7/1945 – 9/1955 42.2 French Broad
03447000 Mud Creek at Naples, NC 10/1938 – 9/1955 109 French Broad
03447500 Cane Creek at Fletcher, NC 10/1942 – 9/1958 63.1 French Broad
03447687 French Broad River near Fletcher, NC 7/2001 – Present 640 French Broad
03448000 French Broad River at Bent Creek, NC 6/1934 – 12/1986 676 French Broad
03448500 Hominy Creek at Candler, NC 10/1942 – 10/1977 79.8 French Broad
0344894205 North Fork Swannanoa River near Walkertown, NC 10/2004 – Present 14.5 French Broad
03449000 N Fork Swannanoa R nr Black Mountain, NC 2/1926 – 4/1958 23.8 French Broad
03450000 Beetree Creek near Swannanoa, NC 10/2004 - Present 5.46 French Broad
03451000 Swannanoa River at Biltmore, NC 6/1934 - Present 130 French Broad
03451500 French Broad River at Asheville, NC 1/1930 - Present 945 French Broad
03452000 Sandymush Creek near Alexander, NC 10/1942 – 9/1955 79.5 French Broad
03453000 Ivy River near Marshall, NC 4/1934 – 10/1973;
7/1994 – Present 158 French Broad
03453500 French Broad River at Marshall, NC 10/1942 - Present 1332 French Broad
03454000 Big Laurel Creek near Stackhouse, NC 4/1934 – 10/1971 126 French Broad
03454500 French Broad River at Hot Springs, NC 4/1934 – 9/1949; 8/2011
- Present 1567 French Broad
03455000 French Broad River near Newport, TN 1/1930 - Present 1858 French Broad
03456000 W Fk Pigeon R Bl Lake Logan nr Waynesville, NC 3/1954 – 12/1980 55.3 Pigeon
03456100 West Fork Pigeon River at Bethel, NC 1/1981 - Present 58.4 Pigeon
03456500 East Fork Pigeon River near Canton, NC 3/1954 - Present 51.5 Pigeon
03456991 Pigeon River near Canton, NC 1/1930 – 9/1931;
10/1932 - Present 130 Pigeon
03457000 Pigeon River at Canton, NC 1/1930 – 11/1984 133 Pigeon
03457500 Allen Creek near Hazelwood, NC 8/1949 – 10/1972 14.4 Pigeon
03459000 Jonathan Creek near Cove Creek, NC 4/1930 – 10/1972 65.3 Pigeon
03459500 Pigeon River near Hepco, NC 1/1930 – Present 350 Pigeon
03460000 Cataloochee Creek near Cataloochee, NC 4/1934 – 9/1952;
10/1962 - Present 49.2 Pigeon
03460795 Pigeon R Bl Power Plant nr Waterville, NC 2/1997 – Present 538 Pigeon
03461500 Pigeon River at Newport, TN 6/1945 – 2/1982; 3/1996 – Present 666 Pigeon
4
Site Number Site Name Period of Record
Drainage
Area (sq. mi.) Basin
03462000 North Toe River at Altapass, NC 10/1938 – 12/1957 104 Nolichucky
03463300 South Toe River Near Celo, NC 8/1957 – Present 43.3 Nolichucky
03463500 South Toe River at Newdale, NC 4/1934 – 9/1952 60.8 Nolichucky
03464000 Cane River Near Sioux, NC 4/1934 – 10/1971 157 Nolichucky
03464500 Nolichucky River at Poplar, NC 1/1930 – 9/1955 608 Nolichucky
5
Figure 1a. Map of mainstem gages used as inflow nodes in the French Broad Basin
6
Figure 1b. Map of gages used as inflow nodes in the Pigeon Basin
7
Figure 1c. Map of gages used as inflow nodes in the Nolichucky Basin
8
Section 2. Data and General Procedure
The first step in building the record is to compute the unimpaired gage flows. These computations are
contained in the spreadsheets French Broad - Inflow_Unimpairment.xlsx, Pigeon -
Inflow_Unimpairment.xlsx, and Nolichucky - Inflow_Unimpairment.xlsx. in the ‘Inflow Development’ directory. The unimpaired gage data is summarized in the French Broad_Nolichucky_Pigeon - Unimpaired Summary.xlsx file. Impairments in the basin accumulate as each downstream gage is included. For example, the impairments upstream of the Asheville gage
include the impairments on the mainstem French Broad and the tributaries upstream. The
unimpairment of a gage is calculated as follows: Unimpaired gage flow = gage flow + upstream water withdrawal (by agricultural, municipal, and industrial users) – upstream discharge (water or wastewater from municipal or industrial users,
including power plants) + upstream change in reservoir storage + upstream evaporation on the
reservoir surface - upstream precipitation on the reservoir surface. The impairment data collection effort was led by HDR and is described in a companion data collection report. HDR collected withdrawal and discharge data from databases provided by NC DWR and
stakeholders.
Evaporation and precipitation data were also collected by Hazen. Evaporation data are based on based on a USGS study of Lake Michie in Durham, NC. This has the advantage of being measured at the surface of the lake rather than in a pan, avoiding the need for a monthly adjustment factor for
converting from pan to surface. Precipitation data are based on daily measurements from the following
stations in the basin collected from the NCDC (as well as data from the City of Asheville):
• ASHEVILLE, NC US
• ASHEVILLE 1.1 NNE, NC US
• ASHEVILLE 1.2 NNW, NC US
• WAYNESVILLE 4.1 NNW, NC US
• WAYNESVILLE 0.7 ENE, NC US
• WAYNESVILLE 1 E, NC US
• SPRUCE PINE 1 SW, NC US
• ALTAPASS, NC US
• SPRUCE PINE 2 S, NC US
• SPRUCE PINE, NC US
• BAKERSVILLE 2.5 SE, NC US
• SPRUCE PINE 4.5 WSW, NC US
• CANE RIVER, NC US
• BAKERSVILLE, NC US
• BURNSVILLE AG, NC US
• NOLICHUCKY DAM, TN US
• SPRUCE PINE 2 NE, NC US
• MARS HILL 5.0 NNE, NC US
• MARSHALL, NC US
Data from the station closest to a reservoir are used to estimate the precipitation at the reservoir. When these data are missing, data from the next nearest station are used, and so on. For each reservoir,
Hazen calculated a daily timeseries of net evaporation (or the difference between evaporation and precipitation) for the hydrologic record. These data are contained in spreadsheets in the “Evap-Precip” folder. These data are used to (1) estimate the historic change in reservoir storage due to net evaporation and (2) estimate net evaporation on the reservoir surface during OASIS model simulation.
9
The streamflow data for 29 gages was unimpaired. The other gages are on rivers where impairments
are negligible or not quantified, or not required for the inflow methodology. A timeline showing the period of record of the gages used for inflow development is shown in Figures 3a-c.
10
Figure 3a. Timeline of French Broad gages used for inflow development
11
Figure 3b. Timeline of Pigeon gages used for inflow development
12
Figure 3c. Timeline of Nolichucky gages used for inflow development
13
The second step in inflow development is to compute the gains – i.e., the local inflow between two gages. This is done by subtracting the upstream gage flow(s) from the next downstream gage flow.
Gains calculations are done using the Python script compute_gains.py. The third step in the inflow development process is to fill in the missing flows and gains for each gage with missing records. This requires assembling a monthly record of unimpaired flows and gains based
on the daily unimpaired data computed above. These flows and gains are fed into a program named
fillin (developed by William Alley and Alan Burns of the USGSb). We will refer to these as “extended” flows and gains. This is done on a monthly basis because fillin only works with monthly data. Fillin completes the missing record of flows and gains by selecting the mostly highly correlated gages. The gages associated with the flows and gains used in the remainder of this document are
shown in Table 2. Before undertaking these steps, we made some simplifications to certain gage records. The French Broad near Rosman and Calvert gages were combined into one record.
The French Broad near Fletcher and Bent Creek gages were combined into one record. Long term inflows for Asheville’s North Fork and Bee Tree Reservoirs (developed by Hazen for the city’s own OASIS model) were treated as gage records for the purposes of inflow development
b “Mixed-Station Extension of Monthly Streamflow Records,” Journal of Hydraulic Engineering, ASCE, Vol. 109, No. 10, October 1983.
14
Table 2. Gages Where Flows and Gains Are Computed
Flow or Gain
Gain Calculation
French Broad
Rosman Flow
Catheys Flow
Davidson Flow Little Flow Balntyre Gain Blantyre – Rosman – Catheys – Davidson – Little
Mills Flow
Cane Flow
Mud Flow
Fletcher Gain Fletch – Blantyre – Mills – Cane - Mud
North Fork Flow Bee Tree Flow Hominy Flow
Asheville Gain Asheville – Fletcher - North Fork – Bee Tree – Hominy
Ivy Flow
Marshall Gain Marshall – Asheville - Ivy
Big Laurel Flow
Hot Springs Gain Hot Springs – Marshall – Big Laurel Pigeon
Canton Flow
Jonathan Flow Hepco Gain Hepco – Canton - Jonathan
Cataloochee Flow
Nolichucky
North Toe Flow
South Toe Flow
Cane R Flow
Poplar Gain Poplar – North Toe – South Toe – Cane The fourth step is to apportion the extended flows and gains to make sure that their volumes match
downstream unimpaired gage flows. The monthly flows and gains are then disaggregated into daily
values using local, unimpaired gages. These steps are described in detail in Section 3.
15
Section 3. Computation of Extended Gage Flows and Reach Gains
All the computations outlined in this section are done on monthly data, which reduces noise and is
required for statistical hydrology programs like fillin. Noisy data occurs when time of travel differences occur or when the impairment data create artificial variation in the flows. First, the actual gains are determined from the unimpaired gage flows as described previously. Next,
fillin is run to compute the extended flows and gains for the gages with missing records. Note that
fillin preserves the actual flows and gains where they exist. These extended flows and gains are then “scaled.” The objective of scaling is to ensure that the sum of filled-in flows upstream of a gage with an actual record equals the actual unimpaired flow at that gage. The fillin program does not ensure this for two reasons. First, it utilizes only a single correlated record for each value generated, thus ignoring
sums, and second, it works with log transforms, and not actual flows.
Here is an example. We want to compute the unimpaired flow at the Ivy River gage and unimpaired gain at the Marshall gage from 1973 – 1994 when the Ivy River gage data are missing. As a result, we have no actual (unimpaired) flow at Ivy River and no actual gain at Marshall.
So we extend the gage record at Ivy River and extend the gain at Marshall using fillin. Now we want to adjust those extended values so that the sum of the flows at Ivy River, Asheville, and the remaining gain down to Marshall match the unimpaired flow at Marshall. So we maintain the Marshall flow less the flow at Asheville by scaling with the sum of the Ivy River and the Marshall extended gain.
The calculation is: Scaled Marshall extended gain = (Marshall flow – Asheville flow)* (Marshall extended gain) / (Marshall extended gain + Ivy River extended flow)
The companion calculation for the flow at Ivy River is: Scaled Ivy River extended flow = (Marshall flow – Asheville flow)* (Ivy River extended flow ) / (Marshall extended gain + Ivy River extended flow)
Thus the sum of the actual unimpaired flow (Asheville) and the scaled flow (Ivy River)) and scaled gain (Marshall) equals the unimpaired gage flow at Marshall. This way, we ensure that the total volume of all the flows and gains, be they actual or extended,
upstream from a given gage match the unimpaired flow at the gage, preserving the unimpaired gaged
flows. These computations are done in the Python script scale_flow_gain.py. The script contains all of the
scaling equations for each flow or gain that needs to be scaled for different time periods.
16
The next step is to disaggregate the monthly flows into daily flows. This is done using flows for a daily, unimpaired gage that is local or has similar drainage area (call it a “reference gage”) along with
our monthly flows. We multiply the monthly value by the ratio of that day’s flow to that month’s flow at the reference gage. The disaggregation formula is: daily ratio = daily reference value / monthly reference value daily computed value = monthly computed value * daily ratio
The disaggregation calculations are done in the spreadsheet FB-Pigeon_Noli_Inflow_Dissaggregation.xlsx. The gages used to disaggregate flows and gages for different time periods are shown in the spreadsheet.
It is important to note that we are not trying to replicate history in computing the OASIS inflows; rather, we are trying to build daily flows whose variation is representative of history while preserving unimpaired gaged flows as “ground truth”. Note that actual daily values of unimpaired gage flows are often maintained in the script files. Actual
daily gains between gages are generally not maintained due to their “noise”, so the script files aggregate them monthly and then disaggregate them back to daily values using a locally unimpaired gage. Therefore, actual flows and gains on a monthly basis are maintained, but generally the former will only be maintained on a daily basis.
The following is an example of a scaling equation for the French Broad River near Blantyre gain for different time periods. As different gages come online or go offline, the scaling equations need to be adjusted to account for the gaps in records.
The scaling script referenced above contains full details on which gages were scaled for which months
for the entire basin.
17
French Broad River Blantyre Gain 1930 – 1942 BlantG = (BlantF - RosmnF - DavidF) * BlantXG / (BlantXG + CathyXF + LittRXF) 1942 – 1944 BlantG = (BlantF - RosmnF - DavidF - LittRF) * BlantXG / (BlantXG + CathyXF)
1944 – 1955 No Scaling 1955 – 1986 BlantG = (BlantF - RosmnF - DavidF) * BlantXG / (BlantXG + CathyXF + LittRXF) 1986 – 2004 BlantG = (BlantF - RosmnF - DavidF - CathyF) * BlantXG / (BlantXG + LittRXF) 2004 – 2017 BlantG = (BlantF - RosmnF - DavidF) * BlantXG / (BlantXG + CathyXF + LittRXF)
F = actual or scaled flow at a gage XF = “extended” flow at a gage as computed by fillin when actual flows do not exist G = actual or scaled gain, or inflow, between two locations, which is the difference of u/s gage F and d/s gage F
XG = extended gain between two locations as computed by fillin when actual gains do not exist
18
Section 4. Computing Inflows at OASIS Nodes from the Flows and Gains
To assign inflows to points in the model between USGS gages (i.e. reservoirs, intakes, and other points
of interest), the final disaggregated unimpaired gage flow dataset is apportioned by drainage area to those points. The drainage areas for non-gage locations were taken from local water supply plans and supplemented with the USGS StreamStats website. The computations are done “on the fly” using an OASIS run that invokes the OCL file called set_inflows.ocl. The comments of that OCL file (provided
in Appendix A) show in detail the calculations being made.
19
Section 5. Error Checking and Inflow Filtering
As noted in Section 1, because of the noisy data, a lot of error checking is necessary. These are some
of the errors that can occur. Often the available impairment data is only available on a monthly average
basis, which can cause issues when applying to daily gage flows.
• Negative unimpaired gage flow. These are physically impossible and should be corrected
unless the value is small, say between 0 and -10 cfs, because the impact is negligible.
• Negative gains. These are sometimes legitimate. However, there are times when a flood hits a gage at the very end of the month, while not arriving at the gage downstream until the beginning of the next month. This can cause a highly negative gain in the first month and a
highly positive gain the next month. These should be corrected.
• There are pathological cases where the scaling can cause one gage to have a large positive flow, while the adjacent gage has a large negative flow. This can occur when the two extended
values are similar in magnitude but opposite in sign. These need to be adjusted.
• For this work, the changes are tracked in the file hand_mods.xlsxx.
No daily adjustments were made for the basin. Monthly flows were adjusted in the “Unimp
Adjustments” sheet of hand_mods.xlsx. Revisions were done for certain flows and gains in the unimpaired.dss. To prevent model infeasibility from provisional inflows (see Appendix C), we added code in the OCL
to filter remaining daily negative inflows. The negative inflow is “stored” until there is a sufficiently
positive inflow to release the accumulated negative flows, thereby preserving mass over a multi-day period. Since the negative inflows are generally very small and infrequent, the filtering has negligible impact on being able to match the monthly unimpaired gage flow.
To test that all flows, gains, and drainage areas have been properly accounted for, we check that the
“reconstituted,” unimpaired gage flows match the actual unimpaired gage flows. In this case, reconstituted means that the flow at a given gage is computed by summing the appropriate upstream flows and gains. File gage_comp.xlsx compares the actual monthly unimpaired gage flows with the computed values from the scaling and disaggregation process.
20
Section 6. Time of Travel / Flow Routing
To account for time of travel between points along the main stem of the French Broad, flow routing
has been incorporated in both the development of inflows and the handling of flows within the model. The locations and lag coefficients were provided by DWR. For this basin, only one time of travel reach was recommended – from the French Broad at Rosman gage down to the Blantyre gage. Flow routing for the development of inflows is handled in the inflow unimpairment spreadsheet and the gains
calculations. Flow routing within the model is handled in the OCL file routing.ocl. The routing
equations used for each gain are as follows: Routed Rosman Gage to Blantyre Gage = 1 day lag
Note that the computation of gains may include subtracting the flows from tributaries in the reach (see
Section 3), which are not routed. Given the extensive network of gages in the basin, mostly on tributaries, routing is generally not needed for this model. The daily routed timeseries are averaged monthly; the monthly flows are used to compute gains for the
above-mentioned reaches by subtracting from the monthly downstream un-routed flow. No routing is
necessary when disaggregating to daily flows since gains are disaggregated using a representative local unimpaired gage flow. For inflow development, upstream flows are routed before being subtracted from the downstream flow
to compute a gain. In the model runs, routing is handled using a routing reservoir, which holds back
upstream flows for the appropriate amount of time before releasing downstream.