DO may not be below 4.8 mg/L for an extended period
Modeling Dissolved Oxygen
Oxygen Balance in Rivers and Streams
Selecting a Metric for DO Fluxes
Typically use oxygen demand (OD):
measure of the concentration of oxidizable materials in a water sample
metric for organic waste contamination
reflects how oxygen will be depleted in a given segment
But there are several different processes affecting total OD!
Biochemical Oxygen Demand (BOD)
Oxygen used by microbes during aerobic decomposition of organic materials: \[\text{Organic Matter} + \text{O}_2 \rightarrow \text{CO}_2 + \text{H}_2\text{O} + \text{NO}_3 + \text{SO}_2 + \text{Residuals}\]
Broadly speaking, we care about two types of BOD: Carbonaceous BOD and Nitrogenous BOD.
Carbonaceous BOD (CBOD)
Oxygen consumed during microbial decomposition of carbon compounds, e.g.: \[\text{C}_a\text{H}_b\text{O}_c + d\text{O}_2 \rightarrow e\text{H}_2\text{O} + f\text{CO}_2\]
Nitrogenous BOD (NBOD)
Oxygen consumed during microbial decomposition of nitrogen compounds: \[2\text{NH}_2^+ + 4\text{O}_2 \rightarrow 2\text{H}_2\text{O} + 4\text{H}^+ + 2\text{NO}_3^-\]
BOD and Time
Moreover, BOD is differentiated based on time frame, e.g.:
BOD5: oxygen demand over 5 days
BOD20: oxygen demand over 20 days
DO Modeling Needs
Need a model that will predict DO as a function of CBOD, NBOD.
Use a fate and transport modeling approach: how are relevant quantities moved downstream?
Note: Can’t assume homogeneous processes.
Modeling DO
So what do we do?
Start by assuming steady-state waste in each section (or box…).
Modeling DO
We’ll track the mass balance in terms of rates (not absolute mass).
What happens to an element of water as it moves downstream?
Steady-State Waste, DO Mass Balance
Let \(U\) be the river velocity (km/d), \(x\) the distance downstream from a waste release site in km, and \(C(x)\) the DO concentration at \(x\) in mg/L.
functiondo_simulate(x, C0, B0, N0, ka, kn, kc, Cs, U) B = B0 *exp(-kc * x / U) N = N0 *exp(-kn * x / U) α1=exp(-ka * x / U) α2= (kc/(ka-kc)) * (exp.(-kc * x / U) -exp(-ka * x / U)) α3= (kn/(ka-kn)) * (exp(-kn * x / U) -exp(-ka * x / U)) C = Cs * (1- α1) + (C0 * α1) - (B0 * α2) - (N0 * α3)return (C, B, N)end# set river propertieska =0.6kc =0.4kn =0.25C0 =6.2B0 =9N0 =7Cs =7U =5x =0:40# evaluate model over all x's# this uses broadcastingdo_out = (y ->do_simulate(y, C0, B0, N0, ka, kc, kn, Cs, U)).(x)# unpack outputs into individual arrays for C, B, and N# this uses comprehensions to pull out the relevant components #of the tuples that our function outputsC = [d[1] for d in do_out]B = [d[2] for d in do_out]N = [d[3] for d in do_out]# plot outputsp1 =plot(; ylabel="DO/OD (mg/l)", xlabel="Distance (km)", left_margin=8mm, top_margin=10mm, guidefontsize=18, legendfontsize=16, tickfontsize=16, legend=:outerright, bottom_margin=10mm)plot!(p1, x, C, color=:black, linewidth=4, label="DO")plot!(p1, x, B, color=:green, label="CBOD", linestyle=:dash, linewidth=3)plot!(p1, x, N, color=:blue, label="NBOD", linestyle=:dash, linewidth=3)# plot Cs, which is a constant value plot!(p1, x, Cs *ones(length(x)), color=:purple, label=L"C_s", linestyle=:dot, linewidth=2)hline!([3], color=:red, linewidth=2, label="Regulatory Standard")plot!(size=(1200, 450))xaxis!((0, 40))
Multiple Discharges
What happens if we have multiple discharge sites?
Simulating Multiple Discharges
Think of this as a multi-box system.
Flow from waste release 1 to waste release 2.
Flow from waste release 2 on.
How do we compute the initial conditions at release 2?
Who is Responsible for Non-Compliance?
Key Points
Key Points
Dissolved oxygen (DO) is essential for water quality and aquatic life.
Commonly regulated to keep DO above a minimum threshold.
DO impacted by a number of factors, notably organic waste decomposition and nitrification.
“Sag Curve”: DO reduced near a discharge until waste decomposition reduces OD and re-aeration can occur.