Fix stepping past domain error for NoiseGrid when dt doesn't evenly divide time span #241
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Fixes #136
When solving a
NoiseProblemwith aNoiseGridwhere thedtdoesn't evenly divide the time span, floating point errors could cause the solver to report "Stepped past the defined domain for the NoiseGrid".Root Cause
This occurred because:
dt=0.01over tspan[0.0, 10.0], floating point errors accumulate andW.curtends up at~9.9999999999instead of exactly10.0step_setupflag gets set tofalsewhenW.curt + dt > W.t[end]W.curt < prob.tspan[2](still slightly less due to floating point)accept_step!errors becausestep_setupisfalseFix
The fix adds two checks in the solve loop:
step_setupif necessaryTest Plan
dt=0.01with grid step0.1)dtdoesn't evenly divide the time span (dt=0.03over[0,1])correlated.jlwhich also fails on master)cc @ChrisRackauckas
🤖 Generated with Claude Code