Add StrangMarchuk second-order symmetric operator splitting#45
Closed
ChrisRackauckas-Claude wants to merge 1 commit into
Closed
Add StrangMarchuk second-order symmetric operator splitting#45ChrisRackauckas-Claude wants to merge 1 commit into
ChrisRackauckas-Claude wants to merge 1 commit into
Conversation
Implements the classical Strang-Marchuk ABA splitting scheme which achieves second-order accuracy through symmetry. For two operators A and B, the scheme performs: - A(dt/2) -> B(dt) -> A(dt/2) This is an improvement over the first-order Lie-Trotter-Godunov scheme (A(dt) -> B(dt)) and is commonly used for semidiscrete exponential propagator (EP) problems. Closes SciML#10 References: * G. Strang, On the construction and comparison of difference schemes, SIAM Journal on Numerical Analysis, 5 (1968), pp. 506-517 * G. I. Marchuk, On the theory of the splitting-up method, in Numerical Solution of Partial Differential Equations-II, Academic Press, 1971, pp. 469-500 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Member
|
rebase |
Contributor
|
Hey, this is exactly within me needs at the moment. I know it are busy times with the OrdinaryDiffEq v8 release, but can I help to move this forward? |
Collaborator
|
I did the first big refactoring of the internals with the last release (v0.3) of this package, but we need another round of refactoring to reuse more of the new OrdinaryDiffEqCore infrastructure from the latest release (OrdinaryDiffEq v7). This brach does unfurtunately not work anymore due to the latest changes (and there were some issues anyway), but you can make a PR to implement and test Strang-Marchuk if you want. |
Collaborator
|
Superseded by #73 |
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.
Summary
Implements the classical Strang-Marchuk ABA splitting scheme as requested in #10. This is a second-order symmetric operator splitting algorithm that achieves higher accuracy than the first-order Lie-Trotter-Godunov scheme through symmetry.
For two operators A and B, the scheme performs:
Changes
StrangMarchukalgorithm struct insrc/solver.jlStrangMarchukCachecache structinit_cacheandadvance_solution_to!for the ABA schemeStrangMarchukfrom the main moduleStrangMarchukReferences
Closes #10
Test plan
Pkg.test()- 369 tests passcc @ChrisRackauckas
🤖 Generated with Claude Code