Fix SplitODEProblem regression for non-IMEX ESDIRK methods (Kvaerno3/4/5)#3653
Merged
Conversation
Contributor
|
Verified the fix reproduces and resolves the issue locally. Kvaerno4 + SplitFunction on a simple f1=-u, f2=2u problem gives u_end=[1.738, 0.869] on master (clearly wrong — f2 dropped) and u_end≈[2.718, 1.359] after the fix (matches analytic e¹·[1.0, 0.5]). Same for Kvaerno3 and Kvaerno5, both IIP and OOP. SDIRK convergence + DAE suites still pass. Thanks for tracking it down! |
singhharsh1708
approved these changes
May 19, 2026
ranocha
reviewed
May 19, 2026
Member
ranocha
left a comment
There was a problem hiding this comment.
Thanks a lot for the fix! Wold it make sense to add some CI tests to ensure that such an error does not happen again in the future?
Contributor
Author
|
Yes, makes sense. I added a test in dc27125. |
Member
|
Great, thanks! I assume you checked that it fails without your fixes? |
Contributor
Author
|
Yes, it fails on current master with convergence rates around 0. |
Member
|
Thanks a lot! |
ChrisRackauckas
approved these changes
May 19, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Checklist
contributor guidelines, in particular the SciML Style Guide and
COLPRAC.
Additional context
After the generic IMEX tableau refactoring (#3196),
Kvaerno3,Kvaerno4, andKvaerno5give wrong results when used with aSplitODEProblem. The non-stiff componentf.f2is silently dropped from the integration.This is because the new
_perform_step_iip!/_perform_step_oop!in generic_imex_perform_step.jl unconditionally branches onintegrator.f isa SplitFunctionto compute the first stage using only f.f1:For true IMEX methods with
issplit(alg) = truethis is correct, but not forissplit(alg) = falseas the Kvaerno methods.This fixes the regression observed in trixi-framework/Trixi.jl#2910 (comment), @singhharsh1708.
Note that I used the help of AI tools to find the root cause, but I supervised and reviewed the changes.