Handling of zero input parameters
@lukelowry is already working on this.
Since Aug 10, 2026.
- Dominant language
- C++
- Stars
- 27
- Forks
- 11
- Avg merge
- 3d 8h
- Merged PRs (30d)
- 23
Description
Several phasor dynamics models currently use != 0, == 0, != ZERO<RealT> or == ZERO<RealT> for some input parameters to enable/disable some features. This is ill advised for floating point values.
The models currently affected are:
- ESDC1A
- HYGOV
- IEEEST
- IEEET1
- REECB
- REPCA
isEqual with a tolerance or splitting == into isfinite(), <= and >= are inadequate here. The desired behavior really is to check if the value is zero, and the underlying purpose is to enable/disable some options.
One proposed solution is to expose the enabled/disabled options directly as integers (e.g., order for a stabilizer or booleans (e.g. saturation_disabled for an exciter). While this duplicates some information in the input file, this should make the model implementation cleaner. As long as the enabled/disabled features don't change during the simulation, it can be argued that we are mathematically dealing with different models.
cc @pelesh @superwhiskers
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.