Python implementation of the Sequent Peak Algorithm for the design and simulation of water reservoirs in hydrology.
pip install sequent-peak-algorithm==0.0.5
# 0. Create random input data
q_in = np.random.rand(100) * 10
q_out = np.random.rand(100) * 10
# 1. Run sequent peak algorithm
res_cap = spa.spa(q_in=q_in, q_out=q_out)
print("Capacity: ", res_cap.capacity)
# 2. Plot results from sequent peak algorithm
fig_cap = spa.spa_plot(res_cap)
plt.savefig("example_2_spa.png", dpi=300)
# 3. Run storage simulation and explore results
res_sim = spa.sim(
q_in=q_in,
q_out=q_out,
initial_storage=0.0,
capacity=res_cap.capacity
)
# Plot results from storage simulation
fig_sim = spa.sim_plot(res_sim)
plt.savefig("example_2_sim.png", dpi=300)
For further explanations see the examples/ folder.
q_in: list[float]
: discharge input valuesq_out: list[float]
: discharge output values
Result: collections.namedtuple
: Result of the sequent peak algorithm with the following attributes:q_in: list[float]
: discharge input valuesq_out: list[float]
: discharge output valuesstorage: list[float]
: storage values, calculated with_storage
cumulative_storage: list[float]
: cumulative storage values, calculated with_cumulative_storage
max_vals: list[float]
: discharge values of the maxima, calculated with_maxima
max_indices: list[int]
: indices of the maxima, calculated with_maxima
min_vals: list[float]
: discharge values of the minima, calculated with_minima
min_indices: list[int]
: indices of the minima, calculated with_minima
capacity: list[float]
: capacity, calculated with_capacity
capacity_indices: list[int]
: indices of the capacity (multiple positions possible), calculated with_capacity
capacity_max_vals: list[float]
: preceeding maxima of the capacity, calculated with_capacity
capacity_max_indices: list[int]
: indices of the preceeding maxima of the capacity, calculated with_capacity
capacity_min_vals: list[float]
: succeeding minima of the capacity, calculated with_capacity
capacity_min_indices: list[int]
: indices of the succeeding minima of the capacity, calculated with_capacity
q_in: list[float]
: discharge input valuesq_out: list[float]
: discharge output valuesinitial_storage: float
: initial storage value, chosen by the usercapacity: float
: capacity values, calculated withspa
or chosen by the user
Result: collections.namedtuple
: Result of the sequent peak algorithm with the following attributes:q_in: list[float]
: discharge input valuesq_out: list[float]
: discharge output valuesinitial_storage: float
: initial storage value, chosen by the usercapacity: list[float]
: capacity values, calculated withspa
or chosen by the userq_out_real: list[float]
: real discharge output accounting for the capacity (deficit and overflow situations)storage: list[float]
: storage valuesdeficit: list[float]
: deficit valuesoverflow: list[float]
: overflow values
Result: collections.namedtuple
: Result of the sequent peak algorithm
fig: matplotlib.figure.Figure
: Figure object of the plot
Result: collections.namedtuple
: Result of the storage simulation
fig: matplotlib.figure.Figure
: Figure object of the plot