Skip to content

Conversation

@Ailbhemit
Copy link
Contributor

Within fillspill, passflow is triggered when the current water level is equal to the target level. However

  1. the passflow scheme does not consider the min/max parameters supplied to the fillspill scheme,
  2. It also does not consider rain/evaporation.
  3. the passflow scheme sets Q_Out directly (and sets Q_Spill and Q_turbine to zero) which is inconsistent with the rest of the scheme which considers Q_Out = Q_spill + Q_turbine.

Thus we use calc_q also for the passflow part of the fillspill scheme. When flows are within the min/max range results are unchanged other than we set Q_turbine instead of Q_out. when inflow is outside of the min/max range, Q_turbine flow obeys the range. (an example of this case is seen in this issue https://issuetracker.deltares.nl/browse/RTCTOOLS-1428).

Note: we already check if the current water level is above the spill level, so we are sure that Q_spill is zero.

Dependencies are also updated for rtc-tools-interface to resolve issues with installing a prerelease.

min(q_out_forh_target - q_spill, parameters["Reservoir_Qmax"]),
)
elif current_h == parameters["Reservoir_Htarget"]:
self.apply_passflow()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was the only place where self.apply_passflow() appears to be used. Could be a good reason to clean it up altogether, unless we see future potential usecases for it, perhaps even as an isolated function (only scheme applied). What do you think?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And just to check, it seems that the behaviour of the total scheme has now not changed, except for the exact scenario that H == H_Target, correct? In that case it now considers P/ET to keep H at H_Target, while obeying QMax/min. For all scenarios of H being smaller than H_spill, it already was going okay.

Is that also what led to this adjustment, or where there different issues identified?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

self.apply_passflow() is an independent required scheme so we leave it in. It just does not meet the requirements to be re-used within the fillspill scheme.

And yes, outlined in the description of the PR, the issue was related to the exact case where passflow was triggered (when H=H_target) so only this part of the scheme is adjusted by this PR.

@Ailbhemit Ailbhemit merged commit 2ae841f into main Nov 12, 2025
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants