Summer of Code Summary
During the summer, I contributed to multiple repositories under the JuliaDiffEq organization and completed the implementation of Exponential Runge-Kutta (ExpRK) integrators. My work can be roughly summarized into three parts: the exponential utilities, the integrators and sparse Jacobian support.
Exponential Utilities
The development of utility functions/types used by the exponential occurs on the first four weeks and is summarized by the following blog posts:
Near the end of GSoC, I also migrated the utilities to a separate package ExponentialUtilities under JuliaDiffEq.
Merged Pull Requests
OrdinaryDiffEq:
- Exponential utilities - phi functions #355
- Rewriting
phimv
andarnoldi
#361 - Happy-breakdown detection and
t
parameter forphimv
#365 - Lanczos algorithm for symmetric/Hermitian matrices #370
- Additional functionalities for exp utility: error estimate and IOP #372
- Krylov Phiv internal time stepping #375
- Adaptation for
phiv_timestep(!)
#376 - Time-stepping Krylov: special case for
expv_timestep
#378 - Packaged cache type for
expv
andphiv
#408
Issues and Discussions
OrdinaryDiffEq:
ExpRK Integrators
I implemented the infrastructure for the ExpRK integrators and wrote most of the algorithms during week 5 to 8. The adaptive Exponential Rosenbrock methods were added on week 12 and I plan to also add the SETD1 method for StochasticDiffEq after GSoC. Blog posts for this period:
Merged Pull Requrests
DiffEqBase:
OrdinaryDiffEq:
- ETDRK integrators #385
- Hochbruck-Ostermann Method #395
- Optimizing the classical ExpRK integrators #401
- Exp4 using EPIRK #406
- Fourth order EPIRK methods #410
- Fifth order EPIRK methods #417
- Adaptive exponential Rosenbrock integrators #463
DiffEqDevDocs:
WIP Pull Requests
OrdinaryDiffEq:
DiffEqDocs:
Issues and Discussions
OrdinaryDiffEq:
Sparse Jacobian Support & Lazy W Operator
This started as an attempt to add sparse Jacobian support for the ExpRK integrators and ended up with a systematic improvement of the implicit handling functionality of JuliaDiffEq. I also helped upgrading JuliaDiffEq to v0.7 during this period. Blog post for this period:
Merged Pull Requests
DiffEqBase:
OrdinaryDiffEq:
DiffEqOperators:
StochasticDiffEq:
Minor PRs for v0.7 update: