Skip to content
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

Add User node type #76

Closed
8 tasks
gijsber opened this issue Mar 1, 2023 · 8 comments · Fixed by #574
Closed
8 tasks

Add User node type #76

gijsber opened this issue Mar 1, 2023 · 8 comments · Fixed by #574
Assignees
Labels
allocation Allocation layer control Rule based control of physical layer

Comments

@gijsber
Copy link
Contributor

gijsber commented Mar 1, 2023

data definition

  • requested abstraction [m3/s] (double) dynamic timeseries via file or set at runtime via de Metaswap coupler)
  • actual abstraction [m3/s] (double, updated at runtime by the allocation algorithm)
  • return percentage [%] (double between 0-100) static

additional input for allocation algorithm [#349]

  • priority [-] integer>0, static, lowest number is most important

default behaviour (without allocation algorithm)

  • extract water from basin, reduce/stop abstraction when the minimum level/volume is approached
  • actual abstraction = requested abstraction,
  • extract water based on availability/first come, first serve

when allocation algorithm [#349] is activated

  • allocation algorithm updates (cut back) actual abstraction as needed based on priority such that higher priority users get their water under dry conditions
@gijsber gijsber added this to the Sprint 23.3 increment milestone Mar 1, 2023
@gijsber gijsber added this to Ribasim Mar 1, 2023
@gijsber gijsber added the control Rule based control of physical layer label Mar 1, 2023
@gijsber gijsber changed the title Revive former features in DiffEQ apprach Revive user features in DiffEQ apprach Mar 1, 2023
@gijsber gijsber moved this to 🔲 Todo in Ribasim Mar 1, 2023
@visr visr changed the title Revive user features in DiffEQ apprach Revive user features in DiffEQ approach Mar 24, 2023
@SnippenE SnippenE moved this from 🔲 Todo to 🏗 In progress in Ribasim May 1, 2023
@visr visr moved this from 🏗 In progress to 🔲 Todo in Ribasim May 1, 2023
@visr
Copy link
Member

visr commented May 16, 2023

I believe this can be closed in favor of #14.

@visr visr closed this as completed May 16, 2023
@github-project-automation github-project-automation bot moved this from 🔲 Todo to ✅ Done in Ribasim May 16, 2023
@gijsber
Copy link
Contributor Author

gijsber commented May 16, 2023

H'mm I do not if this one can be closed. even if we do not run in 'allocation' mode with priorities, we should allow users to abstract water on a first come first serve basis. We need a User node type

@visr visr reopened this May 16, 2023
@visr visr moved this from ✅ Done to 🔲 Todo in Ribasim May 16, 2023
@visr visr changed the title Revive user features in DiffEQ approach Add User node type May 16, 2023
@visr
Copy link
Member

visr commented May 16, 2023

Ok, re-opened and renamed the issue to "add User node type".
I think this node type would be like the FlowBoundary, except that it has a priority, and a possible return flow.

@SnippenE SnippenE moved this from To do to Sprint backlog in Ribasim May 16, 2023
@SnippenE SnippenE moved this from Sprint backlog to To do in Ribasim May 16, 2023
@SnippenE SnippenE added the needs-refinement Issues that are too large and need refinement label May 17, 2023
@SnippenE SnippenE added allocation Allocation layer and removed needs-refinement Issues that are too large and need refinement control Rule based control of physical layer labels Jun 5, 2023
@SnippenE SnippenE added the control Rule based control of physical layer label Jun 20, 2023
@SouthEndMusic
Copy link
Collaborator

As mentioned in #293, the abstraction flow rate of a user should be a DiscreteControl condition (listen) variable

@gijsber gijsber moved this from To do to Sprint backlog in Ribasim Aug 31, 2023
@SouthEndMusic SouthEndMusic moved this from Sprint backlog to 🏗 In progress in Ribasim Sep 5, 2023
@SouthEndMusic SouthEndMusic self-assigned this Sep 5, 2023
@SouthEndMusic
Copy link
Collaborator

SouthEndMusic commented Sep 5, 2023

I came up with some questions during the implementation:

  1. When a user returns water, do they do so over the same edge as the abstraction? Or should the user have an incoming edge over which it abstracts, and potentially an outgoing edge over which it returns?
  2. Can a user return water that did not come from inside the model, or is that more a usec ase of a FlowBoundary node?
  3. Is the priority a mandatory input, or should it be optional and default to say the lowest priority?
  4. Should the input for the User nodes have a static and time table?

@gijsber
Copy link
Contributor Author

gijsber commented Sep 5, 2023

  1. a user should have an incoming edge and an outgoing edge. The outgoing edge can go to the same or a different basin.
  2. if a modeller wants to return water that did not come from the basin (or a coupled model like Modflow), a FlowBoundary node needs to be used
  3. best to make it mandatory
  4. the Demand should be in the static and the timetable. Priority can be in static only

@SouthEndMusic
Copy link
Collaborator

SouthEndMusic commented Sep 5, 2023

Some more questions:

  1. I'm not sure what our conclusion was on where the level comes from down to which a user is allowed to abstract. Should we bring back the basin-related minimum level? Or should it be associated with the user? I see that you also want to be able to set a minimum volume, I presume that is always for a specific basin.
  2. Is the return flow always immediate? I can imagine that a user can hold an amount of water before it is returned. The implementation of that might be quite fiddly though, for instance regarding the water conservation validation. Essentially then the User node must have state.

@gijsber
Copy link
Contributor Author

gijsber commented Sep 5, 2023

  1. let's define this with the user, in the static table only untill we realize it should be dynamic
  2. yes, immediate. In practice some delay may occur, but generally there will be no information available to parameterize such a delay. Eg, for Industry, you are likely to know an annual or monthly abstraction rate (mostly from the permit or a report) and if you are lucky a daily series of abstractions and return flows.

@visr visr closed this as completed in #574 Sep 15, 2023
visr added a commit that referenced this issue Sep 15, 2023
Fixes #76, #77.

---------

Co-authored-by: Martijn Visser <[email protected]>
@github-project-automation github-project-automation bot moved this from 🏗 In progress to ✅ Done in Ribasim Sep 15, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
allocation Allocation layer control Rule based control of physical layer
Projects
Archived in project
Development

Successfully merging a pull request may close this issue.

4 participants