-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathreport.Rmd
More file actions
373 lines (229 loc) · 13.2 KB
/
Copy pathreport.Rmd
File metadata and controls
373 lines (229 loc) · 13.2 KB
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
---
title: "Module 10: Exploring Tradeoffs in Water Quality Management Using Environmental Data - Student Handout"
output:
word_document:
reference_docx: report-style.docx
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```
```{r}
time <- Sys.time()
# Add last update time
app_time <- format(file.info("ui.R")$mtime, "%Y-%m-%d")
app_update_txt <- paste0("This app was last updated on: ", app_time)
# Read in assessment questions
quest <- read.csv("data/student_questions.csv", row.names = 1)
# Load in text
module_text <- read.csv("data/module_text.csv", row.names = 1)
```

***
### Name:
### Student ID:
#### Completed on:
***
# **Macrosystems EDDIE Module 10: Exploring Tradeoffs in Water Quality Management Using Environmental Data**
# Focal Question:
_How can we use environmental data to inform our understanding of the tradeoffs involved in water management decision-making?_
# Summary:
Many water management decisions come with tradeoffs. One important example of such a decision is the use of chlorine in the drinking water treatment process. Chlorination is an important disinfection step in water treatment and is needed to protect water consumers from harmful pathogens (such as bacteria). However, when there are high amounts of organic matter in the raw water, chlorination can result in the formation of potentially cancer-causing disinfection byproducts. Environmental sensor data on water quality conditions, such as organic matter measurements from drinking water reservoirs, can help inform water management decision-making and reduce the risk of unintended consequences due to use of chlorine in water treatment.
In this module, you will explore organic matter data collected from drinking water reservoirs and learn how to interpret these data to inform your decision-making about chlorination during drinking water treatment.
\newpage
# Learning Objectives:
By the end of this module, you will be able to:
- Define disinfection byproducts.
- Describe the environmental and water treatment processes that influence the formation of disinfection byproducts.
- Understand the trade-offs between disinfection and byproduct formation that can occur when chlorinating water, and treatment techniques that can be used to manage these tradeoffs (e.g., coagulation, activated carbon filters).
- Use environmental data visualizations to identify when additional treatment techniques to avoid disinfection byproduct formation could be used to meet water quality objectives.
## Module overview:
- Introductory presentation on concepts related to drinking water disinfection byproducts (DBPs) and environmental data from drinking water reservoirs
- **Activity A:** Explore how disinfection byproducts are formed during the drinking water treatment process and examine tradeoffs between disinfection and byproduct formation
- **Activity B:** View and interpret environmental data that can indicate when naturally-occurring DBP precursors are present
- **Activity C:** Make water treatment decisions using environmental data that can indicate when DBP precursors may be present
## Module materials:
The lesson content is hosted on an interactive R Shiny web application at [https://macrosystemseddie.shinyapps.io/module10/](https://macrosystemseddie.shinyapps.io/module10/)
This can be accessed via any internet browser and allows you to navigate through the lesson via this app. You will fill in the questions below on this handout as you complete the lesson activities. Some instructors may ask students to enter their answers to module questions using a Canvas quiz. Confirm with your instructor as to how to submit your answers.
\newpage
## Module workflow:
`r substr(module_text["workflow1", ], 0, nchar(module_text["workflow1", ]))`
`r substr(module_text["workflow2", ], 0, nchar(module_text["workflow2", ]))`
`r substr(module_text["workflow3", ], 0, nchar(module_text["workflow3", ]))`
`r substr(module_text["workflow4", ], 0, nchar(module_text["workflow4", ]))`
`r substr(module_text["workflow5", ], 0, nchar(module_text["workflow5", ]))`
`r substr(module_text["workflow6", ], 0, nchar(module_text["workflow6", ]))`
\newpage
# Module Questions:
## Introduction
### Think about it!
Answer the following questions:
1. `r substr(quest["q1", ], 4, nchar(quest["q1", ]))`
a. `r substr(quest["q1a", ], 4, nchar(quest["q1a", ]))`
b. `r substr(quest["q1b", ], 4, nchar(quest["q1b", ]))`
c. `r substr(quest["q1c", ], 4, nchar(quest["q1c", ]))`
2. `r substr(quest["q2", ], 4, nchar(quest["q2", ]))`
a. `r substr(quest["q2a", ], 4, nchar(quest["q2a", ]))`
b. `r substr(quest["q2b", ], 4, nchar(quest["q2b", ]))`
c. `r substr(quest["q2c", ], 4, nchar(quest["q2c", ]))`
3. `r substr(quest["q3", ], 4, nchar(quest["q3", ]))`
a. `r substr(quest["q3a", ], 4, nchar(quest["q3a", ]))`
b. `r substr(quest["q3b", ], 4, nchar(quest["q3b", ]))`
c. `r substr(quest["q3c", ], 4, nchar(quest["q3c", ]))`
d. `r substr(quest["q3d", ], 4, nchar(quest["q3d", ]))`
\newpage
## Activity A - Explore how disinfection byproducts can be formed during chlorination
`r module_text["act_A", ]`
***
### Objective 1: Understand factors affecting DBP formation and drinking water thresholds for DBPs
***
Be sure you have answered questions 1-3 in the previous Introduction section before you begin Activity A!
4. `r substr(quest["q4", ], 4, nchar(quest["q4", ]))`
a. `r substr(quest["q4a", ], 4, nchar(quest["q4a", ]))`
b. `r substr(quest["q4b", ], 4, nchar(quest["q4b", ]))`
c. `r substr(quest["q4c", ], 4, nchar(quest["q4c", ]))`
d. `r substr(quest["q4d", ], 4, nchar(quest["q4d", ]))`
e. `r substr(quest["q4e", ], 4, nchar(quest["q4e", ]))`
5. `r substr(quest["q5", ], 4, nchar(quest["q5", ]))`
a. `r substr(quest["q5a", ], 4, nchar(quest["q5a", ]))`
b. `r substr(quest["q5b", ], 4, nchar(quest["q5b", ]))`
c. `r substr(quest["q5c", ], 4, nchar(quest["q5c", ]))`
6. `r substr(quest["q6", ], 4, nchar(quest["q6", ]))`
a. `r substr(quest["q6a", ], 4, nchar(quest["q6a", ]))`
b. `r substr(quest["q6b", ], 4, nchar(quest["q6b", ]))`
c. `r substr(quest["q6c", ], 4, nchar(quest["q6c", ]))`
<br>
***
### Objective 2: Explore tradeoffs in chlorination vs. DBP formation
***
<br>
7. `r substr(quest["q7", ], 4, nchar(quest["q7", ]))`
a. `r substr(quest["q7a", ], 4, nchar(quest["q7a", ]))`
b. `r substr(quest["q7b", ], 4, nchar(quest["q7b", ]))`
c. `r substr(quest["q7c", ], 4, nchar(quest["q7c", ]))`
d. `r substr(quest["q7d", ], 4, nchar(quest["q7d", ]))`
8. `r substr(quest["q8", ], 4, nchar(quest["q8", ]))`
a. `r substr(quest["q8a", ], 4, nchar(quest["q8a", ]))`
b. `r substr(quest["q8b", ], 4, nchar(quest["q8b", ]))`
c. `r substr(quest["q8c", ], 4, nchar(quest["q8c", ]))`
9. `r substr(quest["q9", ], 4, nchar(quest["q9", ]))`
**Answer:**
10. `r substr(quest["q10", ], 5, nchar(quest["q10", ]))`
**Answer:**
11. `r substr(quest["q11", ], 5, nchar(quest["q11", ]))`
**Answer:**
12. `r substr(quest["q12", ], 5, nchar(quest["q12", ]))`
**Answer:**
13. `r substr(quest["q13", ], 5, nchar(quest["q13", ]))`
a. `r substr(quest["q13a", ], 4, nchar(quest["q13a", ]))`
b. `r substr(quest["q13b", ], 4, nchar(quest["q13b", ]))`
c. `r substr(quest["q13c", ], 4, nchar(quest["q13c", ]))`
14. `r substr(quest["q14", ], 5, nchar(quest["q14", ]))`
a. `r substr(quest["q14a", ], 4, nchar(quest["q14a", ]))`
b. `r substr(quest["q14b", ], 4, nchar(quest["q14b", ]))`
c. `r substr(quest["q14c", ], 4, nchar(quest["q14c", ]))`
d. `r substr(quest["q14d", ], 4, nchar(quest["q14d", ]))`
\newpage
## Activity B - Explore environmental data that can indicate the presence of DBP precursors
`r module_text["act_B", ]`
***
### Objective 3: Select and learn about a focal drinking water reservoir
***
<br>
15. `r substr(quest["q15", ], 5, nchar(quest["q15", ]))`
**Answer:**
16. `r substr(quest["q16", ], 5, nchar(quest["q16", ]))`
**Answer:**
17. `r substr(quest["q17", ], 5, nchar(quest["q17", ]))`
a. `r substr(quest["q17a", ], 4, nchar(quest["q17a", ]))`
b. `r substr(quest["q17b", ], 4, nchar(quest["q17b", ]))`
c. `r substr(quest["q17c", ], 4, nchar(quest["q17c", ]))`
d. `r substr(quest["q17d", ], 4, nchar(quest["q17d", ]))`
18. `r substr(quest["q18", ], 5, nchar(quest["q18", ]))`
**Answer:**
19. `r substr(quest["q19", ], 5, nchar(quest["q19", ]))`
**Answer:**
***
### Objective 4: View and interpret organic matter data from your reservoir
***
20. `r substr(quest["q20", ], 5, nchar(quest["q20", ]))`
a. `r substr(quest["q20a", ], 4, nchar(quest["q20a", ]))`
b. `r substr(quest["q20b", ], 4, nchar(quest["q20b", ]))`
c. `r substr(quest["q20c", ], 4, nchar(quest["q20c", ]))`
d. `r substr(quest["q20d", ], 4, nchar(quest["q20d", ]))`
21. `r substr(quest["q21", ], 5, nchar(quest["q21", ]))`
a. `r substr(quest["q21a", ], 4, nchar(quest["q21a", ]))`
b. `r substr(quest["q21b", ], 4, nchar(quest["q21b", ]))`
c. `r substr(quest["q21c", ], 4, nchar(quest["q21c", ]))`
d. `r substr(quest["q21d", ], 4, nchar(quest["q21d", ]))`
22. `r substr(quest["q22", ], 5, nchar(quest["q22", ]))`
a. `r substr(quest["q22a", ], 4, nchar(quest["q22a", ]))`
b. `r substr(quest["q22b", ], 4, nchar(quest["q22b", ]))`
c. `r substr(quest["q22c", ], 4, nchar(quest["q22c", ]))`
d. `r substr(quest["q22d", ], 4, nchar(quest["q22d", ]))`
23. `r substr(quest["q23", ], 5, nchar(quest["q23", ]))`
**Answer:**
24. `r substr(quest["q24", ], 5, nchar(quest["q24", ]))`
**Answer:**
25. `r substr(quest["q25", ], 5, nchar(quest["q25", ]))`
**Answer:**
26. `r substr(quest["q26", ], 5, nchar(quest["q26", ]))`
**Answer:**
27. The U.S. Environmental Protection Agency (US EPA) has a rule regarding removal of TOC from drinking water during treatment (see table below). The percentage of TOC that must be removed during treatment depends on the amount of TOC in the raw water (see the first column of the table), as well as the raw water alkalinity (second, third, and fourth columns of the table). Use the fDOM-to-TOC converter to determine how much TOC should be removed from a **hypothetical** reservoir with an fDOM concentration of 40 QSU and a raw water alkalinity of 50 mg/L. Report your answer in mg/L of TOC to the nearest tenth (e.g., 2.1).
**Answer:**

Table reproduced from US EPA 816-F-01-014: Stage 1 Disinfectants and Disinfection Byproducts Rule
https://www.vdh.virginia.gov/content/uploads/sites/14/2024/08/Stage-1-Disinfection-By-products-fact-sheet.pdf
\newpage
## Activity C - Use environmental data to inform water treatment decisions
`r module_text["act_C", ]`
***
### Objective 6: Use fluorescent dissolved organic matter data to make coagulation decisions
***
<br>
#### Management decision #1: Winter data
<br>
28. `r substr(quest["q28", ], 5, nchar(quest["q28", ]))`
**Answer:**
29. `r substr(quest["q29", ], 5, nchar(quest["q29", ]))`
**Answer:**
30. `r substr(quest["q30", ], 5, nchar(quest["q30", ]))`
a. `r substr(quest["q30a", ], 4, nchar(quest["q30a", ]))`
b. `r substr(quest["q30b", ], 4, nchar(quest["q30b", ]))`
c. `r substr(quest["q30c", ], 4, nchar(quest["q30c", ]))`
d. `r substr(quest["q30d", ], 4, nchar(quest["q30d", ]))`
31. `r substr(quest["q31", ], 5, nchar(quest["q31", ]))`
**Answer:**
Optional exercise: Reflect on why you made this decision. What information did you use to arrive at your final choice?
<br>
#### Management decision #2: Spring data
<br>
32. `r substr(quest["q32", ], 5, nchar(quest["q32", ]))`
**Answer:**
33. `r substr(quest["q33", ], 5, nchar(quest["q33", ]))`
**Answer:**
34. `r substr(quest["q34", ], 5, nchar(quest["q34", ]))`
a. `r substr(quest["q34a", ], 4, nchar(quest["q34a", ]))`
b. `r substr(quest["q34b", ], 4, nchar(quest["q34b", ]))`
c. `r substr(quest["q34c", ], 4, nchar(quest["q34c", ]))`
d. `r substr(quest["q34d", ], 4, nchar(quest["q34d", ]))`
35. `r substr(quest["q35", ], 5, nchar(quest["q35", ]))`
**Answer:**
Optional exercise: Reflect on why you made this decision. What information did you use to arrive at your final choice?
<br>
#### Management decision #3: Summer data
<br>
36. `r substr(quest["q36", ], 5, nchar(quest["q36", ]))`
**Answer:**
37. `r substr(quest["q37", ], 5, nchar(quest["q37", ]))`
**Answer:**
38. `r substr(quest["q38", ], 5, nchar(quest["q38", ]))`
a. `r substr(quest["q38a", ], 4, nchar(quest["q38a", ]))`
b. `r substr(quest["q38b", ], 4, nchar(quest["q38b", ]))`
c. `r substr(quest["q38c", ], 4, nchar(quest["q38c", ]))`
d. `r substr(quest["q38d", ], 4, nchar(quest["q38d", ]))`
39. `r substr(quest["q39", ], 5, nchar(quest["q39", ]))`
**Answer:**
Optional exercise: Reflect on your decision. How did accessing high-frequency data (vs. the normal monthly samples) affect your decision-making?
<br>
*`r module_text["acknowledgement", ]`*
*`r app_update_txt`*