Context
PR #149 fixed two `AttributeError` bugs in `wrapper.py` where
nonexistent methods were called:
- `routing.muskingum()` → `routing.Muskingum_V()`
- `distrrm.DistMAXBAS()` → `distrrm.DistMaxbas1()`
The old methods never existed, so the `FW1Withlake` code path was
always broken. The fix chose the closest matching methods, but the
specific variants should be verified.
Problem / Current Behaviour
`Muskingum_V` is the vectorized variant (clamps negative outflow).
`Muskingum` is the iterative variant. The choice matters for model
results. Similarly, `DistMaxbas1` vs `DistMaxbas2` use different
spatial weighting strategies.
Affected locations
| File |
Symbol |
Notes |
| `src/Hapi/wrapper.py:~275` |
`FW1Withlake` |
Uses `Muskingum_V` |
| `src/Hapi/wrapper.py:~286` |
`FW1Withlake` |
Uses `DistMaxbas1` |
Proposed Solution
- Confirm with domain knowledge whether `Muskingum_V` (vectorized)
or `Muskingum` (iterative) is correct for lake outflow routing
- Confirm whether `DistMaxbas1` or `DistMaxbas2` is correct for
the FW1 framework
- Add a brief comment explaining the choice
- Add integration test covering the `FW1Withlake` code path
Effort Estimate
Size: `S`
Rationale: Domain verification + one comment + one test.
Definition of Done
Context
PR #149 fixed two `AttributeError` bugs in `wrapper.py` where
nonexistent methods were called:
The old methods never existed, so the `FW1Withlake` code path was
always broken. The fix chose the closest matching methods, but the
specific variants should be verified.
Problem / Current Behaviour
`Muskingum_V` is the vectorized variant (clamps negative outflow).
`Muskingum` is the iterative variant. The choice matters for model
results. Similarly, `DistMaxbas1` vs `DistMaxbas2` use different
spatial weighting strategies.
Affected locations
Proposed Solution
or `Muskingum` (iterative) is correct for lake outflow routing
the FW1 framework
Effort Estimate
Size: `S`
Rationale: Domain verification + one comment + one test.
Definition of Done