Review of the past two weeks
In the last two weeks, my work can be summarized as two parts: Refactoring the error estimation, mesh refinement routines for COLDAE solvers and helping with the Lobatto IIIa-IIIc and RadauIIa methods for BVPs.
- The previous work focus on the implementation and refactorization of discretized nonlinear solving stuff to get the accurate numerical result of the nonlinear collocation system, although the error estimation and mesh refinement part is implemented before, they still need further polishment to fix the potential bugs. With the recent pushes in collocation equations solving, I started on actually completing this part of work.
The basic workflow of error estimation and mesh refinement procedures can be summarized as flow:
1 | # basic workflow |
It is similar with what we are doing in MIRK methods defect estimation and mesh refinement, except that we use the comparison of two solutions in different mesh to estimate the error norm.
Now the current implemented error estimate and mesh refinement routines are done, what’s left is the ForwardDiff stuff and sparse Jacobian configuation.
Helped with the completion of LobattoIIIa-LobattoIIIc and RadauIIa solvers. Finally all the expanded and nested version of FIRK solvers are done now, although the CI still have some issues to be addressed, it will be good to go in a few days.
Working on replacing solution objects when we are evaluating boundary conditions, after this PR is done, all the API in MIRK methods and Shooting methods would be unified(and they always should be), they would be changed to the interpolation in the solution in boundary conditions:
1 | using BoundaryValueDiffEq |
This interpolation based indexing boundary conditions is better and we should change to this semantics long before😅.
More TODOs:
Refactor the implemented solvers to be compatible with the SciML style, and simplify the internal of Lobatto DAE solvers.
Address the current issues in FIRK solvers.