-
Notifications
You must be signed in to change notification settings - Fork 6
/
sir20165080_AppendixH.Rnw
1814 lines (1578 loc) · 121 KB
/
sir20165080_AppendixH.Rnw
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
% \VignetteIndexEntry{Appendix H. Model Calibration}
% \VignetteEngine{knitr::knitr}
% \VignetteDepends{wrv}
\documentclass[twoside]{article}
\input{\Sexpr{shQuote(system.file("misc", "preamble.tex", package="inlmisc"))}}
\addbibresource{\Sexpr{system.file("misc", "references.bib", package="wrv")}}
\fancyhead[LE]{\normalfont\bfseries\sffamily \thepage \quad Groundwater-Flow Model for the Wood River Valley Aquifer System, South-Central Idaho}
\renewcommand{\thefigure}{H\arabic{figure}}
\renewcommand{\thetable}{H\arabic{table}}
\renewcommand{\thepage}{H\arabic{page}}
\setcounter{page}{1}
% =========================================================================
\begin{document}
<<setup, include=FALSE>>=
t0 <- Sys.time()
try(knitr::opts_chunk$set(tidy=FALSE, comment="#", fig.align="center"), silent=TRUE)
grDevices::pdf.options(useDingbats=FALSE)
library(wrv)
library(inlmisc)
library(raster)
options(preferRaster=TRUE, scipen=0, digits=2)
# Device dimension in inches (width, height)
fin.graph <- c(7.17, 7.17)
fin.graph.short <- c(7.17, 3.50)
fig.graph.small <- c(3.50, 3.50)
fin.map <- c(7.17, 9.31)
fin.map.0 <- c(7.17, 8.77)
fin.map.s <- c(7.17, 5.22)
fin.map.s.0 <- c(7.17, 4.68)
fin.map.n <- c(7.17, 6.97)
fin.map.n.small <- c(3.50, 3.60)
fin.map.n.small.0 <- c(3.50, 3.30)
fin.cs <- c(7.17, 5.26)
fin.cs.0 <- c(7.17, 4.68)
# Extreme coordinates of plotting region (x1, x2, y1, y2)
usr.map <- c(2451504, 2497815, 1342484, 1402354)
usr.map.s <- c(2472304, 2497015, 1343284, 1358838)
usr.map.n.1 <- c(2463000, 2475356, 1386500, 1398856)
usr.map.n.2 <- c(2467500, 2479856, 1376500, 1388856)
usr.map.n.3 <- c(2466696, 2479052, 1366501, 1378857)
usr.map.n.4 <- c(2471500, 2483856, 1356482, 1368838)
# Unit conversions
cfs.to.m3.per.d <- 2446.57555
# Map credit
credit <- paste("Base derived from U.S. Geological Survey National Elevation Dataset 10-meter digital elevation model.",
"Idaho Transverse Mercator projection; North American Datum of 1983.", sep="\n")
@
\title{Appendix H.\enspace Calibration of the Wood River Valley Groundwater-Flow Model}
\author{}
\maketitle
\tableofcontents
\newpage
\renewcommand*\listfigurename{Figures}
\listoffigures
\renewcommand*\listtablename{Tables}
\listoftables
\clearpage
\RaggedRight
% =========================================================================
\section{Introduction}
Model calibration refers to the process of assuring that the Wood River Valley (WRV) groundwater-flow model reproduces real-world flow conditions reasonably well.
An estimator attempts to adjust model parameters so that the differences between simulated and measured values are minimized.
Multiple model parameters were estimated using a nonlinear regression method.
% =========================================================================
\section{Model Calibration}
Model calibration is the task of adjusting model parameter estimates (such as hydraulic conductivity) until model results are consistent with measured data (such as groundwater levels in wells).
The effectiveness of model calibration cannot be solely assessed by the agreement between field measurements and corresponding model results (misfit).
Unreasonable parameter values may be estimated that adopt roles for which they were not designed in order for the model to provide an acceptable fit with field measurements (this is referred to as overfitting) \citep[p.~180]{Doherty2005}.
The problem with an overfit model is that it will typically have poor predictive performance, as it can exaggerate minor fluctuations in the data.
Therefore, model calibration may necessitate a larger misfit in order to determine a parameter set that reflects a geologically and physically realistic conceptualization of the aquifer system \citep[p.~842]{Fienen2009}.
Regularization is the process of supplementing field measurements with prior information that pertain directly to model parameters (also known as ``regularization observations'') in order to prevent overfitting.
For example, regularization may take the form of a penalty for increased spatial heterogeneity of horizontal hydraulic conductivity.
The parameter estimation program \href{http://www.pesthomepage.org/}{PEST} version 13 \citep{Doherty2005} is used in regularization mode to calibrate the WRV groundwater-flow model.
PEST implements a nonlinear regression method to estimate model parameters by keeping model-to-measurement misfit below a certain user-defined threshold (PHIMLIM),
while minimizing the deviation of parameter estimates from their preferred conditions.
Parameter estimation is formulated as a constrained minimization problem and mathematically expressed as:
\begin{equation} \label{eq:min}
\begin{aligned}
& \underset{\boldsymbol{b} \, \epsilon \, \mathbb{R}}{\text{minimize}}
& & \sum_{i} \left( w_{i} \left[ X_{i} - \widehat{X}_{i} \right] \right)^{2} \\
& \text{subject to}
& & \sum_{j} \left( w_{j} \left[ Y_{j} - \widehat{Y}_{j} \right] \right)^{2} \leq \text{PHIMLIM} \\
&&& b_{min, \, k} \leq b_{k} \leq b_{max, \, k}
\end{aligned}
\end{equation}
where
\begin{description}
\item[\boldsymbol{b}] is a vector of adjustable model parameters;
\item[\mathbb{R}] is the set of all real values;
\item[w_{i}] is the weight placed on regularization observation $i$;
\item[X_{i}] is the preferred model parameter of regularization observation $i$;
\item[\widehat{X}_{i}] is the estimated model parameter of regularization observation $i$;
\item[w_{j}] is the weight placed on observation $j$;
\item[Y_{j}] is the field measurement quantity of observation $j$;
\item[\widehat{Y}_{j}] is the model-simulated result of observation $j$;
\item[\text{PHIMLIM}] is a control variable for regularization that is used to avoid overfitting;
\item[b_{min, \, k}] is the lower bound for adjustable model parameter $k$; and
\item[b_{max, \, k}] is the upper bound for adjustable model parameter $k$.
\end{description}
\noindent The algorithm PEST uses to solve equation~(\ref{eq:min}) is a modified Gauss-Newton method, assisted by a Levenberg-Marquardt formulation \citep[chapter 2]{Doherty2005}.
Model-simulation results are output from \href{https://water.usgs.gov/ogw/mfusg/}{MODFLOW-USG}, a numerical model that simulates three-dimensional,
steady-state and transient groundwater flow using a control volume finite-difference formulation \citep{Panday2013}.
Because PEST runs the model many times during the parameter estimation process it was necessary to keep model run times reasonably short.
Substantial time savings in model runs were achieved by simulating transient flow in the WRV aquifer system using a specified saturated thickness.
In reality, the saturated thickness changes as model-simulated hydraulic heads change.
Accounting for such changes during the simulation is possible with MODFLOW-USG; however, run times for these simulations can be very long---on the order of hours for simulating flow in WRV aquifer system.
In comparison, run times are on the order of tens-of-minutes when the saturated thickness is held constant.
% =========================================================================
\section{Field Measurements}
Field measurements used in the parameter estimation process include groundwater levels in wells, stream-aquifer flow exchange in river reaches, and groundwater flow at outlet boundaries.
A 3-year `warm-up' period is included in the model simulation to recover from inaccuracies in the initial groundwater head distribution and account for potential transient responses to stresses occurring prior to January 1995.
Therefore, field measurements during the first 3 years of the simulation (1995--1997) were not used when evaluating model-to-measurement misfit during model calibration.
\subsection{Groundwater Levels in Wells}
<<echo=FALSE>>=
is.obs <- as.Date(obs.wells.head$DateTime) >= as.Date("1998-01-01") &
as.Date(obs.wells.head$DateTime) < as.Date("2011-01-01")
wells <- obs.wells
FUN <- function(x) {
x <- range(x)
moyr <- format(x, "%b %Y")
mo <- format(x, "%b")
yr <- format(x, "%Y")
if (moyr[1] == moyr[2]) {
return(moyr[1])
} else {
if (yr[1] == yr[2])
return(paste0(mo[1],"--", moyr[2]))
else
return(paste(moyr, collapse=" -- "))
}
}
x <- aggregate(obs.wells.head$DateTime, by=list(obs.wells.head$PESTNAME), FUN)
names(x) <- c("PESTNAME", "por")
d <- dplyr::left_join(obs.wells@data, x, by="PESTNAME")
d$nrec <- vapply(d$PESTNAME, function(i) sum(obs.wells.head$PESTNAME == i), 0L)
x <- aggregate(obs.wells.head$Head, by=list(obs.wells.head$PESTNAME), sd)
names(x) <- c("PESTNAME", "sd")
d <- dplyr::left_join(d, x, by="PESTNAME")
wells@data <- d
PrintTable <- function(idxs, is.last.hline, label) {
d <- wells@data[idxs[idxs <= nrow(wells@data)], ]
d$desc <- as.character(d$desc)
d$desc[d$desc == "Observation well"] <- "USGS well"
d$desc[d$desc == "Geo-located driller well"] <- "Geo-located driller well"
d$desc[d$desc == "Driller-located driller well"] <- "PLSS-located driller well"
d$desc[d$desc == "Sun Valley Water and Sewer well"] <- "SVWSD well"
d$desc[d$desc == "Nature Conservancy well"] <- "TNC well"
d[duplicated(d[, "desc"]), "desc"] <- ""
d$SiteNo[is.na(d$SiteNo)] <- "--"
d <- d[, c("desc", "id", "SiteNo", "WELLNUMBER", "nrec", "por", "sd")]
columns <- c("Well type",
"Well \\\\ No.",
"Site \\\\ identifier",
"Name",
"No. of \\\\ records",
"Period of \\\\ record",
"SD \\\\ (m)")
colnames(d) <- sprintf("\\textbf{\\shortstack{%s}}", columns)
cap1 <- "Observation wells in the Wood River Valley aquifer system."
cap2 <- c("\\textbf{Well type}:",
"``USGS well'' is monitored by the U.S. Geological Survey and (or) the Idaho Department of Water Resources;",
"``Geolocated driller well'' is a driller recorded groundwater level in a geolocated well;",
"``PLSS-located driller well'' is a driller recorded groundwater level in a well located using the Public Land Survey System (PLSS);",
"``SVWSD well'' is a production well in the Sun Valley Water and Sewer District (SVWSD); and",
"``TNC well'' is monitored by The Nature Conservancy and installed with a pressure transducer.",
"\\textbf{Well No.}: identifier used to locate wells in figures \\ref{fig:map_wells_usgs}, \\ref{fig:map_wells_driller}, and \\ref{fig:map_wells_svws_nat}.",
"\\textbf{Site identifier}: unique numerical identifiers used to access well data (\\url{https://waterdata.usgs.gov/nwis}).",
"\\textbf{Name}: local well name used in this study.",
"\\textbf{SD}: standard deviation of groundwater levels.",
"\\textbf{Abbreviations}: m, meters; --, not available; NA, not applicable")
tbl <- xtable::xtable(d, label=label)
if (idxs[1] == 1L)
xtable::caption(tbl) <- c(sprintf("%s [%s]", cap1, paste(cap2, collapse=" ")), cap1)
else
xtable::caption(tbl) <- sprintf("%s---Continued", cap1)
xtable::digits(tbl) <- c(0, 0, 0, 0, 0, 0, 0, 2)
suppressWarnings(xtable::align(tbl) <- "llccL{1.0in}rcr")
hline.after <- if (is.last.hline) c(-1, 0, nrow(tbl)) else c(-1, 0)
print(tbl, include.rownames=FALSE, caption.placement="top", booktabs=TRUE,
sanitize.colnames.function=function(x){x}, size="\\small", NA.string="NA",
sanitize.text.function=identity, hline.after=hline.after)
}
@
The groundwater-flow model was calibrated using \Sexpr{formatC(sum(is.obs), big.mark=",")} hydraulic-head observations (groundwater levels) from
\Sexpr{length(unique(obs.wells.head$PESTNAME[is.obs]))} well locations.
During the 16-year model simulation period (1995--2010), both the period-of-record and frequency of monitoring varied by well (\hyperref[table_wells_usgs]{table~\ref{table_wells_usgs}}).
The historic variability of groundwater levels in a well over the period-of-record is described with the standard deviation (\hyperref[table_wells_usgs]{table~\ref{table_wells_usgs}}).
All relevant sources of groundwater-level data were considered during model calibration and described below.
The U.S. Geological Survey (USGS) groundwater-monitoring network described by \citet{Skinner2007} and \citet{Bartolino2014} consists of
\Sexpr{sum(is <- obs.wells@data$desc == "Observation well")} wells, with \Sexpr{sum(obs.wells.head$PESTNAME %in% obs.wells@data$PESTNAME[is])}
groundwater-level observations recorded in these wells during the 1995 through 2010 time period
(\hyperref[table_wells_usgs]{table~\ref{table_wells_usgs}}, \hyperref[fig:map_wells_usgs]{fig.~\ref{fig:map_wells_usgs}});
of these observations, \Sexpr{sum(obs.wells.head$PESTNAME[is.obs] %in% obs.wells@data$PESTNAME[is])} were recorded during the model-calibration period (1998--2010).
Groundwater-level elevations were obtained by subtracting the depth to water from the elevation of a land-surface measurement point.
The depth to water was measured by USGS and Idaho Department of Water Resources (IDWR) employees using an electric measuring tape accurate to about plus-or-minus ($\pm$) 0.01 meters (m) ($\pm$0.02 feet [ft]).
Well locations were surveyed using real-time kinematic (RTK) and fast-static differential Global Positioning System (GPS) surveying techniques
with a horizontal accuracy of about $\pm$0.08~m ($\pm$0.26~ft) and a vertical accuracy of about $\pm$0.16~m ($\pm$0.52~ft).
Wells in this monitoring network are hereafter referred to as ``USGS wells''.
All available well driller reports (well logs) were examined for groundwater-level data recorded during the 1995 through 2010 time period.
There were \Sexpr{n <- sum(is <- obs.wells@data$desc %in% c("Geo-located driller well", "Driller-located driller well")); n}
groundwater-level observations (one observation per well log collected at the time of well construction) recorded by drillers onto well logs;
of these observations, \Sexpr{sum(x <- obs.wells.head$PESTNAME[is.obs] %in% obs.wells@data$PESTNAME[is])} were recorded during the model-calibration period.
The location of driller wells in the model area is shown in \hyperref[fig:map_wells_driller]{figure~\ref{fig:map_wells_driller}}.
Methods used to determine the geographic coordinate (longitude and latitude) of a driller well varied.
For \Sexpr{x <- round(sum(obs.wells@data$desc == "Driller-located driller well") / n * 100); x} percent of the driller wells,
either a hand-held GPS measurement or street address was recorded by the driller onto the well log and used to determine (either directly or indirectly) its geographic coordinate.
Geolocation software was used to convert street addresses to geographic coordinates;
their locations typically adjusted to coincide with the center of the land-owner's property (these land parcels are typically less than 0.004 square-kilometers [km\textsuperscript{2}] or 1 acre,
although, some are as large as 0.04 km\textsuperscript{2} [10 acres]).
Driller wells of this type are hereafter referred to as ``Geolocated driller wells''.
The remaining \Sexpr{100L - x} percent of the driller wells were located using the Public Land Survey System (PLSS) township, range, section, quarter-section, quarter-quarter section division of the state (TRSQQ) recorded by the driller onto the well log.
The PLSS records were converted to geographic coordinates using assumed site locations at the center of their quarter-quarter section (0.16 km\textsuperscript{2} or 40 acres).
Driller wells of this type are hereafter referred to as ``PLSS-located driller wells''.
For all driller wells, the elevation of the land-surface measurement point was determined from
a digital elevation model at a horizontal grid resolution of about 10~m (33~ft) and vertical accuracy of about $\pm$1.5 m ($\pm$5 ft) (10-m DEM).
The method used for the driller-reported depth-to-water measurement was never reported.
The accuracy of driller-reported groundwater-level measurements could not be quantified,
although groundwater levels for the geolocated driller wells are assumed less accurate (at least horizontally) for the PLSS-located driller wells because a TRSQQ is 0.16 km\textsuperscript{2} and most land parcels are less than 0.004 km\textsuperscript{2} in area.
Groundater-levels in two of the Sun Valley Water and Sewer District (SVWSD) production wells were recorded during the 1995 through 2010 time period under non-pumping conditions.
\hyperref[fig:map_wells_svws_nat]{Figure~\ref{fig:map_wells_svws_nat}} shows the location of the SVWSD production wells in the model area.
There were \Sexpr{is <- obs.wells@data$desc %in% "Sun Valley Water and Sewer well"; sum(obs.wells.head$PESTNAME %in% obs.wells@data$PESTNAME[is])}
groundwater-level observations recorded in these wells during the 16-year simulation;
of these observations, \Sexpr{sum(obs.wells.head$PESTNAME[is.obs] %in% obs.wells@data$PESTNAME[is])} were recorded during the model-calibration period.
Depth-to-water measurements were made by a SVWSD employee using a submerged air line method.
Of the two SVWSD production wells,
one (well No. \Sexpr{with(obs.wells@data, id[PESTNAME == 6001])}) was located using a hand-held GPS unit (horizontal accuracy of about $\pm$3 m [$\pm$10 ft]) and 10-m DEM,
and the other (433936114210701, well No. \Sexpr{with(obs.wells@data, id[PESTNAME == 6002])}) was surveyed as part of the USGS groundwater-monitoring network.
Wells of this type are hereafter referred to as ``SVWSD wells''.
The Nature Conservancy (TNC) groundwater-monitoring network consists of \Sexpr{sum(is <- obs.wells@data$desc == "Nature Conservancy well")} wells,
with \Sexpr{format(sum(obs.wells.head$PESTNAME %in% obs.wells@data$PESTNAME[is]), big.mark=",")}
groundwater-level observations (average daily values) recorded for these wells during the 16-year simulation (\hyperref[fig:map_wells_svws_nat]{fig.~\ref{fig:map_wells_svws_nat}}),
and all within the model-calibration period.
The period-of-record for groundwater-level observations is relatively short in duration, spanning the last 9 months of the model-calibration period.
In each of the wells, a submerged pressure transducer installed at a fixed depth in the well, collected nearly continuous measurements of the height of the water column above the transducer.
Groundwater-level elevations were obtained by adding the height of water column to the elevation of the submerged pressure transducer,
where transducer elevation is determined by subtracting the depth to the pressure transducer from the elevation of a land-surface measurement point.
Groundwater-level data provided by these transducers is not adequately supported by quality-assurance procedures and documentation;
therefore, the vertical accuracy of groundwater-level observations in these wells could not be quantified.
The location of wells in this network were either surveyed as part of the USGS groundwater-monitoring network or located with a hand-held GPS unit and 10-m DEM.
Wells in this monitoring network hereafter referred to as ``TNC wells''.
<<table_wells_usgs, echo=FALSE, results="asis">>=
PrintTable(idxs <- 1:(n <- 48L), FALSE, label <- "table_wells_usgs")
@
\captionsetup[table]{list=no}
<<echo=FALSE, results="asis">>=
s <- unique(c(seq(n, nrow(wells@data), 56L), nrow(wells@data)))
for (i in head(seq_along(s), -1)) {
cat("\\addtocounter{table}{-1}\n")
PrintTable((s[i] + 1L):s[i + 1], s[i + 1L] == tail(s, 1), paste0(label, "_", i))
}
@
\captionsetup[table]{list=yes}
\clearpage
<<include=FALSE>>=
v <- "Location of wells in the U.S. Geological Survey (USGS) groundwater monitoring network, Wood River Valley, Idaho."
v <- c(paste("Map showing", paste0(tolower(substr(v, 1, 1)), substr(v, 2, nchar(v)))), v)
@
<<map_wells_usgs, echo=FALSE, fig.width=fin.map.0[1], fig.height=fin.map.0[2], fig.scap=sprintf("{%s}", v[1]), fig.cap=sprintf("{%s}", v[2])>>=
PlotMap(crs(hill.shading), xlim=usr.map[1:2], ylim=usr.map[3:4],
bg.image=hill.shading, dms.tick=TRUE, bg.image.alpha=0.6,
rivers=list(x=streams.rivers), lakes=list(x=lakes),
credit=credit, scale.loc="bottomleft")
plot(alluvium.extent, border="#FFFFFFCC", col=NA, add=TRUE)
p <- obs.wells[obs.wells@data$desc == "Observation well", ]
col <- "#FF4B12"
bg <- "#FF4B12"
points(p, pch=21, cex=0.7, col=col, bg=bg, lwd=0.25)
pos <- c(2, 4, 1, 1, 1, 3, 4, 1, 1, 1,
3, 3, 4, 1, 1, 2, 3, 3, 3, 4,
1, 1, 2, 4, 1, 3, 1, 1, 1, 3,
1, 1, 1, 1, 1, 4, 2, 2, 1, 3,
3, 4, 2, 4, 2, 2, 2, 3, 2, 4,
1, 3, 4, 3, 3, 4, 2, 3, 4, 2,
4, 2, 1, 4, 4, 4, 2, 2, 3, 4,
2, 4, 2, 4, 1, 2, 4, 1, 1, 4,
2, 4, 2, 4, 2, 2, 1, 3, 2, 4,
3, 4, 3, 2)
text(p, labels=p@data$id, col="#333333", cex=0.6, pos=pos, offset=0.3)
leg <- "USGS well"
legend("topright", leg, pch=21, col=col, pt.bg=bg, pt.lwd=0.25, pt.cex=0.8,
inset=0.02, cex=0.7, box.lty=1, box.lwd=0.5, bg="#FFFFFFE7")
AddInsetMap(idaho, width=1, main.label=list("IDAHO", adj=c(-0.4, -4.9)),
sub.label=list("Map area", adj=c(0.5, 2.5)), loc="topleft")
@
<<include=FALSE>>=
v <- "Location of geolocated driller wells and Public Land Survey System (PLSS)-located driller wells in the Wood River Valley, Idaho."
v <- c(paste("Map showing", paste0(tolower(substr(v, 1, 1)), substr(v, 2, nchar(v)))), v)
@
<<map_wells_driller, echo=FALSE, fig.width=fin.map.0[1], fig.height=fin.map.0[2], fig.scap=sprintf("{%s}", v[1]), fig.cap=sprintf("{%s}", v[2])>>=
PlotMap(crs(hill.shading), xlim=usr.map[1:2], ylim=usr.map[3:4],
bg.image=hill.shading, dms.tick=TRUE, bg.image.alpha=0.6,
rivers=list(x=streams.rivers), lakes=list(x=lakes),
credit=credit, scale.loc="bottomleft")
plot(alluvium.extent, border="#FFFFFFCC", col=NA, add=TRUE)
p.1 <- obs.wells[obs.wells@data$desc == "Geo-located driller well", ]
p.2 <- obs.wells[obs.wells@data$desc == "Driller-located driller well", ]
col <- c("#9061C2DD", "#FFC800DD")
bg <- c("#9061C280", "#FFC80080")
pch <- c(21, 22)
cex <- c(0.7, 0.6)
points(p.1, pch=pch[1], cex=cex[1], col=col[1], bg=bg[1], lwd=0.25)
points(p.2, pch=pch[2], cex=cex[2], col=col[2], bg=bg[2], lwd=0.25)
no.1 <- paste0("(", paste(range(p.1@data$id), collapse="-"), ")")
no.2 <- paste0("(", paste(range(p.2@data$id), collapse="-"), ")")
leg <- c(paste("Geolocated driller well", no.1),
paste("PLSS-located driller well", no.2))
legend("topright", leg, pch=pch, col=col, pt.bg=bg, pt.cex=cex,
pt.lwd=0.25, inset=0.02, cex=0.7, box.lty=1, box.lwd=0.5,
bg="#FFFFFFE7")
@
<<include=FALSE>>=
v <- "Location of two Sun Valley Water and Sewer District (SVWSD) production wells, and wells in The Nature Conservancy (TNC) groundwater monitoring network, Wood River Valley, Idaho."
v <- c(paste("Map showing", paste0(tolower(substr(v, 1, 1)), substr(v, 2, nchar(v)))), v)
@
<<map_wells_svws_nat, echo=FALSE, fig.width=fin.map.0[1], fig.height=fin.map.0[2], fig.scap=sprintf("{%s}", v[1]), fig.cap=sprintf("{%s}", v[2])>>=
PlotMap(crs(hill.shading), xlim=usr.map[1:2], ylim=usr.map[3:4],
bg.image=hill.shading, dms.tick=TRUE, bg.image.alpha=0.6,
rivers=list(x=streams.rivers), lakes=list(x=lakes),
credit=credit, scale.loc="bottomleft")
plot(alluvium.extent, border="#FFFFFFCC", col=NA, add=TRUE)
p.1 <- obs.wells[obs.wells@data$desc == "Sun Valley Water and Sewer well", ]
p.2 <- obs.wells[obs.wells@data$desc == "Nature Conservancy well", ]
col <- c("#A40802", "#1F78B4")
pch <- c(21, 22)
cex <- c(0.7, 0.7)
points(p.1, pch=pch[1], cex=cex[1], col=col[1], bg=col[1], lwd=0.25)
points(p.2, pch=pch[2], cex=cex[2], col=col[2], bg=col[2], lwd=0.25)
pos <- c(4, 4)
text(p.1, labels=p.1@data$id, col="#333333", cex=0.6, pos=pos, offset=0.3)
pos <- c(1, 1, 1, 4, 1, 1, 1, 1, 4, 1)
text(p.2, labels=p.2@data$id, col="#333333", cex=0.6, pos=pos, offset=0.3)
leg <- c("SVWSD well", "TNC well")
legend("topright", leg, pch=pch, col=col, pt.bg=col, pt.cex=cex,
pt.lwd=0.25, inset=0.02, cex=0.7, box.lty=1, box.lwd=0.5, bg="#FFFFFFE7")
@
\clearpage
% =========================================================================
\subsection{Stream-Aquifer Flow Exchange in River Reaches}
Stream-aquifer flow exchange is simulated along the Big Wood River, Willow Creek, Silver Creek,
and spring-fed tributary streams (\hyperref[fig:map_sites]{fig.~\ref{fig:map_sites}}).
Whether a river or stream loses or gains water as it flows downstream is dependent on the head difference between the stream and the aquifer,
and the hydraulic conductance of the riverbed.
The model-simulated flow-exchange between the stream and aquifer was assessed using field measurements.
<<include=FALSE>>=
v <- "River network and streamflow measurement sites in the Wood River Valley, Idaho."
v <- c(paste("Map showing", paste0(tolower(substr(v, 1, 1)), substr(v, 2, nchar(v)))), v)
@
<<map_sites, echo=FALSE, fig.width=fin.map.0[1], fig.height=fin.map.0[2], fig.scap=sprintf("{%s}", v[1]), fig.cap=sprintf("{%s}", v[2])>>=
sites <- seepage.study
sites <- sites[!sites@data$Type %in% c("Return", "Diversion", "Exchange well inflow"), ]
sites <- sites[!duplicated(sites@data$Name), ]
sites@data$site.no <- seq_len(nrow(sites@data))
PlotMap(crs(hill.shading), xlim=usr.map[1:2], ylim=usr.map[3:4],
bg.image=hill.shading, dms.tick=TRUE, bg.image.alpha=0.6,
credit=credit, scale.loc="bottomleft")
plot(alluvium.extent, border="#FFFFFFCC", col="#FFFFFF9A", add=TRUE)
plot(river.reaches, col="#3399CC", lwd=0.5, add=TRUE)
plot(tributary.streams, col="#3399CC", lwd=0.5, add=TRUE)
is.continuous <- sites@data$SiteNo %in% streamgages@data$SiteNo
cols <- rep("#FDFDFD", length(is.continuous))
cols[is.continuous] <- "#A40802"
points(sites, pch=24, cex=0.8, col="#A40802", bg=cols)
pos <- c(2, 4, 3, 3, 1, 1, 3, 1, 1, 4,
3, 3, 1, 3, 3, 3, 4, 2, 2, 3,
1, 1, 3, 1, 3, 1, 3, 1, 3, 1,
3, 3)
text(sites, labels=sites@data$site.no, col="#333333", cex=0.6, pos=pos, offset=0.3)
lab <- paste0(max(sites@data$site.no), "\n")
text(par("usr")[2], par("usr")[3], labels=lab, col="#333333", cex=0.6, pos=2,
offset=0.1)
text(2478800, 1355000, labels="Big Wood River", cex=0.6, col="#3399CC", font=3, srt=75)
text(2493200, 1346300, labels="Silver\nCreek", cex=0.6, col="#3399CC", font=3, srt=0)
text(2478500, 1347700, labels="Willow Creek", cex=0.6, col="#3399CC", font=3, srt=15)
text(2483000, 1351600, labels="spring-fed\ntributaries", cex=0.6, col="#3399CC", font=3)
leg <- c("Rivers and streams", "Streamgage with continuous record",
"Measurement station without a gage")
legend("topright", leg, pch=c(NA, 24, 24), lwd=c(1, NA, NA),
col=c("#3399CC", "#A40802", "#A40802"), pt.bg=c(NA, "#A40802", "#FDFDFD"),
pt.cex=0.8, inset=0.02, cex=0.7, box.lty=1, box.lwd=0.5, bg="#FFFFFFE7")
@
% =========================================================================
\subsubsection{Streamflows}
<<echo=FALSE>>=
GetSiteNo <- function(i) {
sprintf("site No.~%s", sites@data$site.no[sites@data$SiteNo %in% i])
}
@
Continuous streamflow measurements are available from nine streamgages (8 gages operated by the USGS and one by the Idaho Power Company) in the Wood River Valley, Idaho
(\hyperref[table_sites]{table~\ref{table_sites}}, \hyperref[fig:map_sites]{fig.~\ref{fig:map_sites}}).
The Big Wood River near Ketchum (13135500, \Sexpr{GetSiteNo(13135500)}) and the North Fork Big Wood River near Sawtooth NRA Headquarters near Ketchum (13135520, \Sexpr{GetSiteNo(13135520)}) streamgage measure surface-water inflow at the northern boundary of the model.
The Big Wood River at Hailey (13139510, \Sexpr{GetSiteNo(13139510)}) streamgage lies at about the midpoint of the river within the model domain, and the Big Wood River at Stanton Crossing near Bellevue (13140800, \Sexpr{GetSiteNo(13140800)}) is at the southern boundary where the river exits the model domain.
Three tributaries to the Big Wood River have streamgages; these are, Warm Springs Creek near Ketchum (13137000, \Sexpr{GetSiteNo(13137000)}), Trail Creek at Ketchum (13137500, \Sexpr{GetSiteNo(13137500)}), and East Fork Big Wood River at Gimlet (13138000, \Sexpr{GetSiteNo(13138000)}).
The Willow Creek near Bellevue (13140900, \Sexpr{GetSiteNo(13140900)}) streamgage is operated by Idaho Power Company and measures spring-fed stream tributaries that enter the Big Wood River downstream of the model boundary near the southwest boundary of the model.
The Silver Creek at Sportsman Access (13150430, \Sexpr{GetSiteNo(13150430)}) streamgage measures spring-fed stream tributaries that enter Silver Creek about 11 river kilometers (7 miles) upstream of the southeast model boundary.
The period of record for streamgages with continuous records are given in \hyperref[table_sites]{table~\ref{table_sites}}.
Streamgages not in operation during the model simulation period (1995--2010) include:
the Big Wood River near Ketchum (\Sexpr{GetSiteNo(13135500)}),
the North Fork Big Wood River near Sawtooth NRA Headquarters near Ketchum (\Sexpr{GetSiteNo(13135520)}),
Warm Springs Creek near Ketchum (\Sexpr{GetSiteNo(13137000)}),
Trail Creek at Ketchum (\Sexpr{GetSiteNo(13137500)}), and
East Fork Big Wood River at Gimlet (\Sexpr{GetSiteNo(13138000)}).
All of these streamgages are located upstream of the Big Wood River at Hailey streamgage (\Sexpr{GetSiteNo(13139510)}), and are either on the Big Wood River or on one of its tributary streams.
Furthermore, the periods of record for these streamgages all coincide with the period of record for the Hailey streamgage (1915--present).
Using the coinciding streamflow data, linear regression models were developed for predicting the missing streamflow records (\hyperref[table_lm]{table~\ref{table_lm}}).
The USGS made three seepage runs: August 2012, October 2012, and March 2013 (\hyperref[table_sites]{table~\ref{table_sites}}, \hyperref[fig:map_sites]{fig.~\ref{fig:map_sites}}) \citep{Bartolino2014}.
Based on these measurements, the August streamflow from ungaged tributaries to the Big Wood River upstream of the Big Wood River at Hailey streamgage (\Sexpr{GetSiteNo(13139510)})
was estimated to be 9,542 cubic meters per day (m\textsuperscript{3}/d) (3.9 cubic feet per second [cfs]).
Contributions from ungaged tributaries to the Big Wood River downstream of the Big Wood River at Hailey (\Sexpr{GetSiteNo(13139510)}) streamgage were estimated to be zero during the October and March seepage runs.
<<table_sites, echo=FALSE, results="asis">>=
d <- sites@data
d$POR <- "Aug, Oct 2012; Mar 2013"
d$POR[d$SiteNo == 432352114161500] <- "March 2013"
d$POR[d$SiteNo == 432248114163400] <- "March 2013"
d$POR[d$SiteNo == 434404114215200] <- "Aug, Oct 2012"
d$POR[d$SiteNo == 432805114113800] <- "Aug, Oct 2012"
d$POR[d$SiteNo == 13135510] <- "Aug, Oct 2012"
d$POR[d$SiteNo == 13137900] <- "Aug, Oct 2012"
d$POR[d$SiteNo == 13135500] <- "1948--1972, 2011--present"
d$POR[d$SiteNo == 13135520] <- "2011--present"
d$POR[d$SiteNo == 13137000] <- "1920--1921, 2011--present"
d$POR[d$SiteNo == 13137500] <- "1920--1921, 2011--present"
d$POR[d$SiteNo == 13138000] <- "1920--1921, 2011--present"
d$POR[d$SiteNo == 13139510] <- "1915--present"
d$POR[d$SiteNo == 13140800] <- "1996--present"
d$POR[d$SiteNo == 13140900] <- "1999--present"
d$POR[d$SiteNo == 13150430] <- "1974--present"
d <- d[, c("site.no", "SiteNo", "Name", "POR")]
columns <- c("Site \\\\ No.", "Site \\\\ identifier", "Name", "Period of record")
colnames(d) <- sprintf("\\textbf{\\shortstack{%s}}", columns)
cap1 <- "Streamflow measurement sites located on the Big Wood River, Willow Creek, Silver Creek, and spring-fed tributaries."
cap2 <- c("\\textbf{Site No.}: identifier used to locate measurement sites on maps located in figures and as a cross reference with data in other tables.",
"\\textbf{Site identifier}: unique numerical identifiers used to access streamflow data (\\url{https://waterdata.usgs.gov/nwis}).",
"\\textbf{Name}: local measurement site name used in this study.")
tbl <- xtable::xtable(d, label="table_sites")
xtable::caption(tbl) <- c(sprintf("%s [%s]", cap1, paste(cap2, collapse=" ")), cap1)
xtable::digits(tbl) <- 0
xtable::align(tbl) <- c("l", "c", "c", "p{3.7in}", "l")
print(tbl, include.rownames=FALSE, caption.placement="top", booktabs=TRUE,
sanitize.colnames.function=function(x){x}, size="\\small", NA.string="NA")
@
<<table_lm, echo=FALSE, results="asis">>=
ids <- c(13135500, 13135520, 13137000, 13137500, 13138000)
d <- sites@data[match(ids, sites@data$SiteNo), c("Name", "site.no")]
d$Period <- c("Jun 1948 -- Sep 1971, May 2011 -- Sep 2013",
"May 2011 -- Sep 2013", "Feb 2011 -- Mar 2014",
"Dec 2010 -- Mar 2014", "Nov 2011 -- Sep 2013")
d$Slope <- c(0.34, 0.16, 0.17, 0.12, 0.12)
d$Intercept <- c(0.05, -5.74, 6.59, -11.90, -7.21) * cfs.to.m3.per.d
d$R.squared <- c(0.975, 0.863, 0.885, 0.865, 0.877)
columns <- c("Station name", "Site \\\\ No.", "Coinciding \\\\ time period",
"Slope \\\\ (1)", "Intercept \\\\ (m\\textsuperscript{3}/d)",
"R\\textsuperscript{2} \\\\ (1)")
colnames(d) <- sprintf("\\textbf{\\shortstack{%s}}", columns)
cap1 <- paste("Characteristics of the linear regression models used to estimate streamflow at various streamgages during periods of missing data.",
"The independent variable of the linear regression models is streamflow measured at the Big Wood River, Hailey streamgage (13139510), in cubic meters per day.")
cap2 <- c("\\textbf{Station name}: local streamgage name used in this study.",
"\\textbf{Site No.}: identifier used to locate streamflow measurement sites in \\hyperref[fig:map_sites]{figure~\\ref{fig:map_sites}} and \\hyperref[table_sites]{table~\\ref{table_sites}}.",
"\\textbf{Coinciding time period}: when streamflow data were available at both streamgages.",
"\\textbf{Slope} and \\textbf{Intercept}: of the linear regression model.",
"\\textbf{R\\textsuperscript{2}}: the coefficient of determination.",
"\\textbf{Abbreviations}: m\\textsuperscript{3}/d, cubic meters per day")
tbl <- xtable::xtable(d, label="table_lm")
xtable::caption(tbl) <- c(sprintf("%s [%s]", cap1, paste(cap2, collapse=" ")), cap1)
xtable::digits(tbl)[5:7] <- c(2, 0, 3)
xtable::align(tbl) <- c("l", "p{2.8in}", "c", "p{1.2in}", "r", "r", "r")
print(tbl, include.rownames=FALSE, caption.placement="top", booktabs=TRUE,
sanitize.colnames.function=function(x){x}, size="\\small", NA.string="--",
sanitize.text.function=identity, format.args=list(big.mark=","))
@
% ===
\subsubsection{Returns}
<<echo=FALSE>>=
# Apply hack for records in seepage.study that are missing from div.ret.exch
is.missing <- with(seepage.study@data, Type %in% c("Diversion", "Return", "Exchange well inflow") & !Name %in% div.ret.exch$Name)
missing.rec <- seepage.study[is.missing, c("Name", "Type"), drop=FALSE]
missing.rec@data$LocSource <- NA
missing.rec@data$BigReach <- NA
div.ret.exch <- rbind(div.ret.exch, missing.rec)
p.ret <- div.ret.exch[div.ret.exch@data$Type %in% c("Return", "Exchange well inflow"), ]
p.ret@data$ret.no <- seq_along(p.ret)
GetRetNo <- function(i) {
return(sprintf("return No.~%s", paste(p.ret@data$ret.no[p.ret$Name %in% i], collapse=",~")))
}
@
There are three water-source types for streamflow returns to the Big Wood River, Silver Creek, and spring-fed tributary streams.
These water-source types are: (1) effluent from wastewater treatment plants (WWTP), (2) surface water from canals, and (3) pumped groundwater from exchange wells.
Effluent flows into the Big Wood River from three municipal WWTP's (\hyperref[table_ret]{table~\ref{table_ret}}, \hyperref[fig:map_ret]{fig.~\ref{fig:map_ret}}).
The Ketchum Sun Valley (which includes the City of Ketchum and the Sun Valley Water and Sewer District) WWTP (\Sexpr{GetRetNo("Ketchum Sun Valley WWTP")}) and
The Meadows WWTP (\Sexpr{GetRetNo("The Meadows WWTP")}) outfalls are into the river between the Near Ketchum (13135500) and Hailey (13139510) streamgages.
The City of Hailey WWTP outfall (\Sexpr{GetRetNo("Hailey WWTP")}) is into the river between the Hailey (13139510) and the Stanton Crossing near Bellevue (13140800) streamgages.
Records of wastewater treatment plant return flows are available for various years (1995--2012 for the Ketchum Sun Valley WWTP, 1996--2012 for the City of Hailey WWTP, and 2000--2012 for The Meadows WWTP).
Effluent return flows during periods of missing data (1995 for the City of Hailey WWTP and 1995--1999 for The Meadows WWTP) were assumed to be similar to the first year for which data were available.
There are few measured returns from canals to rivers or streams in the study area (\hyperref[table_ret]{table~\ref{table_ret}}, \hyperref[fig:map_ret]{fig.~\ref{fig:map_ret}}).
Water District 37 has recorded streamflow returns from the District 45 canal system to the Loving Creek area (\Sexpr{GetRetNo("District 45 Legacy Project")}).
In recent years, Water District 37 began recording returns to the Big Wood River from canals that primarily deliver water for aesthetic, non-consumptive uses;
such as the Gimlet and Rinker irrigation systems (\Sexpr{GetRetNo(c("Comstock 10 Outflow", "Comstock 10A Outflow"))}).
Unmeasured returns from irrigation canals to streams are thought to be negligible in the study area
(Kevin Lakey, Watermaster Water District 37, written commun., August 27, 2013).
Exchange wells pump water into a river or stream so that an equivalent amount of water can be diverted at a downstream location.
There are 9 exchange wells in the study area and diversion amounts are recorded by Water District 37.
Eight of these wells discharge into Silver Creek or its tributaries above the Silver Creek at Sportsman Access streamgage (13150430, \Sexpr{GetSiteNo(13150430)}).
The other well (\Sexpr{GetRetNo("Mill In 16P")}) discharges into Silver Creek downstream of the Silver Creek at Sportsman Access streamgage (13150430).
<<include=FALSE>>=
v <- "Streamflow returns from irrigation canals or ponds, and exchange wells located on the Big Wood River, Silver Creek, and spring-fed tributaries."
v <- c(paste("Map showing", paste0(tolower(substr(v, 1, 1)), substr(v, 2, nchar(v)))), v)
@
<<map_ret, echo=FALSE, fig.width=fin.map.0[1], fig.height=fin.map.0[2], fig.scap=sprintf("{%s}", v[1]), fig.cap=sprintf("{%s}", v[2])>>=
PlotMap(crs(hill.shading), xlim=usr.map[1:2], ylim=usr.map[3:4],
bg.image=hill.shading, dms.tick=TRUE, bg.image.alpha=0.6,
credit=credit, scale.loc="bottomleft")
plot(alluvium.extent, border="#FFFFFFCC", col="#FFFFFF9A", add=TRUE)
plot(river.reaches, col="#3399CC", lwd=0.5, add=TRUE)
plot(tributary.streams, col="#3399CC", lwd=0.5, add=TRUE)
p <- p.ret[p.ret@data$Type == "Return", ]
cols <- c("#F3077D", "#7FAF1B")
points(p, pch=23, cex=0.7, col=cols[1], bg=cols[1])
pos <- c(2, 4, 1, 2, 4, 3, 4)
text(p, labels=p@data$ret.no, col="#333333", cex=0.6, pos=pos, offset=0.3)
p <- p.ret[p.ret@data$Type == "Exchange well inflow", ]
points(p, pch=21, cex=0.7, col=cols[2], bg=cols[2])
pos <- c(2, 3, 4, 1, 2, 3, 3, 1, 3, 1,
1, 2, 3, 2)
text(p, labels=p@data$ret.no, col="#333333", cex=0.6, pos=pos, offset=0.3)
leg <- c("Irrigation canal or pond return", "Exchange-well return")
legend("topright", leg, pch=c(23, 21), lwd=NA, col=cols, pt.bg=cols,
pt.cex=0.7, inset=0.02, cex=0.7, box.lty=1, box.lwd=0.5, bg="#FFFFFFE7")
@
<<table_ret, echo=FALSE, results="asis">>=
d <- p.ret@data
d$Type <- as.character(d$Type)
d$Type[d$Type == "Return"] <- "Irrigation canal or pond"
d$Type[d$Type == "Exchange well inflow"] <- "Exchange well"
d <- d[, c("ret.no", "Name", "Type")]
columns <- c("Return \\\\ No.", "Name", "Water-source")
colnames(d) <- sprintf("\\textbf{\\shortstack{%s}}", columns)
cap1 <- "Streamflow returns located on the Big Wood River, Silver Creek, and spring-fed tributaries."
cap2 <- c("\\textbf{Return No.}: identifier used to locate returns in \\hyperref[fig:map_ret]{figure~\\ref{fig:map_ret}}.",
"\\textbf{Name}: local name used to identify the return-flow location in this study.",
"\\textbf{Water-source}: the water type for return flows.")
tbl <- xtable::xtable(d, label="table_ret")
xtable::caption(tbl) <- c(sprintf("%s [%s]", cap1, paste(cap2, collapse=" ")), cap1)
xtable::digits(tbl) <- 0
xtable::align(tbl) <- c("l", "c", "p{2.0in}", "l")
print(tbl, include.rownames=FALSE, caption.placement="top", booktabs=TRUE,
sanitize.colnames.function=function(x){x}, size="\\small", NA.string="--")
@
\subsubsection{Diversions}
Surface-water irrigation diversions from the Big Wood River, Willow Creek, Silver Creek, and spring-fed tributary streams have been recorded by Water District 37 and Water District 37M since 1920
(\hyperref[table_div]{table~\ref{table_div}}, \hyperref[fig:map_div]{fig.~\ref{fig:map_div}}).
IDWR employees compiled monthly diversion data for the simulation period (1995--2010) that are available from April through September each year.
The irrigation season extends through October 31, and the Water Districts do not record diversions that occur between September 30 and April 1 of the following year.
Diversions recorded during the month of October were estimated to be 25 percent of September diversions.
<<include=FALSE>>=
v <- "Streamflow diversions along on the Big Wood River, Willow Creek, Silver Creek, and spring-fed tributary streams."
v <- c(paste("Map showing", paste0(tolower(substr(v, 1, 1)), substr(v, 2, nchar(v)))), v)
@
<<map_div, echo=FALSE, fig.width=fin.map.0[1], fig.height=fin.map.0[2], fig.scap=sprintf("{%s}", v[1]), fig.cap=sprintf("{%s}", v[2])>>=
p.div <- div.ret.exch[div.ret.exch@data$Type == "Diversion", ]
p.div@data$div.no <- seq_along(p.div)
PlotMap(crs(hill.shading), xlim=usr.map[1:2], ylim=usr.map[3:4],
bg.image=hill.shading, dms.tick=TRUE, bg.image.alpha=0.6,
credit=credit, scale.loc="bottomleft")
plot(alluvium.extent, border="#FFFFFFCC", col="#FFFFFF9A", add=TRUE)
plot(river.reaches, col="#3399CC", lwd=0.5, add=TRUE)
plot(tributary.streams, col="#3399CC", lwd=0.5, add=TRUE)
points(p.div, pch=22, cex=0.7, col="#F98C64", bg="#F98C64")
lab <- formatC(p.div@data$div.no)
lab[31] <- "31-54"
lab[32:54] <- ""
pos <- c(3, 4, 1, 2, 4, 1, 2, 2, 1, 4,
4, 3, 4, 3, 1, 4, 1, 2, 1, 4,
4, 2, 2, 4, 4, 1, 2, 3, 1, 1,
2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 4, 1, 3, 2,
2, 4, 1, 2, 4, 2, 2, 4, 2, 4,
2, 4, 3, 4, 4, 3, 1, 1, 1, 3,
2, 4, 1, 1, 3, 1, 2, 4, 3, 4,
2, 4, 1, 2, 3, 1, 3, 4, 1, 1,
3, 4, 2, 2)
text(p.div, labels=lab, col="#333333", cex=0.6, pos=pos, offset=0.3)
leg <- "Stream diversion"
legend("topright", leg, pch=22, lwd=NA, col="#F98C64", pt.bg="#F98C64",
pt.cex=0.7, inset=0.02, cex=0.7, box.lty=1, box.lwd=0.5, bg="#FFFFFFE7")
@
<<table_div, echo=FALSE, results="asis">>=
d <- p.div@data
d$SiteNo <- seepage.study@data$SiteNo[match(d$Name, seepage.study@data$Name)]
d <- d[, c("div.no", "SiteNo", "Name")]
columns <- c("Div. \\\\ No.", "Site \\\\ identifier", "Name")
colnames(d) <- sprintf("\\textbf{\\shortstack{%s}}", columns)
cap1 <- "Streamflow diversions located on the Big Wood River, Willow Creek, Silver Creek, and spring-fed tributaries."
cap2 <- c("\\textbf{Div. No.}: identifier used to locate diversions in \\hyperref[fig:map_div]{figure~\\ref{fig:map_div}}.",
"\\textbf{Site identifier}: unique numerical identifiers used to access streamflow measurement data (\\url{https://waterdata.usgs.gov/nwis}).",
"\\textbf{Name}: local diversion name used in this study.",
"\\textbf{Abbreviations}: --, not available")
idxs <- 1:52
tbl <- xtable::xtable(d[idxs, ], label="table_div")
xtable::caption(tbl) <- c(sprintf("%s [%s]", cap1, paste(cap2, collapse=" ")), cap1)
xtable::digits(tbl) <- 0
xtable::align(tbl) <- "lccl"
print(tbl, include.rownames=FALSE, caption.placement="top", booktabs=TRUE,
sanitize.colnames.function=function(x){x}, size="\\small", NA.string="--")
@
\captionsetup[table]{list=no}
\addtocounter{table}{-1}
<<echo=FALSE, results="asis">>=
tbl <- xtable::xtable(d[seq_len(nrow(d))[-idxs], ], label="table_div_1")
xtable::caption(tbl) <- sprintf("%s---Continued", cap1)
xtable::digits(tbl) <- 0
xtable::align(tbl) <- "lccl"
print(tbl, include.rownames=FALSE, caption.placement="top", booktabs=TRUE,
sanitize.colnames.function=function(x){x}, size="\\small", NA.string="--")
@
\captionsetup[table]{list=yes}
% =========================================================================
\subsubsection{River reaches}
<<echo=FALSE>>=
rr <- river.reaches[river.reaches@data$BigReach != "None", ]
rr <- rr[order(rr@data$ReachNo), ]
reach.names <- unique(rr@data$BigReach)
reach.numbers <- match(rr@data$BigReach, reach.names)
GetReachNo <- function(i) {
d <- data.frame(ReachNo=seq_along(reach.names), Name=as.character(reach.names))
return(sprintf("reach No.~%s", d[d$Name == i, "ReachNo"]))
}
@
To simplify the structural complexity of the WRV river system, five river reaches were delineated based on the locations of streamgages with continuous streamflow records
(\hyperref[fig:map_reach]{fig.~\ref{fig:map_reach}}, \hyperref[table_reach]{table~\ref{table_reach}}).
A river reach is defined as a continuous run of surface water with similar hydrologic characteristics.
The upstream and downstream boundaries of a river reach typically coincide with the location of a streamgage with continuous records (\hyperref[table_reach]{table~\ref{table_reach}}).
The exception is Willow Creek (\Sexpr{GetReachNo("Willow Creek")}) and Silver Creek above Sportsman Access (\Sexpr{GetReachNo("Spring creeks abv Sportsman")}) which begin as spring-fed streams and there are no upstream streamgages for these reaches.
A flow-difference method was used to estimate the stream-aquifer flow exchange along a river reach (\hyperref[table_reach]{table~\ref{table_reach}}).
This method assumes that the changes in flow along a reach are solely attributed to groundwater inflows and outflows,
all other surface-water inflows (such as returns) and outflows (such as diversions) are either negligible or have been quantified.
Streamflow gain (or loss) for a reach was determined by subtracting inflow measurements from outflow measurements, and expressed as,
\begin{equation} \label{eq:reach_gain}
\Delta S = \mathit{RIV}_{\mathit{out}} - \sum \mathit{RIV}_{\mathit{in}} - \sum \mathit{TRIB} - \sum \mathit{RET} + \sum \mathit{DIV}
\end{equation}
where
\begin{description}
\item[\Delta S] is the difference in surface-water flow within a river reach for a given time, a positive value is a stream gain (gaining reach) and a negative value is a stream loss (losing reach), in cubic meters per day;
\item[\mathit{RIV}_{\mathit{out}}] is the volumetric outflow at the downstream end of the river reach, in cubic meters per day;
\item[\mathit{RIV}_{\mathit{in}}] is the volumetric inflow at the upstream end of the river reach, in cubic meters per day;
\item[\mathit{TRIB}] is the volumetric inflow from a tributary of the river reach, in cubic meters per day;
\item[\mathit{RET}] is the volumetric return flow from an irrigation canal, pond, wastewater-treatment plant, and (or) exchange-well return flow to the river reach, in cubic meters per day; and
\item[\mathit{DIV}] is the volumetric outflow from a stream diversion on the river reach, in cubic meters per day.
\end{description}
\noindent To facilitate a comparison with model-simulated results, equation~(\ref{eq:reach_gain}) is expressed in terms of aquifer recharge as,
\begin{equation} \label{eq:reach_rech}
Q = \sum \mathit{RIV}_{\mathit{in}} - \mathit{RIV}_{\mathit{out}} + \sum \mathit{TRIB} + \sum \mathit{RET} - \sum \mathit{DIV}
\end{equation}
where
\begin{description}
\item[Q] is the estimated stream-aquifer flow exchange in a river reach, a positive value is flow into the aquifer and a negative value is flow out of the aquifer, in cubic meters per day.
\end{description}
For each iteration of PEST, a model-simulated stream-aquifer flow exchange is calculated for each river reach and compared to its corresponding field-based estimate.
The differences between simulated and measured values is minimized during model calibration (equation~\ref{eq:min}) (1998--2010).
<<include=FALSE>>=
v <- "Assigned river reaches in the Wood River Valley, Idaho."
v <- c(paste("Map showing", paste0(tolower(substr(v, 1, 1)), substr(v, 2, nchar(v)))), v)
@
<<map_reach, echo=FALSE, fig.width=fin.map.0[1], fig.height=fin.map.0[2], fig.scap=sprintf("{%s}", v[1]), fig.cap=sprintf("{%s}", v[2])>>=
Pal <- function(...) {
cols1 <- rainbow(..., s=0.5, v=1)
cols2 <- rainbow(..., s=1, v=0.5)
is.even <- seq_along(cols1) %% 2 == 0
cols1[is.even] <- cols2[is.even]
return(cols1)
}
PlotMap(crs(hill.shading), xlim=usr.map[1:2], ylim=usr.map[3:4],
bg.image=hill.shading, dms.tick=TRUE, bg.image.alpha=0.6,
credit=credit, scale.loc="bottomleft")
plot(alluvium.extent, border="#FFFFFFCC", col="#FFFFFF9A", add=TRUE)
cols <- Pal(max(reach.numbers))[reach.numbers]
plot(rr, col=cols, lwd=0.5, add=TRUE)
text(getSpatialLinesMidPoints(rr), labels=reach.numbers,
col="#333333", cex=0.6, pos=4, offset=0.4)
ids <- c("13135500", "13139510", "13140800", "13140900", "13150430")
points(sites[sites@data$SiteNo %in% ids, ], pch=24, cex=0.7,
col="#333333B1", bg="#333333B1")
legend("topright", format(unique(reach.numbers)), lwd=1, col=unique(cols),
pt.cex=1, inset=0.02, cex=0.7, box.lty=1, box.lwd=0.5,
bg="#FFFFFFE7", title=expression(bold("Reach")))
@
<<table_reach, echo=FALSE, results="asis">>=
d <- data.frame(ReachNo=seq_along(reach.names))
d$Name <- c("Big Wood, Nr Ketchum to Hailey",
"Big Wood, Hailey to Stanton Crossing",
"Willow Creek",
"Silver Creek, above Sportsman Access",
"Silver Creek, Sportsman Access to Nr Picabo")
# match(c(13135500, 13139510, 0, 0, 13150430), sites@data$SiteNo)
d$UpNo <- c("\\textbf{1}", "\\textbf{14}", NA, NA, "\\textbf{31}")
# match(c(13139510, 13140800, 13140900, 13150430, 13150500), sites@data$SiteNo)
d$DownNo <- c("\\textbf{14}", "\\textbf{20}", "\\textbf{21}", "\\textbf{31}", "32")
# match(c(13135520, 13137000, 13137500, 13138000), sites@data$SiteNo)
d$TribNo <- c("2, 9, 10, 12", NA, NA, NA, NA)
# lapply(d$Name, function(i) which(p.div@data$BigReach == i))
d$div.no <- c("1--27", "28--69", "70--79", "80--93", "94--98")
# lapply(d$Name, function(i) which(p.ret@data$BigReach == i))
d$ret.no <- c("1--4", "5", NA, "6--18", "19")
columns <- c("Reach \\\\ No.",
"Name",
"Upstream \\\\ Site No.",
"Down- \\\\ stream \\\\ Site No.",
"Tributary \\\\ Site No.",
"Return \\\\ No.",
"Diversion \\\\ No.")
colnames(d) <- sprintf("\\textbf{\\shortstack{%s}}", columns)
cap1 <- "Assigned river reaches of the Big Wood River, Willow Creek, Silver Creek, and spring-fed tributaries."
cap2 <- c("\\textbf{Reach No.}: identifier used to locate river reaches in \\hyperref[fig:map_reach]{figure~\\ref{fig:map_reach}}.",
"\\textbf{Name}: local reach name used in this study.",
"\\textbf{Site No.}: identifier used to locate streamflow measurement sites in \\hyperref[fig:map_sites]{figure~\\ref{fig:map_sites}} and \\hyperref[table_sites]{table~\\ref{table_sites}}.",
"Entry in \\textbf{bold} indicates a streamgage with continuous record.",
"No upstream site number indicates that the reach is spring-fed.",
"\\textbf{Return No.}: identifier used to locate return flows in \\hyperref[fig:map_ret]{figure~\\ref{fig:map_ret}} and \\hyperref[table_ret]{table~\\ref{table_ret}}.",
"\\textbf{Diversion No.}: identifier used to locate stream diversions in \\hyperref[fig:map_div]{figure~\\ref{fig:map_div}} and \\hyperref[table_div]{table~\\ref{table_div}}.",
"\\textbf{Abbreviations}: --, not present.")
tbl <- xtable::xtable(d, label="table_reach")
xtable::caption(tbl) <- c(sprintf("%s [%s]", cap1, paste(cap2, collapse=" ")), cap1)
xtable::digits(tbl) <- 0
xtable::align(tbl) <- c("l", "c", "l", "c", "c", "c", "c", "c")
print(tbl, include.rownames=FALSE, caption.placement="top", booktabs=TRUE,
sanitize.colnames.function=function(x){x}, size="\\small", NA.string="--",
sanitize.text.function=identity)
@
% Big Wood River, near Ketchum to Hailey reach
During the simulation period (1995--2010) the October through April stream-aquifer flow exchange along the
Big Wood River, near Ketchum to Hailey reach (\Sexpr{GetReachNo("Big Wood, Nr Ketchum to Hailey")}) was estimated using equation~(\ref{eq:reach_rech}).
Because of probable ungaged tributary stream contributions in this reach, the May through September flow exchange could not be estimated.
Outflows from the reach are measured streamflow at the Big Wood River at Hailey streamgage (13139510, \Sexpr{GetSiteNo(13139510)}) and recorded irrigation diversions.
Inflows to the reach are correlated streamflows at the Big Wood River near Ketchum (13135500, \Sexpr{GetSiteNo(13135500)}),
North Fork Big Wood River near Sawtooth NRA Headquarters near Ketchum (13135520, \Sexpr{GetSiteNo(13135520)}),
Warm Springs Creek near Ketchum (13137000, \Sexpr{GetSiteNo(13137000)}),
Trail Creek at Ketchum (13137500, \Sexpr{GetSiteNo(13137500)}), and East Fork Big Wood River at Gimlet (13138000, \Sexpr{GetSiteNo(13138000)}) streamgages;
streamflow from ungaged tributaries; and recorded wastewater treatment plant return flows (\hyperref[table_reach]{table~\ref{table_reach}}).
The resultant stream-aquifer flow exchange is shown in \hyperref[fig:graph_nket_hai]{figure~\ref{fig:graph_nket_hai}};
aquifer discharges are typically smallest in February and largest in April.
Estimates range from
\Sexpr{FUN <- function(i) formatC(i, big.mark=",", format="d"); x <- reach.recharge$nKet_Hai; FUN(y <- min(x, na.rm=TRUE))} m\textsuperscript{3}/d (\Sexpr{FUN(y / cfs.to.m3.per.d)} cfs) to
\Sexpr{FUN(y <- max(x, na.rm=TRUE))} m\textsuperscript{3}/d (\Sexpr{FUN(y / cfs.to.m3.per.d)} cfs);
with a mean and standard deviation of
\Sexpr{FUN(y <- mean(x, na.rm=TRUE))} m\textsuperscript{3}/d (\Sexpr{FUN(y / cfs.to.m3.per.d)} cfs) and
\Sexpr{FUN(y <- sd(x, na.rm=TRUE))} m\textsuperscript{3}/d (\Sexpr{FUN(y / cfs.to.m3.per.d)} cfs), respectively.
<<include=FALSE>>=
v <- "Stream-aquifer flow exchange in the Big Wood River, near Ketchum to Hailey river reach."
v <- c(paste("Graph showing", paste0(tolower(substr(v, 1, 1)), substr(v, 2, nchar(v)))), v)
@
<<graph_nket_hai, echo=FALSE, fig.width=fin.graph.short[1], fig.height=fin.graph.short[2], fig.scap=sprintf("{%s}", v[1]), fig.cap=sprintf("{%s}", v[2])>>=
d.rech <- reach.recharge
ndays <- GetDaysInMonth(tail(d.rech$YearMonth, 1))
d.rech <- data.frame(Date=as.Date(paste0(d.rech$YearMonth, "01"), "%Y%m%d"),
d.rech[, -1])
d.rech <- rbind(d.rech, d.rech[nrow(d.rech), , drop=FALSE])
d.rech$Date[nrow(d.rech)] <- d.rech$Date[nrow(d.rech)] + ndays
ylab <- paste("Stream-aquifer flow exchange, in", c("cubic meters per day", "cubic feet per second"))
xlim <- as.Date(c("1995-01-01", "2011-01-01"), tz="MST")
d <- d.rech[, c("Date", "nKet_Hai")]
col <- "#C80C0B"
PlotGraph(d, ylab=ylab, xlim=xlim, col=col, fill="tozeroy",
conversion.factor=1 / cfs.to.m3.per.d,
scientific=c(FALSE, TRUE, FALSE), center.date.labels=TRUE,
seq.date.by="year")
@
% Big Wood River, Hailey to Stanton Crossing reach
The stream-aquifer flow exchange along the Big Wood River, Hailey to Stanton Crossing reach (\Sexpr{GetReachNo("Big Wood, Hailey to Stanton Crossing")}) was estimated using equation~(\ref{eq:reach_rech}).
Outflows from the reach are the measured streamflow at the Big Wood River at Stanton Crossing near Bellevue streamgage (13140800, \Sexpr{GetSiteNo(13140800)}) and recorded irrigation diversions.
Inflow to the reach is the measured streamflow at the Big Wood River at Hailey streamgage (\Sexpr{GetSiteNo(13139510)});
streamflow contributions from ungaged tributaries along this reach were assumed negligible.
The resultant stream-aquifer flow exchange is shown in \hyperref[fig:graph_hai_stc]{figure~\ref{fig:graph_hai_stc}}.
Estimates range from
\Sexpr{FUN <- function(i) formatC(i, big.mark=",", format="d"); x <- reach.recharge$Hai_StC; FUN(y <- min(x, na.rm=TRUE))} m\textsuperscript{3}/d (\Sexpr{FUN(y / cfs.to.m3.per.d)} cfs) to
\Sexpr{FUN(y <- max(x, na.rm=TRUE))} m\textsuperscript{3}/d (\Sexpr{FUN(y / cfs.to.m3.per.d)} cfs);
with a mean and standard deviation of
\Sexpr{FUN(y <- mean(x, na.rm=TRUE))} m\textsuperscript{3}/d (\Sexpr{FUN(y / cfs.to.m3.per.d)} cfs) and
\Sexpr{FUN(y <- sd(x, na.rm=TRUE))} m\textsuperscript{3}/d (\Sexpr{FUN(y / cfs.to.m3.per.d)} cfs), respectively.
Most months have positive values (aquifer recharge) indicating that it is a losing reach during most of the simulation period.
There was insufficient measurement data to estimate flow exchange prior to October 1996.
<<include=FALSE>>=
v <- "Stream-aquifer flow exchange in the Big Wood River, Hailey to Stanton Crossing river reach."
v <- c(paste("Graph showing", paste0(tolower(substr(v, 1, 1)), substr(v, 2, nchar(v)))), v)
@
<<graph_hai_stc, echo=FALSE, fig.width=fin.graph.short[1], fig.height=fin.graph.short[2], fig.scap=sprintf("{%s}", v[1]), fig.cap=sprintf("{%s}", v[2])>>=
d <- d.rech[, c("Date", "Hai_StC")]
d[, 3] <- d[, 2]
d[!is.na(d[, 2]) & d[, 2] < 0, 2] <- 0
d[!is.na(d[, 3]) & d[, 3] > 0, 3] <- 0
col <- c("#67A9CF", "#C80C0B")
PlotGraph(d, ylab=ylab, xlim=xlim, col=col, fill="tozeroy",
conversion.factor=1 / cfs.to.m3.per.d,
scientific=c(FALSE, TRUE, FALSE), center.date.labels=TRUE,
seq.date.by="year")
legend("bottomright", c("Recharge", "Discharge"), col=col, lty=1,
inset=0.02, cex=0.7, box.lty=1, box.lwd=0.5, bg="#FFFFFFE7")
@
% Willow Creek reach
The stream-aquifer flow exchange along the Willow Creek reach (\Sexpr{GetReachNo("Willow Creek")}) was estimated using equation~(\ref{eq:reach_rech}).
Outflows from the reach are measured streamflow at the Willow Creek near Bellevue streamgage (13140900, \Sexpr{GetSiteNo(13140900)}) and recorded irrigation diversions.
Because the upstream end of the reach is defined as the spring-fed origins of Willow Creek and its tributaries, total inflows to the reach are assumed to be zero.
Note that minor and unmeasured inflows from uncontrolled flowing wells may contribute to reach gains.
The resultant stream-aquifer flow exchange is shown in \hyperref[fig:graph_willowcr]{figure~\ref{fig:graph_willowcr}}.
Estimates range from
\Sexpr{FUN <- function(i) formatC(i, big.mark=",", format="d"); x <- reach.recharge$WillowCr; FUN(y <- min(x, na.rm=TRUE))} m\textsuperscript{3}/d (\Sexpr{FUN(y / cfs.to.m3.per.d)} cfs) to
\Sexpr{FUN(y <- max(x, na.rm=TRUE))} m\textsuperscript{3}/d (\Sexpr{FUN(y / cfs.to.m3.per.d)} cfs);
with a mean and standard deviation of
\Sexpr{FUN(y <- mean(x, na.rm=TRUE))} m\textsuperscript{3}/d (\Sexpr{FUN(y / cfs.to.m3.per.d)} cfs) and
\Sexpr{FUN(y <- sd(x, na.rm=TRUE))} m\textsuperscript{3}/d (\Sexpr{FUN(y / cfs.to.m3.per.d)} cfs), respectively.
All values are negative (aquifer discharge) which indicates that it is a gaining reach during the period from July 2000 through December 2010.
Aquifer discharges are typically smallest in January and largest in July.
There was insufficient measurement data to estimate flow exchange prior to July 2000.
<<include=FALSE>>=
v <- "Stream-aquifer flow exchange in the Willow Creek river reach."
v <- c(paste("Graph showing", paste0(tolower(substr(v, 1, 1)), substr(v, 2, nchar(v)))), v)
@
<<graph_willowcr, echo=FALSE, fig.width=fin.graph.short[1], fig.height=fin.graph.short[2], fig.scap=sprintf("{%s}", v[1]), fig.cap=sprintf("{%s}", v[2])>>=
d <- d.rech[, c("Date", "WillowCr")]
col <- "#C80C0B"
PlotGraph(d, ylab=ylab, xlim=xlim, col=col, fill="tozeroy",
conversion.factor=1 / cfs.to.m3.per.d,
scientific=c(FALSE, TRUE, FALSE), center.date.labels=TRUE,
seq.date.by="year")
@
% Silver Creek above Sportsman Access reach
The stream-aquifer flow exchange along Silver Creek, above Sportsman Access river reach (\Sexpr{GetReachNo("Spring creeks abv Sportsman")}) was estimated using equation~(\ref{eq:reach_rech}).
This reach includes Buhler Drain and Stalker, Patton, Cain, Chaney, Mud, Wilson, Grove, and Loving Creeks.
Outflows from the reach are measured streamflow at the Silver Creek at Sportsman Access near Picabo streamgage (13150430, \Sexpr{GetSiteNo(13150430)}) and recorded irrigation diversions.
As with the Willow Creek reach (\Sexpr{GetReachNo("Willow Creek")}), because the upstream end of the reach is defined as the spring-fed origins of Silver Creek and its tributaries,
total inflows to the reach are assumed to be zero.
Recorded inflows to the reach are primarily spring and seep discharge but include exchange wells and returns from the District 45 Legacy Project.
The resultant stream-aquifer flow exchange is shown in \hyperref[fig:graph_silverabv]{figure~\ref{fig:graph_silverabv}};
all estimated values are negative (aquifer discharge) which indicates that it is a gaining reach through the entire simulation period.
Estimates range from
\Sexpr{FUN <- function(i) formatC(i, big.mark=",", format="d"); x <- reach.recharge$SilverAbv; FUN(y <- min(x, na.rm=TRUE))} m\textsuperscript{3}/d (\Sexpr{FUN(y / cfs.to.m3.per.d)} cfs) to
\Sexpr{FUN(y <- max(x, na.rm=TRUE))} m\textsuperscript{3}/d (\Sexpr{FUN(y / cfs.to.m3.per.d)} cfs);
with a mean and standard deviation of
\Sexpr{FUN(y <- mean(x, na.rm=TRUE))} m\textsuperscript{3}/d (\Sexpr{FUN(y / cfs.to.m3.per.d)} cfs) and
\Sexpr{FUN(y <- sd(x, na.rm=TRUE))} m\textsuperscript{3}/d (\Sexpr{FUN(y / cfs.to.m3.per.d)} cfs), respectively.
Aquifer discharges are typically smallest in October and largest in March.
<<include=FALSE>>=
v <- "Stream-aquifer flow exchange in Silver Creek, above Sportsman Access river reach."
v <- c(paste("Graph showing", paste0(tolower(substr(v, 1, 1)), substr(v, 2, nchar(v)))), v)
@
<<graph_silverabv, echo=FALSE, fig.width=fin.graph.short[1], fig.height=fin.graph.short[2], fig.scap=sprintf("{%s}", v[1]), fig.cap=sprintf("{%s}", v[2])>>=
d <- d.rech[, c("Date", "SilverAbv")]
col <- "#C80C0B"
PlotGraph(d, ylab=ylab, xlim=xlim, col=col, fill="tozeroy",
conversion.factor=1 / cfs.to.m3.per.d,
scientific=c(FALSE, TRUE, FALSE), center.date.labels=TRUE,
seq.date.by="year")
@
% Silver Creek, Sportsman Access to near Picabo
Estimates of stream-aquifer flow exchange along the Silver Creek, Sportsman Access to near Picabo reach (\Sexpr{GetReachNo("Silver Creek, Sportsman Access to Nr Picabo")}) were first made by \citet{Moreland1977} using a flow difference approach.
He reports a reach loss (aquifer recharge) of 9,786 m\textsuperscript{3}/d (4 cfs) in May 1975,
and reach gains (aquifer discharge) of 61,164 m\textsuperscript{3}/d (25 cfs) in June 1975 and 22,019 m\textsuperscript{3}/d (9 cfs) in October 1975.
For comparison, the flow exchange reported by \citet{Bartolino2014} (and adjusted to account for diversions and exchange wells reported by Water District 37M; also using a flow difference approach)
were reach gains of 13,211 m\textsuperscript{3}/d (5.4 cfs) in August 2012, 29,359 m\textsuperscript{3}/d (12 cfs) in October 2012, and zero in March 2013.
Because Water District 37M does not record diversion rates during October, it is possible that the estimated reach gain in October 2012 was affected by unmeasured diversions or exchange well inflows.
The 2012 through 2013 estimates did not account for irrigation returns from the O Drain, which enters Silver Creek downstream of the model boundary.
It is unclear whether \citet{Moreland1977} accounted for inflow from this drainage ditch.
\citet{Moreland1977} noted that the Silver Creek at Sportsman Access near Picabo streamgage (13150430, \Sexpr{GetSiteNo(13150430)}) was installed in 1974 as part of his investigation.
The site was selected near the area of assumed maximum flow.
Moreland indicates that Silver Creek generally gains water (aquifer discharge) upstream of Point of Rocks (about 3.2 river kilometers [2 miles] downstream of Sportsman Access),
and may seasonally gain or lose water in the 3.2-km (2-mi) reach downstream of Point of Rocks where groundwater levels may be relatively close to land surface during the irrigation season.
Approximately 6.4 river kilometers (4 mi) downstream of Silver Creek at Sportsman Access near Picabo streamgage (\Sexpr{GetSiteNo(13150430)}),
the water table in the basalt portion of the WRV aquifer system becomes deeper and slopes steeply toward the Snake River Plain and Silver Creek becomes perched above the aquifer.
A shallow perched aquifer apparently interacts with the creek in this area and contributes to measured gains and losses \citep{Moreland1977}.
October 2012 groundwater-level measurements and maps \citep{Bartolino2014} indicate that Silver Creek is perched above the aquifer between about Point of Rocks and the model boundary.
In October 2012, the depth below land surface to the water table was 20 m (65 ft) about 0.4 km (0.25 mi) north of Picabo, and 38 m (126 ft) about 0.25 mi south of where Silver Creek crosses the model boundary.
A discharge of 206,980 m\textsuperscript{3}/d (84.6~cfs) in Silver Creek at the Picabo Road bridge,
about 0.8 km (0.5 mi) north of Picabo was measured on October 16, 2014 (Allan H. Wylie and Dennis Owsley, Idaho Department of Water Resources, oral commun., 2014).
On that date, mean daily discharge measured at the Silver Creek at Sportsman Access near Picabo streamgage (\Sexpr{GetSiteNo(13150430)}) was 200,619 m\textsuperscript{3}/d (82 cfs).
Because Water District 37 does not record diversions during October,