Skip to main content

Sequent Peak Algorithm for the design and simulation of water reservoirs

Project description

CI license - MIT field of application - hydrology

sequent-peak-algorithm

Python implementation of the Sequent Peak Algorithm for the design and simulation of water reservoirs in hydrology.

Installation with requirements

pip install sequent-peak-algorithm==0.0.5

Usage example

# 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)

Sequent Peak Algorithm Visualization

examples/example_2_spa.png

Simulation Visualization

examples/example_2_sim.png

Documentation

spa

Parameters

  • q_in: list[float] : discharge input values
  • q_out: list[float]: discharge output values

Returns

  • Result: collections.namedtuple: Result of the sequent peak algorithm with the following attributes:
    • q_in: list[float]: discharge input values
    • q_out: list[float]: discharge output values
    • storage: 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

sim

Parameters

  • q_in: list[float] : discharge input values
  • q_out: list[float]: discharge output values
  • initial_storage: float: initial storage value, chosen by the user
  • capacity: float: capacity values, calculated with spa or chosen by the user

Returns

  • Result: collections.namedtuple: Result of the sequent peak algorithm with the following attributes:
    • q_in: list[float] : discharge input values
    • q_out: list[float]: discharge output values
    • initial_storage: float: initial storage value, chosen by the user
    • capacity: list[float]: capacity values, calculated with spa or chosen by the user
    • q_out_real: list[float]: real discharge output accounting for the capacity (deficit and overflow situations)
    • storage: list[float]: storage values
    • deficit: list[float]: deficit values
    • overflow: list[float]: overflow values

spa_plot

Parameters

  • Result: collections.namedtuple: Result of the sequent peak algorithm

Returns

  • fig: matplotlib.figure.Figure: Figure object of the plot

sim_plot

Parameters

  • Result: collections.namedtuple: Result of the storage simulation

Returns

  • fig: matplotlib.figure.Figure: Figure object of the plot

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sequent_peak_algorithm-0.0.5.tar.gz (6.5 kB view hashes)

Uploaded Source

Built Distribution

sequent_peak_algorithm-0.0.5-py3-none-any.whl (6.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page