User defined RHS Splitting for IMEX#2518
Conversation
Review checklistThis checklist is meant to assist creators of PRs (to let them know what reviewers will typically look for) and reviewers (to guide them in a structured review process). Items do not need to be checked explicitly for a PR to be eligible for merging. Purpose and scope
Code quality
Documentation
Testing
Performance
Verification
Created with ❤️ by the Trixi.jl community. |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #2518 +/- ##
==========================================
+ Coverage 97.12% 97.13% +0.01%
==========================================
Files 627 629 +2
Lines 48610 48765 +155
==========================================
+ Hits 47212 47366 +154
- Misses 1398 1399 +1
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
@MarcoArtiano you can ping me for review when you feel this is ready - I have recently more or less familiarized myself with the splitfunction/splitproblem business |
|
@DanielDoehring this is ready for a review. I've changed the splitting to have something a bit more meaningful. |
|
@ranocha this should be ready to be merged. |
ranocha
left a comment
There was a problem hiding this comment.
Thanks! I just have a few comments.
| solver_stiff, solver_nonstiff; | ||
| source_terms=(nothing, nothing), | ||
| boundary_conditions=(boundary_condition_periodic, boundary_condition_periodic), | ||
| RealT=real(solver), uEltype=RealT, | ||
| initial_caches=(NamedTuple(), NamedTuple())) | ||
|
|
||
| Construct a semidiscretization of a hyperbolic-split PDE. | ||
|
|
||
| For the tuples `equations, source_terms, boundary_conditions, initial_caches` the first argument is discretized with `solver_stiff` and the second argument with `solver_nonstiff`. | ||
| """ | ||
| function SemidiscretizationHyperbolicSplit(mesh, equations::Tuple, | ||
| initial_condition, solvers::Tuple; |
There was a problem hiding this comment.
The docstring and the implementation do not match for the solvers.
There was a problem hiding this comment.
Sorry, I have forgotten to push, now it is updated.
Co-authored-by: Hendrik Ranocha <ranocha@users.noreply.github.com>
Co-authored-by: Hendrik Ranocha <ranocha@users.noreply.github.com>
Co-authored-by: Hendrik Ranocha <ranocha@users.noreply.github.com>
|
I observe https://github.com/trixi-framework/Trixi.jl/actions/runs/25846689367/job/75943597855#step:7:12671 which is similar to Lines 18 to 19 in dfdb226 |
Do you know the cause of that? It seems that simply adding the similar warning for OrdinaryDiffEqBDF should solve the issue. Another alternative would be to use Ariadne.jl, which is more performant, but still in its early development phase. @vchuravy |
|
I added a corresponding ignore setting in #3010 (still to be reviewed). |
The following PR implements a way for the user to define a splitting for the RHS by calling
SemidiscretizationHyperbolicSplitand defining two solver (implicit and explicit). The semidiscretize object returns aSplitODEProblem, which can be solved via an IMEX method.See: https://docs.sciml.ai/OrdinaryDiffEq/stable/imex/IMEXBDF/, for a list of some semi-implicit solvers.
See: IMEX example for a test case example.
Features: