BoundaryValueDiffEq.jl icon indicating copy to clipboard operation
BoundaryValueDiffEq.jl copied to clipboard

Add Lobatto IIIa-c and Radau IIa solvers

Open axla-io opened this issue 3 months ago • 11 comments

Features

  • 17 new Fully Implicit Runge-Kutta (FIRK) solvers: Lobatto IIIa-c 2 to 5 stage versions, and Radau IIa 1,2,3,5,7 - stage versions
  • Choice of cache with nested nonlinear solve (better performance for large problems) or expanded cache (seems to be more robust)
  • Adaptivity and interpolations
  • Sparse Jacobians

Issues with the code

Tests pass for the expanded cache, except for in some cases with the convergence tests for the higher order solvers, I think that the reason for this is that the error is low in absolute terms. I've done a check where the tests are marked as broken if the solution error is less than 1e-12

Also there is a runtime dispatch error when calling the JET tests. I have commented the lines in src/solve/firk.jl where the error occurs. I couldn't figure out how to resolve them.

For the nested cache, in addition to the tests that the expanded one doesn't pass, it also seem to have poor performance on NLLNS and Vector of vector initials tests. I haven't found a solver for which the nested ones converges there. For now these tests are commented out.

Also, the nested cache doesn't support ForwardDiff yet.

Checklist

  • [x ] Appropriate tests were added
  • [x ] Any code changes were done in a way that does not break public API
  • [x ] All documentation related to code changes were updated
  • [ ] The new code follows the contributor guidelines, in particular the SciML Style Guide and COLPRAC. (I commented out tests for nested cache as a WIP thing)
  • [ ] Any new documentation only uses public API (I don't understand what this means :( )

axla-io avatar Mar 31 '24 04:03 axla-io