Vsvo embedded bdf#3391
Conversation
|
How do the benchmarks look for this? |
|
@oscardssmith @ChrisRackauckas |
|
Show the work precision diagrams. |
|
cc @oscardssmith @ChrisRackauckas : Please review and provide suggestions. i plan to spend more time over the weekend to dive deep. |
|
Since it is a variable order, u_history might be corrupted with incorrect values causing estimate for est3 and est2 to be error prone. I am looking at storing the raw values and computing everytime. |
|
I spent more time on this, from my understanding the paper is not claiming improvement over FBDF methods instead in shows improvement only against its own fixed-order components (BDF3-Stab, BDF3, FBDF4). I am reconfirming this and also regenerating the plots. Will it help to contact paper authors to confirm and also discuss gaps we are seeing with FBDF methods? |
|
Probably not, it's not a great paper so they didn't check against anything of use. This is all beyond the paper |
|
Is there a reason this couldn't just be added as an adjustment option to QNDF/FBDF? I don't see why it needs a separate stepper. |
Yes I will look into this. |
We could incoportate the following ideas from MOOSE234 to FBDF as options: BDF3-Stab as an A-stable fallback — instead of dropping to BDF1/BDF2 during difficult transients, apply the G-stable BDF3-Stab filter (smaller error constant than BDF2, about 2.7x) Do you think I should try to apply this and see for FBDF? |
|
yup and then make it an option in fbdf |
|
I want to share my understanding and some updates from my side.
As you can see, this approach is resulting in more steps than FBD4 contradictory to our hypothesis.
Please correct me If I am mistaken in my implementation or plan. If this is what you had in mind, IMHO it not worth implementing MOOSE234 optiomization for FBDF algorithm |
|
count the number of steps at a given order. |
|
Order Distribution at tol=1e-6
|
There was a problem hiding this comment.
needs standard converge tests. Lock the order and test convergence
There was a problem hiding this comment.
Added the tests, please review.
Test Summary: | Pass Total Time
MOOSE234 fixed-order convergence (order=2, out-of-place) | 3 3 1.0s
Test Summary: | Pass Total Time
MOOSE234 fixed-order convergence (order=2, in-place) | 3 3 1.3s
Test Summary: | Pass Total Time
MOOSE234 fixed-order convergence (order=3, out-of-place) | 3 3 0.0s
Test Summary: | Pass Total Time
MOOSE234 fixed-order convergence (order=3, in-place) | 3 3 0.0s
Test Summary: | Pass Total Time
MOOSE234 fixed-order convergence (order=4, out-of-place) | 3 3 0.0s
Test Summary: | Pass Total Time
MOOSE234 fixed-order convergence (order=4, in-place) | 3 3 0.0s
There was a problem hiding this comment.
Why is this file separate from the others?
There was a problem hiding this comment.
Fixed this in the latest upload
| @@ -41,6 +41,11 @@ end | |||
| nlsolvefail(nlsolver) && return | |||
| u = nlsolver.tmp + z | |||
|
|
|||
| if alg.time_filter && integrator.success_iter > 0 | |||
There was a problem hiding this comment.
I have rebased and resolved the conflicts. Please review
017b509 to
d7caf13
Compare
…lter MOOSE234: Variable-stepsize, variable-order (2/3/4) implicit method based on DeCaria et al. (arXiv:1810.06670v1). Performs a single BDF3 nonlinear solve per step with two cheap time-filter post-processing steps to produce embedded solutions at orders 2 and 4. FBDF stab_filter: Optional BDF3-Stab correction applied when FBDF drops to order 2 (off by default, enable with `FBDF(stab_filter=true)`). ImplicitEuler time_filter: Optional 2nd-order time-filter correction that raises effective order from 1 to 2 (off by default, enable with `ImplicitEuler(time_filter=true)`).
d7caf13 to
547cb9c
Compare
|
I had to resolve several conflicts with the rebase operation. I have uploaded the latest changes with refreshing to master for these changes
@oscardssmith @ChrisRackauckas : Please review and let me know how you want to proceed. It is not very clear if we should merge one or both of these changes. |
You mean when order is 3? |
The BDF3-Stab filter requires a BDF3 solve as input, so it should activate when k==3 (not k==2). Also override EEst with the embedded difference (y² - y³) when the filter fires, giving the step size controller a correct error magnitude without changing cache.order (which controls the next solve).
Yes |
|
Benchmarking the BDF3-Stab filter on FBDF (both at order 2 and order 3, with and without proper error estimation), I don't see a clear performance benefit. I'll continue investigating whether there are specific problem classes where it helps, but for now we could exclude it from PR. Do we see MOOSE234 as ready to merge, or are there open questions about its value proposition that we should measure more carefully? |
|
Okay then yes split Moose |








Checklist
contributor guidelines, in particular the SciML Style Guide and
COLPRAC.
Additional context
This PR contains changes to stabiity filter for backward euler and also VSVO implementation for BDF based on the paper here
Add any other context about the problem here.
Sorry for the delay it took me a whie to fully understand the paper and make sure the implementation matches with the algorithm defined in the paper
@ChrisRackauckas : Please review and provide feedback. I did rebase this time too.