Speaker: Fruzsina Agocs (Kavli Institute for Cosmology, Cambridge University, UK).

Title: (py)oscode: fast solutions of oscillatory ODEs in physics


I will present (py)oscode, a Python/C++ package for efficiently solving a class of highly oscillatory ordinary differential equations.

These type of equations occur frequently in physics, cosmology and beyond, arising in quantum mechanics, electrical circuits, suspension systems, molecular dynamics, and the extremely early universe. The numerical solution of such systems is often the bottleneck in the forward-modelling phase of Bayesian inference.

Even if the terms in the equation change slowly, if the frequency of oscillations in the solution is high enough, standard numerical methods struggle to solve such equations quickly. Traditional methods have to trace every oscillation in the solution, taking many time-steps at an enormous computational cost. The algorithm underlying pyoscode can detect when the solution is oscillatory and switch to a method based on an analytic approximation (called Wentzel-Kramers-Brillouin, WKB) suited for oscillatory functions, otherwise using a conventional (Runge-Kutta, RK) method. This allows the algorithm to skip over several wavelengths of oscillation in a single step, reducing the number of time-steps taken drastically.

In this talk, I will briefly summarise the algorithm underlying pyoscode, show how it can be used as a general-purpose numerical ODE solver, and present a range of physical applications, such as solving for the energies of a quantum system and the rapid computation of primordial power spectra for exploring models of cosmic inflation. I will compare pyoscode's performance with popular available tools, and discuss how pyoscode can be extended.