HomeMy WebLinkAbout04_CFNM_Appendix_B2_-_Neuse_Finalized_Inflow_Data_Development
1
APPENDIX B2 –
Finalized Inflow Data Development for the Neuse River Basin
2
Section 1. Introduction
This report provides a detailed account of the inflow development for the Neuse River Basin.
These inflows are used in the Neuse portion of the combined Cape Fear/Neuse OASIS model. The inflow record runs from January 1930 to September 2011.1 There are 22 streamflow gages
in the basin that are used in this project. These are listed in Table 1. 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 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.
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 most of the 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 the spreadsheet inflow_unimpairmen_neuse.xls in the ‘Inflow Spreadsheets’ directory. The unimpaired gage data is summarized in the unimpaired_summary_neuse.xls file. Impairments in the basin accumulate as each downstream
gage is included. For example, the impairments upstream of Falls Lake include the impairments
on the Eno River, Flat River, Knap of Reeds Creek, and Little 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, Falls Lake, are available from the Army Corp of Engineers (Corps)
since project inception in 1981. Monthly storage data for Durham’s Lake Michie, which has been in operation for the entire period of record, was collected when available (1939 to present) by HydroLogics.
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, a monthly pattern based on a study of Lake Michie in Durham is used. Precipitation data are based on daily measurements from the following long-
term stations: Butner Filter Plant, Chapel Hill 2W, Clayton WTP, Durham, Neuse 2 NE, RDU
Airport, Raleigh 4 SW, NC State Univ Rocky Mount 6 SW, Rougemont, Roxboro 7 ESE, and
Wilson 3 SW, as well as data from the Corps for Falls Lake. 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, 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 ten 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 No. Ref. Name Drain. Area
02085000 Eno R. at Hillsborough 10/1927-9/1971, 10/1985-present 1 Hills 66
02085070 Eno R. nr. Durham 09/1963-present 2 Durha 141
0208521324 Little R. at SR1461 nr. Orange Factory 10/1987-present 3 Litor2 78.2
02085220 Little R. nr. Orange Factory 9/1961-9/1987 4 Litor1 80.4
0208524975 Little R. bl. Little R. Trib. at Fairintosh 10/1995-present 5 Litfa 98.9
02085500 Flat R. at Bahama 7/1925-present 6 Flatb 149
02086500 Flat R. at dam nr. Bahama 9/1927-9/1959, 8/1961-9/1966, 10/1982-9/1990, 10/1992-9/1993,
10/2000-present
7 Flatd 168
02087000 Neuse R. nr. Northside 8/1927-10/1980 8 North 535
02087183 Neuse R. nr. Falls 7/1970-present 9 Falls 771
02087500 Neuse R. nr. Clayton 7/1927-present 10 Clayt 1150
02087580 Swift Ck. nr. Apex 3/2002-present 11 Swift 21
02088000 Middle Ck. nr. Clayton 10/1939-present 12 Middl 83.5
02088500 Little R. nr. Princeton 2/1930-present 13 Litpr 232
02089000 Neuse R. nr. Goldsboro 2/1930-present 14 Golds 2399
0208925200 Bear Ck. at Mays Store 10/1987-present 15 Bearc 57.7
02089500 Neuse R. at Kinston 2/1930-present 16 Kinst 2692
02090380 Contentnea Ck. nr. Lucama 9/1964-present 17 Lucam 161
02091000 Nahunta Sw. nr. Shine 4/1954-present 18 Nahun 80.4
02091500 Contentnea Ck. nr. Hookerton 12/1928-present 19 Hooke 733
02091700 Little Contentnea Ck. nr Farmville 10/1956-9/1987 20 Ltcon 93.3
02092000 Swift Ck. nr. Vanceboro 2/1950-10/1989 21 Vance 182
02092500 Trent R. nr. Trenton 1/1951-present 22 Trent 168
5
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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
Timeline for Gage Data
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. The
monthly flows and gains are then 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
2 “Mixed-Station Extension of Monthly Streamflow Records,” Journal of Hydraulic Engineering, ASCE, Vol. 109, No. 10, October 1983.
2011
6
Little River, two gages were combined into one. The gages near Orange Factory (reference
Litor1) and SR1461 near Orange Factory (reference Litor2) are adjacent (drainage areas are 80.4
mi2 and 78.2 mi2, respectively). Between them, they have a complete but non-overlapping record going back to 1961. We scaled the Litor1 flows by 78.2 / 80.4 and treated the new flows as part of the Litor2 record, thus making one long record at Orange Factory (reference Litor).
The inflows to Durham’s Lake Michie and Little River Reservoirs are based on drainage area
adjustments of the upstream Flat River at Bahama and the Little River near Orange Factory gages, respectively, and are given the name Michie and LitRes.
The records of the gages Little River near Princeton, Neuse River near Goldsboro, and Neuse
River near Kinston all start in March 1930. We extended the record using fillin back to January
1930. 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
Hills Flow
Durha Gain Durha flow – Hills flow
North Gain North flow – Michie flow – LitRes flow – Hills flow
Falls Gain Falls flow – North flow
Clayt Gain Clayt flow – Falls flow
Middl Flow
Golds Gain Golds flow – Clayt flow – Middl flow – Litpr flow
Kinst Gain Kinst flow – Golds flow
Buckhorn Flow
Hooke Gain Hooke flow – Buckhorn flow
Note that the gains at Clayton, Goldsboro and Kinston are calculated with consideration made to
the time of travel (flow routing) along the Neuse. 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 unimpaired flow at Hills (reference name for Eno
River at Hillsborough gage) and unimpaired gain at North (reference name for Neuse River near Northside gage) from September 1961 to October 1980 when either the impairments at Hills cannot be quantified (and thus the gage cannot be unimpaired) or the Hills gage data are missing.
As a result, we have no actual (unimpaired) flow at Hills and no actual gain at North. We
extended the gage record at Hills and extended the gain at North using fillin. Now we want to
adjust those extended values so that the sum of the flows at Hills, Michie, LitRes, and the remaining gain down to North match the unimpaired flow at North. So we say that we maintain the North flow less the inflows to Michie and LitRes by scaling with the sum of the Hills and the
North extended gain. The calculation is:
Scaled North extended gain = (North flow – Michie flow – LitRes flow)* (North extended gain) / (North extended gain + Hills extended flow)
The companion calculation for the flow at Hills is:
Scaled Hills extended flow = (North flow –Michie flow – LitRes flow)* (Hills extended flow ) / (North extended gain + Hills extended flow)
Thus the sum of the actual unimpaired flows (Michie and LitRes) and the scaled flow (Hills) and
scaled gain (North) equals the unimpaired gage flow at North, or
LitRes flow + Michie flow + Hills scaled flow + North scaled gain = North 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 the unimpaired
8
gaged flows.
The DSSVue script used to do these calculations is scale_flow_gain.py. The output is the file 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 North for January 1930 is 188 cfs; converting
the monthly flow to daily gives 156 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 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 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
Eno River near Hillsborough FLOW (Hills), 10/28 – 9/71, 10/85 – present
This gage prior to 10/1954 is not influenced by reservoir operations, so it can be unimpaired.
After that, reservoir data are only available from 8/1997 to present, meaning it must be filled in
from 1955 to 7/1997. Note that we arbitrarily selected 1928 as the starting year, although we
standardized the data set later to begin at the start of the 1930 decade.
10/28 – 09/54 use actual daily values
10/54 – 08/61 HillsF = (NorthF – MichieF) * HillsXF / (NorthXG + HillsXF + LitResXF)
9/61 – 10/80 HillsF = (NorthF – MichieF – LitResF) * (HillsXF) / (NorthXG + HillsXF)
11/80 – 07/97 use values generated by fillin
08/97 – 04/08 use actual daily values Disaggregate 10/54 to 7/97 using Flatb.
Eno River near Durham GAIN (Durha), 10/28 – present
Hillsborough gage data are missing from 10/71 to 09/85
10/28 – 08/63 Hills F * 75 / 66 (drainage area adjustment of Hillsborough flow)
09/63 – 09/71 Durh F – Hills F + net withdrawal within reach
10/71 – 09/85 Hills F * 75 / 66 (drainage area adjustment of Hillsborough flow)
10/85 to present Durh F – Hills F + net withdrawal within reach
Gain included in script files since disaggregation of full record is required. Disaggregate whole
record with Flatb.
Little River FLOW (09/61 – present)
10/28 – 09/54 LitResF = (NorthF – MichieF – HillsF) * LitResXF / (NorthXG + LitResXF), disaggregate with Flatb
10/54 – 08/61 LitResF = (NorthF – MichieF) * LitResXF / (NorthXG + LitResXF +
HillsXF), disaggregate with Flatb
09/61 – present Use actual daily values.
Neuse River near Northside GAIN (North), 10/1928 – 10/1980
10/28 – 09/54 NorthG = (NorthF – MichieF – HillsF) * NorthXG / (NorthXG + LitResXF)
10/54 – 08/61 NorthG = (NorthF – MichieF) * NorthXG / (NorthXG + LitResXF + HillsXF)
09/61 – 10/80 NorthG = (NorthF - MichieF - LitResF) * NorthXG / (NorthXG + HillsXF)
11/80 – 04/81 use values generated by fillin Disaggregate whole record with Flatb
Beginning May 1981, we no longer need Northside gains since we are using back-calculated
inflows from Falls.
10
Neuse River near Falls GAIN (North), 07/1970 – 06/1976
Computed gain at Falls is FallsF – NorthF
10/28 – 06/70 use values generated by fillin 07/70 – 06/76 FallsG = FallsF – NorthF
7/76 – 04/81 use values generated by fillin
Disaggregate whole record with Flatb
Flows after this are done with a spreadsheet to compute the daily gain to Falls, which represents the difference between the back-calculated Falls inflow [unimpaired] and
upstream inflow [unimpaired]).
Neuse River near Clayton GAIN (Clayt), 10/28 – present
10/28 – 4/81 ClaytonG = ClaytonF – (NorthF + FallsG) 5/81 – present Clayton G = ClaytonF (gage flow) – Falls release + local impairments in this
reach
Disaggregate whole record with Litpr.
Neuse River near Goldsboro GAIN (Golds), 03/30 – present (filled in back to 1928) Computed gain at Golds is GoldsF – ClaytF – LitprF - MiddlF
10/28 – 09/39 GoldsG = (GoldsF – ClaytF – LitprF) * (GoldsXG) / (GoldsXG +
MiddlXF),
10/39 – present GoldsG = GoldsF – ClaytF – LitprF - MiddlF
Disaggregate whole record with Litpr.
Middle Creek near Clayton FLOW (Middl), 03/30 – present (filled in back to 1928)
10/28 – 09/39 MiddlF = (GoldsF – ClaytF – LitprF) * (MiddlXF) / (GoldsXG + MiddlXF),
disaggregate with Litpr
10/39 – present Use actual daily values
Neuse River near Kinston GAIN (Kinst), 03/30 – present (filled in back to 1928)
10/28 – present KinstG = KinstF – GoldsF, disaggregate with Litpr
Buckhorn Reservoir FLOW (Buckhorn), 10/64 – present Based on the drainage area adjustment of the Lucama gage, whose record does not start until
10/1964 and whose record is impaired by the reservoir operations since 10/1974.
10/28 – 09/64 BuckhornF = HookeF * (BuckhornXF) / (HookeXG + BuckhornXF),
disaggregate with Litpr
10/64 – 09/74 Use actual daily values 10/74 – present BuckhornF = HookeF * (BuckhornXF) / (HookeXG +BuckhornXF),
disaggregate with Litpr
Contentnea Creek near Hookerton GAIN (Hooke), 12/28 - present
Computed gain at Hooke is HookeF – BuckhornF 10/28 – 09/64 HookeG = HookeF * (HookeXG) / (HookeXG + LucamXF)
11
10/64 – 09/74 HookeG = HookeF - BuckhornF
10/74 – present HookeG = HookeF * (HookeXG) / (HookeXG + LucamXF)
Disaggregate whole record using Litpr
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_Inflows” 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 1010 (u/s Orange pond) Hills Flow * 7.1 / 66 Node 1050 (WFER) Hills Flow * 9.4 / 66
Node 1060 (Lk Orange) Hills Flow * 1.8 / 66
Node 1080 (Corporation Lk) Hills Flow * 22.9 / 66
Node 1100 (Lk Ben Johnston) Hills Flow * 19.2 / 66 Node 1110 (Hills gage) Hills Flow * 5.6 / 66
Node 1115 (Durha gage) Durha Gain
Node 1140 (Lk Michie) Michie Flow
Node 1200 (Little River Res) LitRes Flow Node 1250 (Lk Holt) Inflow1200 * 30 / 97.7 Node 1270 (Lk Rogers) Inflow1200 * 17.4 / 97.7
Node 1230 (Beaverdam Lk) (North Gain + Falls Gain – Inflow1115 –Inflow1250 –
Inflow1270) * 0.05 prior to 5/1981
[The Corps assumes 5% of the total inflows to Falls and Beaverdam are allocated to Beaverdam, even though the
proportion would be a bit different on a drainage area basis.
The remaining 95% is allocated to Falls.]
See below for 5/1981 to present
Node 1290 (Wake Forest Lk) Middl Flow * 3 / 83.5
Node 1300 (Falls Lk) (North Gain + Falls Gain – Inflow1115 – Inflow1250 – Inflow1270)) * 0.95 prior to 5/1981
See below for 5/1981 to present
Node 1400 (Lk Crabtree) Middl Flow * 93.7 / 83.5 Node 1420 (Lk Wheeler) Middl Flow * 35.8 / 83.5 prior to 03/2002; Swift Flow * 35.8 / 21 from 03/2002 – present
Node 1440 (Lk Benson) Middl Flow * 30.5/ 83.5 prior to 03/2002;
Swift Flow * 30.5 / 21 from 03/2002 – present
13
Node 1445 (Lk Johnson) Middl Flow * 7.1 / 83.5
Node 1450 (Lk Raleigh) Middl Flow * 5.2 / 83.5 Node 1480 (Middl gage) Middl Flow
Node 1500 (Buckhorn Res) Buckhorn Flow
Node 1560 (Hookerton gage) Hooke Flow - Buckhorn Flow
Node 1630 (Clayton gage) Clayt Gain – Inflow1290 – Inflow1400 – Inflow1445 – Inflow1450
Node 1740 (Little River Res) Litpr Flow * 51.8 / 232
Node 1750 (Litpr gage) Litpr Flow * 179 / 232
Node 1780 (Goldsboro gage) Golds Gain – Inflow1420 – Inflow1440 Node 1800 (Kinst gage) Kinst Flow – Golds Flow
Node 1900 (Weyerhauser) Weighted average cfsm based on Kinst Flow and Contentnea
Creek * Incremental drainage area
Node 1230 (Beaverdam) and Node 1300 (Falls Lake) inflows require extra computations once the dam was built. Post-project, the gain at Falls is computed by back-calculating the inflows
from the Falls release and the change in storage, with the net evaporation added back. Since the
Corps inflows include Beaverdam storage only when Falls is at or above 249 ft, we need to
increase these inflows for those periods when Beaverdam was below 249 ft. We proportion 5%
of the total Falls inflow to Beaverdam, so we divide the Falls/Beaverdam inflow by 0.95 to achieve this. The back-calculated inflows are impaired due to upstream impairments, so we need
to take these into account. To get agreement with the total unimpaired flow at Clayton, we must
account for the same impairments.
05/1981 – present If Beaverdam elev < 249
(Corps net inflow + net evap) / 0.95 – Hills Flow – Inflow1115 – Inflow1140 – Inflow1200 –
Inflow1250 – Inflow1270 + total impairment from net withdrawals and reservoirs upstream of
Falls Lake (including those on the Eno and from Durham’s reservoirs).
If Beaverdam elev >= 249
(Corps net inflow + net evap) – Hills Flow – Inflow1115 – Inflow1140 – Inflow1200 –
Inflow1250 – Inflow1270 + total impairment from net withdrawals and reservoirs upstream of
Falls Lake (including those on the Eno and from Durham’s reservoirs).
The final inflow to Node 1300 (Falls) is 95% of the above calculations, after proportioning 5% to
Beaverdam (Node 1230).
14
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).
Table 3. List of Drainage Areas (in square miles)
Reservoirs Gages
Description
Total Drainage
Area
Incremental Drainage
Area Description
Total Drainage
Area
Incremental Drainage
Area
Orange Impoundment 7.1 7.1 Eno River at Hillsborough 66 5.6
West Fork Eno Reservoir 9.4 9.4 Eno River nr Durham 141 75
Lake Orange 8.9 1.8 Neuse River at Clayton 1150 380
Corp. Lake 41.2 22.9 Little River nr Princeton 232 179
Lake Ben Johnston 60.4 19.2 Neuse River at Goldsboro 2399 933.5
Lake Michie 167 167 Contentnea Cr at Hookerton 733 578
Little River Reservoir 97.7 97.7 Neuse River at Kinston 2692 293
Lake Holt_Butner 30 30 Middle Creek near Clayton 83.5 83.5
Lake Rogers 17.4 17.4 Swift Creek near Apex 21.0 21.0
Beaverdam Lake 50 50
Falls Lake 770 (751) 316.9 (297.9)
Wake Forest Lake 3 3
Lake Crabtree 93.7 93.7
Lake Wheeler 35.8 35.8
Lake Benson 66.3 30.5
Lake Johnson 7.1 7.1
Lake Raleigh 12.3 5.2
Buckhorn Reservoir 155 155
Little River Reservoir (Raleigh proposed) 50.8 50.8
Weyerhaeuser 4103 678
* Value in parentheses is net of surface area of lake at full pond
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_neuse.xls.
No daily adjustments were made for the Neuse basin. Monthly flows were adjusted in the “monthly”
sheet of hand_mods.xls. Revisions were done for North, Hills, Durha and Middl flows and Golds and Kinst gains in the unimpaired.dss file, and for Hills and Middl flows and Durha, North, Clayt, Golds
and Kinst gains in file scale_flow_gain.dss.
An example of a negative monthly gain occurred on April 1978 at Golds; a large inflow at the end of the month upstream did not travel down to Golds until the beginning of the next month:
04/1978 05/1978
ClaytF 2395 cfs 3840 cfs
MidllF 256 cfs 167 cfs
LitPrF 598 cfs 457 cfs
GoldsF 3070 cfs 8821 cfs
This leads to values of -179 cfs and 4357 cfs for the Golds gain in April and May, respectively. A
manual adjustment was then made by adding 200 cfs to the Golds flow in April, and subtracting 200 cfs from the Golds flow in May, which eliminates the negative gain in April and maintains the total volume over the two month period.
16
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 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 main exception are Falls and Beaverdam inflows, which rely on back-calculations as described earlier and result in occasional negative values. There is enough storage to handle the negative
inflows, so no filtering is needed.
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_neuse.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_neuse.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 Neuse 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 Falls dam to the Clayton gage, the Clayton gage to the Goldsboro gage,
and the Goldsboro gage to the Kinston 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 Falls release = 0.5*yesterday’s release + 0.5*today’s release
Clayton gain = Clayton flow - 2 day average of Falls releases
Routed Clayton Flow = [ flow(-4 days) + flow(-3 days) + flow(-2 days) + flow(-1 day) ] / 4 Goldsboro gain = Goldsboro flow - previous four day average of Clayton flows
Routed Goldsboro Flow = [flow(-2 days) + flow(-1 day) ] / 2
Kinston gain = Kinston flow - previous two day average of Goldsboro flows 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 data for the gage records in Table 4 below and place in the files gage_day.dss and gage_month.dss. Note that the Flatb and Litor gage flows need to be
adjusted by drainage area to the Lake Michie and Little River Reservoir drainage areas,
respectively, before being entered into gage_day.dss and gage_month.dss under the
appropriate reservoir names. Note that the local upstream impairments for the Clayton gage need to go into the gage_day.dss
and gage_month.dss files.
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_neuse.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. Note that the unimpaired Little River at Princeton gage needs to be appended into the gage_day.dss and gage_month.dss files, and
the daily unimpaired Eno River at Hillsborough and Middle Creek nr Clayton gage flows need
to go into the gage_day.dss file (with “Unimpaired” in the F-part) in addition to the monthly
flows going into the unimpaired.dss file. 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
19
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
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_neuse.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_neuse.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.
20
15. 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.
Name
Drainage
Area
02085000 Eno R. at Hillsborough 10/1927-9/1971, 10/1985-present Hills 66
02085070 Eno R. nr. Durham 09/1963-present Durha 141
0208521324 Little R. at SR1461 nr. Orange Factory 10/1987-present Litor2 78.2
02085500 Flat R. at Bahama 7/1925-present Flatb 149
02087000 Neuse R. nr. Northside 8/1927-10/1980 North 535
02087183 Neuse R. nr. Falls 7/1970-present Falls 771
02087500 Neuse R. nr. Clayton 7/1927-present Clayt 1150
02087580 Swift Ck. nr. Apex 3/2002-present Swift 21
02088000 Middle Ck. nr. Clayton 10/1939-present Middl 83.5
02088500 Little R. nr. Princeton 2/1930-present Litpr 232
02089000 Neuse R. nr. Goldsboro 2/1930-present Golds 2399
0208925200 Bear Ck. at Mays Store 10/1987-present Bearc 57.7
02089500 Neuse R. at Kinston 2/1930-present Kinst 2692
02091000 Nahunta Sw. nr. Shine 4/1954-present Nahun 80.4
02091500 Contentnea Ck. nr. Hookerton 12/1928-present Hooke 733
02091700 Little Contentnea Ck. nr Farmville 10/1956-9/1987 Ltcon 93.3