-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Reorganize documentation to become more modeller oriented #973
Comments
This is my suggestion for the update of the Home page (https://deltares.github.io/Ribasim/) IntroductionDecision makers need to balance the supply and demand of water in complex situations at the river basin scale and under increasing pressure from climate change. RIBASIM provides a free software tool to visualize, evaluate and prioritize water allocation strategies based on their impact. This provides insights to decision makers, enabling them to build consensus amongst water users and make smart decisions about how to manage water resources optimally considering uncertainties now and in the future. ConceptualizationRibasim is conceptually organized in three layers:
The physical layerTo represent the physical characteristics of the water system in an area, Ribasim allows you to divide the area into a network of connected representative elementary watersheds (Reggiani, Sivapalan, and Majid Hassanizadeh 1998). Within Ribasim, these elements are called basins, which are essentially buckets or reservoirs holding an aggregated volume of water bodies in an area. Basins are chained in a graph with connector nodes determining the exchange of water between the basins. These connector nodes can represent open water connections (e.g. bifurcations or resistance in a free flowing open water channel) or infrastructure elements such as pumps, gates or weirs. The control layerInfrastructure elements are often controlled by humans to implement a certain water management strategy. Ribasim allows the configuratrion of conditional rules to influence the exchange of water between basins, either by controlling the inflow or outflow, or by controlling a water level . Control rules evaluate one or multiple conditions to change a parameter setting of an infrastructure element when the conditional criteria are met. Conditions can be either calculated values within the network as well as boundary conditions or (todo) external observations, i.e. observation values external to the model. The allocation layerRibasim allows water users (water demands) to abstract water from the basins (i.e. from the physical layer) unless the water level drops below a minimum level. Under dry conditions, water managers may want to prioritize some abstractions over other abstractions. The Ribasim allocation layer can take care of this prioritization by reducing the abstraction rates of lower-priority demands to ensure that sufficient water remains available in the system for the higher-priority demands. The layers and the main components and dataflows between the layers are shown in the next figure: ---
title: Conceptual model
---
flowchart RL
subgraph physical[physical layer]
user-->|abstraction|basin
basin<-->|flow|connector[basin connector]
end
subgraph rbc[rule based control layer]
control[control rules]:::system
end
subgraph allocation[allocation layer]
alloc[global allocation]:::system
end
user-->|request demand|alloc
alloc-->|assign allocation|user
basin-->|volume|alloc
basin-->|volume or level|control
alloc-->|update setpoint|control
control-->|action|connector
Nested allocation
The users then know what they can extract from the water system in the upcoming period and the rule-based simulation will determine the actual abstraction. The following sequence diagram illustrates this calculation process. ---
title: Calculation process with nested allocation
---
sequenceDiagram
participant boundary
participant basin
participant user
participant allocation_subNetwork
participant allocation_mainNetwork
user->>allocation_subNetwork: demand
par
allocation_subNetwork-->>allocation_mainNetwork: demand inventory at inlets
end
boundary->>allocation_mainNetwork: source availablility
basin->>allocation_mainNetwork: source availablility
allocation_mainNetwork-->>allocation_mainNetwork: allocate to inlets
allocation_mainNetwork->>allocation_subNetwork: allocated
par
allocation_subNetwork-->>allocation_subNetwork: allocate to users
end
allocation_subNetwork->>user: allocated
user->>basin: abstracted
Development planningRemember: reality may deviate from this planning
About the codeThe kernel of Ribasim is written in the Julia programming language and is built on top of the SciML: Open Source Software for Scientific Machine Learning libraries, notably DifferentialEquations.jl. The Ribasim QGIS plugin allows users to construct a model from scratch without programming. One can also use Ribasim Python to build entire models from base data, such that your model See Usage for more information.
Downloads
The nightly builds contain the latest developments and can be found below. It is important to either use the release or nightly for all components.
The Ribasim python package is registered in PyPI and can therefore
For wheel (
|
Parking lot for the sequence diagram explaining the nested allocation and interaction with the main loop sequenceDiagram
participant boundary
participant basin
participant user
participant allocation_subNetwork
participant allocation_mainNetwork
user->>allocation_subNetwork: demand
par
allocation_subNetwork-->>allocation_mainNetwork: demand inventory at inlets
end
boundary->>allocation_mainNetwork: source availablility
basin->>allocation_mainNetwork: source availablility
allocation_mainNetwork-->>allocation_mainNetwork: allocate to inlets
allocation_mainNetwork->>allocation_subNetwork: allocated
par
allocation_subNetwork-->>allocation_subNetwork: allocate to users
end
allocation_subNetwork->>user: allocated
user->>basin: abstracted
|
Just to be clear, make sure you keep the mermaid syntax. In Quarto we use this rather than a PNG render, see Lines 15 to 39 in 605e5b9
|
No worries, if you go to edit mode in the comment you get the mermaid syntax for both figures. Github does the rendering to a picture |
Conceptual differences with other model codesRibasim 9 versus Ribasim 7 |
I like it, I do have some comments: Notes:
|
Fixes #973 revisited Home page. Add model concepts page to julia core. Moved simulation loop sequence diagrams to julia core --------- Co-authored-by: Hofer-Julian <[email protected]> Co-authored-by: Martijn Visser <[email protected]> Co-authored-by: Edwin Snippen<[email protected]>
What:
Why
the current documentation has a strong developer and technical reference orientation (=good), but lacks a conceptual introduction.
How
reorganize home page https://deltares.github.io/Ribasim/ into table of contents:
introduction
Conceptualization (physical-control-allocation layer)
Development planning
About the code
Downloads
add https://deltares.github.io/Ribasim/concepts page. Table of contents:
Water balance in time & space
Control concepts
Equations
Allocation
Respective related tasks:
The text was updated successfully, but these errors were encountered: