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:

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:

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: