Flow Regime
Functions to allow the basic StreamModel to be run across a range of flow values, and estimate frequency curves for nitrate concentrations based on the frequency curves for flow.
Function documentation
NitrateNetworkModel.FlowRegime — TypeFlowRegime(
q_gage::Vector{Float64},
p_exceed::Vector{Float64},
p_mass::Vector{Float64}
)Input structure for evaluating StreamModel against multiple flow values. Single-link flow regime - values measured at gaged link.
NitrateNetworkModel.FlowRegime — MethodFlowRegime(flowfile::String; q_gage_col=:Q, p_exceed_col=:cp, p_mass_col=:cf)Constructor function to build FlowRegime from csv file.
NitrateNetworkModel.evaluate! — Methodevaluate!(model::StreamModel, flowregime::FlowRegime)Runs stream_model.evaluate!(model, q) for each q in flowregime.q_gage. Outlet and average concentrations are saved to a FlowRegimeSimResults struct and returned.
NitrateNetworkModel.FlowRegimeSimResults — TypeFlowRegimeSimResults(
n_conc_outlet::Vector{Float64},
n_conc_avg::Vector{Float64},
p_mass::Vector{Float64}
)Results structure returned by evaluate_with_flow_regime. Contains outlet and average nitrate concentration values for each of the flow values in flowregime.q_gage. flowregime.p_mass is copied over for convenience.
NitrateNetworkModel.weighted_outlet_nconc — Methodweighted_outlet_nconc(results::FlowRegimeSimResults)Convenience function for getting probability exceedance weighted outlet concentration.
NitrateNetworkModel.weighted_avg_nconc — Methodweighted_avg_nconc(results::FlowRegimeSimResults)Convenience function for getting probability exceedance weighted average concentration.
Example
using NitrateNetworkModel
using Plots
using Printf
# required input files
baseparams_file = "../data/baseparams.csv"
network_file = "../data/network_table.csv"
flowfile = "../data/flow_values.csv"
# create the model structs
sm = StreamModel(baseparams_file, network_file)
fr = FlowRegime(flowfile)
# run the model
results = evaluate!(sm, fr)
# create a summary figure
plot(fr.p_exceed, results.n_conc_outlet,
label=@sprintf "Outlet (overall: %.2f)" weighted_outlet_nconc(results))
plot!(fr.p_exceed, results.n_conc_avg,
label=@sprintf "Average (overall: %.2f)" weighted_avg_nconc(results))
xaxis!("Probability Exceedance")
yaxis!("Nitrate Concentration")