HomeMy WebLinkAbout03_CFNM_Appendix_B1_-_Cape_Fear_Finalized_Inflow_Data_Development
1
APPENDIX B1 –
Finalized Inflow Data Development for the Cape Fear River Basin
2
Section 1. Introduction
This report provides a detailed account of the inflow development for the Cape Fear River Basin.
These inflows are used in the Cape Fear portion of the combined Cape Fear/Neuse OASIS model.
The inflow record runs from January 1930 to September 2011.1 There are 45 streamflow gages
in the basin and one gage in an adjacent basin that are used in this project. These are listed in
Table 1. Most of the gages have incomplete records; they either started after 1930 or ended before 2011. Some of the gages 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. As discussed
in more detail in the appended document, the inflow development method ensures that the monthly unimpaired flows at the gage locations match.
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.
1 A provisional record extends beyond September 2011, but this does not account for actual impairments. Future updates will require impairment data for the inflow dataset to be considered finalized.
3
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 spreadsheets in the “Unimpairment of gage data” directory. The unimpaired gage data is summarized in the unimpaired.xls file. They are identified by sub-basin, which is consistent with the approach used in the original inflow development by the
previous consultant. The sub-basins are identified by the number of the most downstream gage
in that sub-basin. Impairments in the basin accumulate as each downstream sub-basin is
included. For example, the impairments upstream of the Cape Fear River include the impairments on the Haw River and Deep River. 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 discharge and withdrawal data were obtained by Moffatt and Nichol and NC DWR. The
reservoir storage data were obtained by NC DWR from the reservoir owner/operator. Records for the largest reservoir, Jordan Lake, are available from the Army Corp of Engineers (Corps) since project inception in the early 1970s, although normal operation did not begin until 1982
when the reservoir had completely filled.
Evaporation and precipitation data were collected by HydroLogics. Evaporation data are based on daily measurements from the Chapel Hill station, which is the only long-term station in the basin. When measurements are missing, the long-term monthly averages are used. Precipitation
data are based on daily measurements from the following long-term stations: Graham,
Greensboro, High Point, Siler City, Chapel Hill, Reidsville, Randleman, and Fayetteville. 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. For each reservoir, HydroLogics 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.
HydroLogics unimpaired the streamflow data for twelve gages, which are highlighted in bold in
Table 1. The other gages are on rivers where impairments are negligible or not quantified.
4
Table 1. List of Gages
USGS Number Description Period of Record Ref. Num. Ref. Name Drainage Area
02093500 Haw R. nr. Benaja <1930 - 9/71 34 benaj 168
02093800 Reedy Fork nr. Oak Ridge 10/55 - present 33 oakri 20.6
02094500 Reedy Fork nr. Gibsonville 9/28 - present 32 gibso 131
02095000 S.Buffalo Ck nr. Greensboro 8/28 - 9/58; 8/98 - present 35 sbuff 15.4
02095500 N.Buffalo Ck nr. Greensboro 8/28 - 10/90; 8/98 - present 36 nbuff 37.1
02096000 Stony Ck nr. Burlington 8/52 - 9/59 30 burli 44.2
02096500 Haw R. at Haw R. 10/28 - present 31 hawri 606
02096700 Big Alamance Ck nr. Elon College 9/57 - 9/80 29 elonc 116
02096846 Cane Ck nr. Orange Grove 11/88 - present 26 orang 7.54
02096850 Cane Ck nr. Teer 10/59 - 9/73 25 teerx 33.7
02096960 Haw R. nr. Bynum 10/73 - present 28 bynum 1275
02097000 Haw R. nr. Pittsboro 1928 - 9/73 27 hrpit 1310
02097314 New Hope Ck nr. Blands 10/82 - present 22 bland 75.9
02097517 Morgan Ck nr. Chapel Hill 11/82 - present 23 chape 41
02098000 New Hope R. nr. Pittsboro 3/49 - 9/73 21 nhrpi 285
02098500 W.Fork Deep R. nr. High Pt 1928 - 9/58 44 wfdrh 32.1
02099000 Deep R. nr. High Point 7/28 - 3/94; 10/97 - present 45 highp 14.8
02099500 Deep R. nr. Randleman 10/28 – 09/2004 42 randl 125
02100000 Muddy Ck nr. Archdale 6/34 - 12/41 43 archd 16.7
02100500 Deep R. at Ramseur 11/22 - present 41 ramse 349
02101000 Bear Ck nr. Robbins 10/39 - 9/71 40 robbi 134
0210166029 Rocky R. nr. Crutchfield Crossroads 5/88 - present 38 crutc 7.42
02101800 Tick Ck nr. Mount Vernon Springs 7/58 - 9/81; 1/94 - present 39 mvspr 15.5
02102000 Deep R. at Moncure 8/30 - present 37 moncu 1434
02102192 Buckhorn Ck nr. Corinth 6/72 - present 20 corin 76.3
02102500 Cape Fear R. at Lillington 12/23 - present 19 lilli 3464
02102908 Flat Ck nr. Inverness 7/68 - present 16 inver 7.63
02103000 Little R. nr. Manchester 10/38 - 9/50 17 manch 348
02103500 Little R. at Linden 1928 - 6/71 18 linde 459
02104220 Rockfish Ck at Raeford 7/88 - present 15 raefo 93.1
02104500 Rockfish Ck nr. Hope Mills 1929-12/31; 3/39 - 12/54 14 hopem 292
02105500
Cape Fear at Huske Lk nr.
Tarheel 10/37 - present 13 tarhe 4852
02105769 Cape Fear R. at Lock 1 nr. Kelly 7/69 - present 12 cfrke 5255
02105900 Hood Ck nr. Leland 10/56 - 9/73; 10/93 - present 1 lelan 21.6
02106000 Little Coharie Ck nr. Roseboro 2/50 - 3/92 4 roseb 92.8
02106500 Black R. nr. Tomahawk 10/51 - present 5 tomah 676
02107000 South R. nr. Parkersburg 10/51 - 9/86 3 parke 379
02107500 Colly Ck nr. Kelly 2/50 - 9/71 2 cckke 103
02107600 NE Cape Fear R. nr. Seven Springs 8/58 - 9/75 11 seven 47.5
0210789100 Grove Ck at Kenansville 8/82 - 9/90 8 kenan 22.6
02108000 NE Cape Fear nr. Chinquapin 8/40 - present 9 chinq 599
02108500 Rockfish Ck nr. Wallace 8/55 - 9/81 7 rckwa 69.3
02085500 Flat R. at Bahama 8/25 - present baham 149
5
Timeline for Gage Data
0
2
4
6
8
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
42
44
46
1930 1935 1940 1945 1950 1955 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005
Ga
g
e
R
e
f
e
r
e
n
c
e
N
u
m
b
e
r
The second 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 USGS2). We
will refer to these as “extended” flows and gains. This is done on a monthly basis because fillin
only works with monthly data. The gages associated with the flows and gains used in the
remainder of this document are shown in Table 2. The third step is to apportion the extended
flows and gains to make sure that their volumes match downstream unimpaired gage flows. Then, the monthly flows and gains are disaggregated into daily values using local, unimpaired
gages. These steps are described in detail in Section 3.
The last step in the process is to compute the OASIS nodal inflows based on the flows and gains
computed above. This step is described in detail in Section 4.
Before undertaking these steps, we made some simplifications to certain gage records. On the
Haw River, two major gages were combined into one. The gages near Bynum (reference
Bynum) and Pittsboro (reference Hrpit) are adjacent (drainage areas are 1275 mi2 and 1310 mi2,
2 “Mixed-Station Extension of Monthly Streamflow Records,” Journal of Hydraulic Engineering, ASCE, Vol. 109, No. 10, October 1983.
2011
6
respectively). Between them, they have a complete but non-overlapping record. We scaled the
Bynum flows by 1310 / 1275 and treated the new flows as part of the Pittsboro record, thus
making one long record at Pittsboro.
The record of the gage on the Deep River at Moncure starts July 1930. We extended the record
using fillin from January to June and used it as if it were the actual record, making that gage a
complete record. The same treatment was given to the gage on the Cape Fear River near Tarheel
(the most downstream gage with a long-term record) to generate the record from January 1930 through September 1937, and the Deep River at Randleman, to generate a record from when the
gage ended in October 2004 through present. Again, this was used as if it were actual record,
making that gage a complete record. Both of these extensions were done prior to any of the
work whose description follows.
Table 2. Gages Where Flows and Gains Are Computed
Gage Flow or Gain Gain Calculation
Oakri Flow
Gibso Gain Gibso flow - Oakri flow
Nbuff Flow
Benaj Flow
Hawri Gain Hawri flow - Gibso flow - Nbuff flow - Benaj flow
Hrpit Gain Hrpit flow - Hawri flow
Nhrpi Flow
Wfdrh Flow
Randl Gain Randl flow - Wfdrh flow
Ramse Gain Ramse flow - Randl flow
Moncu Gain Moncu flow - Ramse flow
Lilli Gain Lilli flow - Hrpit flow - Nhrpi flow - Moncu flow
Linde Flow
Tarhe Gain Tarhe flow - Linde flow - Lilli flow
Cfrke Gain Cfrke flow - Tarhe flow
Note that the gains at Lillington and Kelly are are calculated with consideration made to the time of travel (flow routing) along the Cape Fear. See Section 6 for more information.
7
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. These computations are
done with the DSSVue script, compute_gain.py. 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 flow at Benaj (reference name for the Haw River
near Benaja gage) and gain at Hawri (reference name for the Haw River at Haw River gage)
from October 1971 to October 1990 when the Benaj gage has no record. Because there is no record at Benaj, we have no actual flow at Benaj and no actual gain at Hawri. We extended the gage record at Benaj and extended the gain at Hawri using fillin. Now we want to adjust those
extended values so that the sum of the flows at Benaj, Nbuff, and Gibso and the remaining gain
down to Hawri match the unimpaired recorded flow at Hawri. So we say that we maintain the
Hawri flow less the flows at Nbuff and Gibso by scaling with the sum of the Benaj extended flow and the Hawri extended gain. The calculation is:
Hawri scaled gain = (Hawri flow – Nbuff flow – Gibso flow) * Hawri extended gain /
(Hawri extended gain + Benaj extended flow)
The companion calculation for the flow at Benaj is:
Benaj scaled flow = (Hawri flow – Nbuff flow – Gibso flow) * Benaj extended flow /
(Hawri extended gain + Benaj extended flow)
Thus the sum of the actual unimpaired gage flows (Nbuff and Gibso) and the scaled flow (Benaj) and scaled gain (Hawri) equals the unimpaired gage flow at Hawri, or,
Nbuff flow + Gibso flow + Benaj scaled flow + Hawri scaled gain = Hawri unimpaired
gage flow In 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 gaged flows.
The DSSVue script used to do these calculations is scale_flow_gain.py. The output is the file
8
scale_flow_gain.dss, which contains monthly flows and gains.
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
Two DSSVue scripts are used to do this step: convert_month_to_day.py and disaggregate.py.
DSSVue cannot work on two records with different time steps, so the first step is to convert the
monthly value to daily. For example, the gain at Gibso for January 1930 is 75 cfs; converting the monthly flow to daily gives 75 cfs for each day in the month. The first script converts the
monthly flows to daily flows for each location where we need them. The second script computes
the daily flows and gains as shown above.
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 gaged flows as “ground truth”.
The remainder of this section shows the details in how the records were extended and
disaggregated. This is the short hand used in the remainder of this document:
d/s = downstream
u/s = upstream
DA = drainage area
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
9
Haw River
Reedy fork near Oak Ridge FLOW (Oakri, 33), 10/55 - present
D/s gage used in computations is Gibso. 01/30 – 09/55 OakriF = GibsoF * OakriXF / (OakriXF + GibsoXG), disaggregate with NbuffF
10/55 – 09/11 use actual daily values
Reedy Fork near Gibsonville GAIN (Gibso, 32), full record Computed gain at Gibso is GibsoF – OakriF 01/30 – 09/55 GibsoG = GibsoF * GibsoXG / (OakriXF + GibsoXG)
10/55 – 09/11 GibsoG = GibsoF – OakriF
Disaggregate whole record with BahamF since DA is a better match than Oakri
North Buffalo Ck near Greensboro FLOW (Nbuff, 36), 08/28 – 10/90, 8/98 - present Other gages used in computations are Gibso, Benaj, and Hawri
01/30 – 10/90 use actual daily values
11/90 – 07/98 NbuffF = (HawriF – GibsoF) * NbuffXF / (NbuffXF + BenajXF + HawriXG),
disaggregate with OakriF 08/98 – 09/11 use actual daily values
Haw R. at Benaja FLOW (Benaj, 34), <1930 – 09/71
Other gages used in computations are Gibso and Nbuff, which are parallel, and Hawri, which
is d/s. 01/30 – 09/71 use actual daily values 10/71 – 10/90 BenajF = (HawriF – NbuffF – GibsoF) * BenajXF / (BenajXF + HawriXG)
11/90 – 07/98 BenajF = (HawriF – GibsoF)*BenajXF / (NbuffXF + BenajXF + HawriXG)
08/98 – 09/11 HawriG = (HawriF – NbuffF - GibsoF) * BenajXF / (BenajXF + HawriXG)
Disaggregate 10/71 – 09/11 with BahamF Haw R. at Haw River GAIN (Hawri, 31), full record
Other gages used in computations are Gibso, Nbuff, and Benaj, all of which are u/s.
01/30 – 09/71 HawriG = HawriF – NbuffF – BenajF – GibsoF
10/71 – 10/90 HawriG = (HawriF – NbuffF – GibsoF) * HawriXG / (BenajXF + HawriXG) 11/90 – 07/98 HawriG = (HawriF – GibsoF) * HawriXG / (NbuffXF + BenajXF +HawriXG)
08/98 – 09/11 HawriG = (HawriF – NbuffF – GibsoF) * HawriXG / (BenajXF + HawriXG)
Disaggregate whole record with BahamF
Haw R. at Pittsboro GAIN (Hrpit, 27), full record 01/30 – 07/40 HrpitG = HrpitF – HawriF, disaggregate with BenajF
08/40 – 09/11 HrpitG = HrpitF – HawriF, disaggregate with ChinqF
New Hope R. near Pittsboro FLOW (Nhrpi, 21), 03/49 – 09/73
Gage Nhrpi has no overlap with Bland or Chape, so we cannot compute any real gain into Nhrpi. Incremental DA along Haw to the Lilli gage is some 600 – 700 sm, so we need to take
10
into account the Nhrpi gage. We could take Corin into account, but has no overlap with Nhrpi,
and Nhrpi is some four times bigger than Corin, so we will compute the gain at Lilli with Nhrpi.
Use Moncu, Nhrpi, and Hrpit, which are parallel, and Lilli, which is d/s.
01/30 – 02/49 NhrpiF = (LilliF – MoncuF – HrpitF) * NhrpiXF / (NhrpiXF + LilliXG),
disaggregate with BenajF
03/49 – 09/73 use actual daily values.
10/73 – 09/11 NhrpiF = (LilliF – MoncuF – HrpitF) * NhrpiXF / (NhrpiXF + LilliXG), disaggregate with BahamF
Deep River
W.Fork Deep R. near High Point FLOW (Wfdrh, 44), 10/28 – 9/58
We could use Highp for this computation, which at 14.8 square miles is only 12% of the drainage area at Randl. Despite its shorter record, it seems better to use the Wfdrh gage, which is 32.1 square miles, or 26% of Randl.
01/30 – 09/58 use actual daily values
10/58 – 09/11 WfdrhF = RandlF * WfdrhXF / (WfdrhXF + RandlXG), disaggregate with
OakriF Deep R. near Randleman GAIN (Randl, 42), full record
01/30 – 09/58 RandlG = RandlF - WfdrhF
10/58 – 09/11 RandlG = RandlF * RandlXG / (WfdrhXF + RandlXG)
Disaggregate whole record with BahamF Deep R. near Ramseur GAIN (Ramse, 41), full record
01/30 – 09/11 RamseG = RamseF – RandlF, disaggregate with BahamF
Deep R. at Moncure GAIN (Moncu, 37), full record, except the first six months, which are filled in. Gage Robbi (40) has less than half the record, and it is small compared to Moncu, so just compute the gain from the long-term records.
01/30 – 07/40 MoncuG = MoncuF – RamseF, disaggregate with BenajF
08/40 – 09/11 MoncuG = MoncuF – RamseF, disaggregate with ChinqF
Cape Fear River Cape Fear R. at Lillington GAIN (Lilli, 19), full record
01/30 – 07/40 LilliG = (LilliF – MoncuF – HrpitF) * LilliXG / (LilliXG + NhrpiXF),
dissagregate with BenajF
08/40 – 02/49 LilliG = (LilliF – MoncuF – HrpitF) * LilliXG / (LilliXG + NhrpiXF), disaggregate with ChinqF 03/49 – 09/73 LilliG = LilliF – MoncuF – HrpitF – NhrpiF, disaggregate with ChinqF
10/73 – 09/11 LilliG = (LilliF – MoncuF – HrpitF) * LilliXG / (LilliXG + NhrpiXF) ,
disaggregate with ChinqF
11
Little R. at Linden FLOW (Linde, 18), 1928 – 06/71
01/30 – 06/71 use actual daily values
07/71 – 09/11 LindeF = (TarheF – LilliF) * LindeXF / (LindeXF + TarheXG), disaggregate with ChinqF
Cape Fear R. at Tarheel GAIN (Tarhe, 13), full record
01/30 – 06/71 TarheG = TarheF – LilliF – LindeF, disaggregate with LindeF
07/71 – 09/11 TarheG = (TarheF – LilliF) * TarheXG / (LindeXF + TarheXG), disaggregate with ChinqF
Cape Fear R. at Lock nr. Kelly GAIN (Cfrke, 12), 7/69 – present
This is the most downstream gage on the Cape Fear River, so there is nothing to reference the
extended flows to. 01/30 – 07/40 CfrkeG = CfkreF – TarheF, disaggregate with LindeF
08/40 – 09/11 CfrkeG = CfkreF – TarheF, disaggregate with ChinqF
The result of the computations in this section is a set of monthly and daily flows and
gains at each of the locations shown in Table 2.
12
Section 4. Computing Inflows at OASIS Nodes from the Flows and Gains
This section describes the computation of inflows at OASIS nodes from flows and gains at gages
described above. The computations are done “on the fly” during an OASIS run called “compute_inflow” using ratios of drainage area (total or incremental) as shown in Table 3 below. The computations are included in an OCL file called set_inflows.ocl and are listed below.
Node 110 (u/s Brandt Res) Oakri Flow + Gibso Gain * (70 - 20.6) / 110.4
Node 140 (Townsend Lk) Gibso Gain * 35 / 110.4 Node 145 (Gibso gage) Gibso gain * (110.4 – 35 – (70 – 20.6)) / 110.4 Node 170 (Nbuff gage) Nbuff Flow
Node 020 (u/s Reidsville Res) Benaj Flow * 53 / 168
Node 040 (Benaj gage) Benaj Flow – Inflow020 Node 070 (Old Stony Ck Res) Hawri Gain * 95 / 269.9 Node 090 (Hawri gage) Hawri Gain – Inflow070
Node 310 (u/s Graham-Mebane) Hrpit Gain * 66 / 704
Node 340 (Mackintosh Res) Hrpit Gain * 135 / 704 Node 380 (u/s Cane Ck Res) Inflow time series from OWASA Node 400 (Hrpit gage) Hrpit Gain– Inflow310 – Inflow340 – Inflow380
Node 430 (University Lk) Inflow time series from OWASA
Node 450 (Nhrpi gage) Nhrpi Flow – Inflow430 Node 470 (Jordan Lk) Lilli Gain * 95 / 435
Node 210 (Wfdrh gage) Wfdrh Flow
Node 220 (High Point Res) Randl Gain * (61.4 – 32.1) / 92.9
Node 260 (u/s Randleman Res) Randl Gain – Inflow220 Node 270 (Randleman Res) Ramse Gain * (170 – 125) / 224
Node 300 (Ramseur Res) Ramse Gain * 55 / 224
Node 324 (Upper Siler Res) Rocky Flow * 37 / 7.42
Node 325 (Lower Siler Res) Rocky Flow * 18 / 7.42 Node 280 (d/s Ramseur Res) Ramse Gain – Inflow270 – Inflow300 Node 590 Moncu Gain * 400 / 1085 (400 is an estimate)
Node 640 (Moncu gage) Moncu Gain – Inflow590 – Inflow324 – Inflow325
Node 520 (Harris Lake) Use Harris Lake Inflows developed for Progress Energy Node 527 (d/s Harris) Use Harris Lake Inflows developed for Progress Energy Node 497 (Harris Transfer) Lilli Gain * 234 / 435
Node 550 (Lilli gage) Lilli Gain – Inflow470 – Inflow520 – Inflow527 – Inflow497
13
Node 720 (u/s Linde gage) Linde Flow
Node 760 (Glenville Res) Tarhe Gain * (9.4 / 929)
Node 780 (Tarhe gage) Tarhe Gain – Inflow760 Node 820 (Cfrke gage) Cfrke Gain
Note that inflows to Jordan Lake did not rely on back-calculations from historic releases and
change in storage. Because of inaccuracies in the release data, inflows were developed using drainage area allocation of the gain between upstream and downstream gages.
In addition, inflow at three other locations are handled differently. The inflows for Cane Creek
Reservoir (Ccres) and University Lake (Ulake) were obtained from OWASA and used directly.
The inflows use drainage area adjustments of the Cane Creek near Orange Grove gage, with low-flow adjustments made using the Flat River near Bahama gage.
The inflows for Harris Lake (Harris) were previously computed for Progress Energy and are used
directly. Harris inflows were developed by filling in the Buckhorn Creek near Corinth gagebased
on only the unregulated period (1972-1980) for the gage. This methodology provided better results than using the entire gage record with upstream Harris Lake operations added back. The
gage was filled in using the Middle Creek near Clayton gage in the adjacent Neuse River Basin.
Additional Inflow Nodes In addition to the inflow nodes listed above, a number of natural inflows/gains have been added
to the model, to improve the resolution at points of interest such as withdrawals, discharges, or
locations of environmental interest. These inflows are allocated within the model run; the code
for the allocation can be found in the OCL file filter_inflows.ocl (see Appendix A).
14
Table 3. List of Drainage Areas (in square miles)
Gages Reservoirs
Description
Total Drainage
Area
Incremental Drainage
Area Description
Drainage
Area
Reedy Fork nr. Oak Ridge 20.6 20.6 Randelman 170
N.Buffalo Ck nr. Greensboro 37.1 37.1 Jordan Lake 1690
Reedy Fork nr. Gibsonville 131 110.4 Harris 71
Haw R. nr. Benaja 168 168 University Lake 30 Haw R. at Haw R. 606 269.9 Cane Creek 31
Haw R. nr. Pittsboro 1310 704 Glenville 9.4 New Hope R. nr. Pittsboro 285 285 Graham-Mebane 66
W.Fork Deep R. nr. High Pt 32.1 32.1 Mackintosh 135
Deep R. nr. Randleman 125 92.9 Townsend 105
Deep R. at Ramseur 349 224 Brandt 70
Deep R. at Moncure 1434 1085 High Point 61.4
Cape Fear R. at Lillington 3464 435 Ramseur 55 Little R. at Linden 459 459 Reidsville 53
Cape Fear R. at Huske Lock nr. Tarheel 4852 929 Old Stony Ck 95.3
Cape Fear R. at Lock 1 nr. Kelly 5255 403 Siler City (U+L) 55
15
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.xls.
Daily flows were adjusted in the “daily” sheets in file hand_mods.xls. Revisions were done for Gibso,
Hrpit, Corin, Lilli, Tarhe, and Cfrke. Flow for these gages was taken from file unimpaired_flows.xls. Monthly flows were adjusted in the “monthly” sheet of hand_mods.xls. Revisions were done for
Cfrke and Corin flows in the unimpaired.dss file, and for Lilli gain and Nhrpi flow in file
scale_flow_gain.dss.
An example of the monthly pathological case occurred on September 1936 at Lilli and Nhrpi, during the period when Nhrpi does not exist. The formulae to compute the Lilli gain and Nhrpi flow are:
LilliG = (LilliF – MoncuF – HrpitF) * LilliXG / (LilliXG + NhrpiXF)
NhrpiF = (LilliF – MoncuF – HrpitF) * NhrpiXF / (LilliXG + NhrpiXF)
The values are:
LilliF MoncuF HrpitF LilliXG NhrpiXF
800.4 321.2 257.4 -22.3 24.1
This leads to values of -2712 and +2933 for the Lilli gain and Nhrpi flow, respectively. These were averaged to be 111 (in cfs) at both sites. This is done in the file scale_flow_gain.dss immediately after
executing the rescaling script.
To prevent model infeasibility from provisional inflows (see Appendix C), unrealistic releases from upstream reservoirs, or unrealistic water supply shortages, we added code in the OCL to filter
remaining daily negative inflows. The negative inflow is “stored” until there is a sufficiently positive
16
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.
The exception is the New Hope River at Pittsboro gage, which often had significant negative inflows
due to rescaling of filled-in flows for the missing gage record. We inserted a reversible arc connecting
this node (node 1450) with a node on the Haw River (node 1410). This prevents model infeasibility at
node 450 by transferring surplus water from node 1410. This also ensures that the total volume of flow downstream of these points, namely into Jordan Lake, matches the natural flow on a monthly
basis.
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.xls compares the actual monthly unimpaired gage flows with the
computed values from flows_gains_month.dss. To test that all the drainage areas have been properly
accounted for, file model_comp.xls compares the same actual unimpaired gage flows to the gage
flows reconstituted from the computed OASIS inflows.
17
Section 6. Time of Travel / Flow Routing
To account for time of travel between points along the main stem of the Cape River, flow
routing has been incorporated into both the development of inflows, and the handling of flows within the model. The time of travel or lag coefficients were furnished by the Corp of Engineers. The time of travel reaches consist of the Jordan dam to the Lillington gage, and the Lillington gage to the Kelly
gage. Flow routing for the development of inflows is handled in the HEC-DSSVue script called
routing.py. Flow routing within the model is handled in the OCL file routing.ocl. The routing
equations used for each gain are as follows: Routed Jordan release = 0.5*yesterday’s release + 0.5*today’s release
Lillington gain = Lillington flow - 2 day average of Jordan releases
Routed Lillington Flow = Previous day’s flow Tar Heel gain = Tar Heel flow - previous day average Lillington Flow
Note that the computation of gains may include subtracting the flows from tributaries in the reach (see
Section 3), which are not routed.
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.
18
Section 7. Extending the Record Beyond September 2011
As mentioned earlier, the finalized inflow record ends on September 30, 2011. This section describes how to finalize updates to the record when new records (including impairments) become available. This is not to be confused with provisional updates used to facilitate real-time forecasting, which are
done directly from the model interface using the Update Record tab. Let us assume that we are adding
data from October 1, 2011 to September 30, 2012. Note that we are only adding to the record. We are
not changing any of the values prior to October 2011. 1. Assemble the new gage records in the files gage_day.dss and gage_month.dss. Note the
gage_month record includes separate records for Haw River at Pittsboro (an impaired record,
which is the combined Pittsboro and Bynum gage flows; a record of impairments; and a record
of the resulting unimpaired flows). See Table 4 below for a complete list of gages. 2. Compute the impairments at each gage and add them to the gage flows. This has been done in
the unimpairment spreadsheets described earlier (called inflow_unimpairment_cf.xls). Next put
the daily unimpaired flows into the spreadsheet unimpaired_summary.xls to compute the
monthly unimpaired flows using a spreadsheet pivot table. 3. Append the new unimpaired flows to the unimpaired.dss file (monthly averages) and to the
unimpaired_daily.dss file (daily data) where appropriate.
4. Copy the following files into the folder c:\Program Files\HecDssVue (assuming the DSSVue has been installed in the default location). Update the fillin.cf so the ending year is 2012.
fillin.cf
fillin.exe
gage_day.dss gage_month.dss path_list.dat unimpaired.dss
unimpaired_daily.dss
5. Copy the following files in folder of c:\Program Files\HEC\HecDssVue\HecDssVue\scripts. If extending the record to a year beyond 2011, be sure to change the ending years in the script
from either '11 or 2011 to the appropriate year. Use the script files from the folder
“scripts_2012”, in which this change has already been made.
routing.py compute_gain.py convert_day_to_month.py convert_month_to_day.py
disaggregate.py
scale_flow_gain.py
19
6. Execute the script 01_routing.py. This reads from file unimpaired_daily.dss, creates routed
time-series where necessary (see Section 6), and writes monthly routed flows to unimpaired.dss and extend_flow_gain.dss.
7. Transfer the monthly flows from unimpaired.dss to hand_mods_cf.xls. Here perform necessary
modifications to remove negative gains from the records, following the examples of previous
modifications. Then paste the modified flows and routed flows back into unimpaired.dss and extend_flow_gain.dss. 8. Execute the script 02_compute_gain.py. This reads from file unimpaired.dss, computes all the
gains, and writes to the files extend_flow_gain.dss, scale_flow_gain.dss, and fillin_input.dss.
9. Close DSSVUE, and execute fillin by double-clicking it. This updates the file
extend_flow_gain.dss with filled-in flows. Thus, this file is a combination of the actual
unimpaired values and extended values.
10. Open up DSSVue again, execute the script 03_scale_flow_gain.py, which does the calculations described in Section 3. This reads from file extend_flow_gain.dss and updates file
scale_flow_gain.dss.
11. Import the appropriate flows and gains from scale_flow_gain.dss into hand_mods_cf.xls and
perform hand modifications to remove negative flows and gains. Paste modified flows/gains back into scale_flow_gain.dss.
12. Execute the script 04_convert_month_to_day.py. This reads from files gage_month.dss and
scale_flow_gain.dss to generate a daily record from the monthly records. The daily records are
used to disaggregate the flows, as shown in Section 3. File month_day.dss is written.
13. Execute the script 05_disaggregate.py to convert the monthly flows and gains at the gages to
daily. File flow_gain.dss is produced; this file has the data that are read by OASIS.
14. Execute the script 06_convert_day_to_month.py to convert the daily flows and gains at the gages into monthly values. The purpose of this step is to import the monthly flows and gains
into gage_comp.xls to ensure that all the accounting has been properly done.
15. Once the correct accounting has been confirmed, copy the University Lake, Cane Creek, and
Harris Lake inflow records (ULAKE, CCRES and HARRIS record names, respectively) from the original flow_gains.dss file (that goes through September 30, 2011) into the new
flow_gains.dss file. Append this updated data to this file for all reservoirs through September
30, 2012. Place this flow_gains.dss file into the basedata folder, overwriting the original.
20
16. Execute the OASIS run called “Compute_Inflows”, beginning October 1, 2011 and ending
September 30, 2012. This run contains a file called “set_inflows.ocl” that assigns inflows to the
OASIS nodes.
Then go to the run folder, open the output.dss file, click View Refresh Catalog. Select all of
the inflow nodes (i.e, those which have a pathname labeled inflow) and convert from acre feet
(af) to cubic feet per second (cfs) by doing the following: click Utilities Math Functions. On
the Arithmetic tab, select Divide from the pull down menu, click the Data Set radio button, and highlight all of the inflow records, click the Constant radio button and enter 1.9835 into the
field, and then press the Compute button at the bottom of the window. Once the computation
has completed, close the Math Functions window and click Yes when prompted to save the
changes. Now select all of the inflow records and click Edit Tabular Edit, and change all of
the units to cfs, and all of the units Type to PER-AVER. Close the editing window and save your changes.
Next select all of the records, and copy and append to the basedata.dss file in the basedata
folder. The basedata file will now contain this finalized data from October 1, 2011 to
September 30, 2012. This basedata file will be used for all future runs.
21
Table 4. Gages Used to Extend the Record Beyond September 2011
USGS
Number Description Period of Record
Ref.
Num.
Ref.
Name
Drainage
Area
02093800 Reedy Fork nr. Oak Ridge 10/55 – present 33 oakri 20.6
02094500 Reedy Fork nr. Gibsonville 9/28 – present 32 gibso 131
02095500 N.Buffalo Ck nr. Greensboro 8/28 - 10/90; 8/98 - present 36 nbuff 37.1
02096500 Haw R. at Haw R. 10/28 – present 31 hawri 606
02096960 Haw R. nr. Bynum 10/73 – present 28 bynum 1275
02097314 New Hope Ck nr. Blands 10/82 – present 22 bland 75.9
02097517 Morgan Ck nr. Chapel Hill 11/82 – present 23 chape 41
02098000 New Hope R. nr. Pittsboro 3/49 - 9/73 21 nhrpi 285
02098500 W.Fork Deep R. nr. High Pt 1928 - 9/58 44 wfdrh 32.1
02099000 Deep R. nr. High Point 7/28 - 3/94; 10/97 - present 45 highp 14.8
02099500 Deep R. nr. Randleman 10/28 – present 42 randl 125
02100500 Deep R. at Ramseur 11/22 – present 41 ramse 349
0210166029 Rocky R. nr. Crutchfield Crossroads 5/88 - present 38 crutc 7.42
02102000 Deep R. at Moncure 8/30 – present 37 moncu 1434
02102192 Buckhorn Ck nr. Corinth 6/72 – present 20 corin 76.3
02102500 Cape Fear R. at Lillington 12/23 – present 19 lilli 3464
02103500 Little R. at Linden 1928 - 6/71 18 linde 459
02105500 Cape Fear at Huske Lk nr. Tarheel 10/37 – present 13 tarhe 4852
02105769 Cape Fear R. at Lock 1 nr. Kelly 7/69 – present 12 cfrke 5255
02108000 NE Cape Fear nr. Chinquapin 8/40 – present 9 chinq 599
02085500 Flat R. at Bahama 8/25 – present baham 149