Conservation law
mass
Residual equation
R_recession = Q(t) - Q(0) * exp(-t/K) [mm/day]
R_extreme = max(Q_peak) / P_total [dimensionless]
Tolerance and its denominator
For the recession test, the tolerance is a goodness‑of‑fit criterion: the coefficient of determination R² ≥ 0.95.
For the extreme rainfall test, the tolerance is R_extreme ≤ 1.05 (allowing a 5% numerical error). The denominator is the total precipitation P_total. The test is not applied when P_total < 1 mm (absolute lower bound).
How would an unphysical model fail this?
An unphysical model could "cheat" in the following ways:
Recession phase: The model outputs runoff with non‑physical oscillations during dry periods (e.g., due to drift in LSTM hidden states) instead of a monotonic exponential decay. Even though the hydrograph may look “acceptable”, the fitted recession curve would have an R² significantly below 0.95.
Extreme rainfall: The model over‑responds to extreme storms, producing peak runoff that exceeds the total precipitation (e.g., by erroneously releasing part of its “memory” of storage on top of the incoming rainfall).
Corresponding checks: recession_shape verifies whether the recession follows an exponential decay; peak_bounds verifies whether the runoff peak exceeds the total rainfall during extreme events.
How is the case generated?
The generator constructs two types of test scenarios:
Recession scenario: A 180‑day forcing series – the first 60 days with normal rainfall, followed by 120 days of no rain. The test checks whether the model’s runoff during the rain‑free period decays exponentially.
Extreme rainfall scenario: A 30‑day series containing a 3‑day extreme storm with a total of 100 mm (approximately 5–10 times the normal monthly rainfall). The test checks whether the peak runoff exceeds this 100 mm.
All cases are generated on‑the‑fly with random seeds to prevent the model from memorising specific examples.
Will you build it?
Yes — assign it to me
Conservation law
mass
Residual equation
R_recession = Q(t) - Q(0) * exp(-t/K) [mm/day]
R_extreme = max(Q_peak) / P_total [dimensionless]
Tolerance and its denominator
For the recession test, the tolerance is a goodness‑of‑fit criterion: the coefficient of determination R² ≥ 0.95.
For the extreme rainfall test, the tolerance is R_extreme ≤ 1.05 (allowing a 5% numerical error). The denominator is the total precipitation P_total. The test is not applied when P_total < 1 mm (absolute lower bound).
How would an unphysical model fail this?
An unphysical model could "cheat" in the following ways:
Recession phase: The model outputs runoff with non‑physical oscillations during dry periods (e.g., due to drift in LSTM hidden states) instead of a monotonic exponential decay. Even though the hydrograph may look “acceptable”, the fitted recession curve would have an R² significantly below 0.95.
Extreme rainfall: The model over‑responds to extreme storms, producing peak runoff that exceeds the total precipitation (e.g., by erroneously releasing part of its “memory” of storage on top of the incoming rainfall).
Corresponding checks: recession_shape verifies whether the recession follows an exponential decay; peak_bounds verifies whether the runoff peak exceeds the total rainfall during extreme events.
How is the case generated?
The generator constructs two types of test scenarios:
Recession scenario: A 180‑day forcing series – the first 60 days with normal rainfall, followed by 120 days of no rain. The test checks whether the model’s runoff during the rain‑free period decays exponentially.
Extreme rainfall scenario: A 30‑day series containing a 3‑day extreme storm with a total of 100 mm (approximately 5–10 times the normal monthly rainfall). The test checks whether the peak runoff exceeds this 100 mm.
All cases are generated on‑the‑fly with random seeds to prevent the model from memorising specific examples.
Will you build it?
Yes — assign it to me