Software development is an integral part of our research. In order for new numerical algorithms to have impact, they must be implemented in software that is both easy to use and powerful enough to solve interesting problems.
We believe in the principles of reproducibility and open science, including those outlined in the Science Code Manifesto. All codes used in our papers are released (under modified BSD license) and we encourage others to use them.
Below you will find brief descriptions of and links to the software packages developed within our group and with collaborators. Smaller scripts used for a specific paper can be found in links on our publications page.


Documentation Code Paper

A parallel finite volume solver that includes the algorithms of Clawpack and SharpClaw. Scalable to tens of thousands of processors, with a convenient Python interface.

Related packages:

  • Clawpack: High resolution methods for hyperbolic PDEs (in Fortran)
  • VisClaw: Visualization tools for Clawpack, PyClaw, and PetClaw
  • Riemann: A library of wave propagation Riemann solvers
  • PyWENO: Automatic generation of WENO kernels
  • Ignition: Automatic generation of Riemann solvers (experimental)


Documentation Code

A collection of tools for designing Runge-Kutta and multistep Runge-Kutta methods with prescribed or optimized stability and accuracy properties. Written primarily in MATLAB and makes use of the Optimization Toolbox and Global Optimization Toolbox, as well as CVX. RK-opt contains routines for finding
  • polynomials with optimal radius of absolute monotonicity
  • polynomials with optimal stable step size for prescribed complex spectra
  • Runge-Kutta, low-storage Runge-Kutta, and multistep Runge-Kutta methods with
    • optimal radius of absolute monotonicity
    • minimal leading truncation error coefficients
    • prescribed stability polynomial coefficients


Documentation Code

A software laboratory for designing, analyzing, and testing numerical methods for initial value ODEs, written in Python. NodePy takes an object-oriented approach, in which the basic object is a numerical ODE solver (e.g., a Runge-Kutta or linear multistep method). The package contains implementations of many things of general use for numerical analysts:
  • Runge-Kutta and linear multistep methods, including numerous individual methods and families.
  • Properties of methods.
  • Rooted trees and order conditions: a full implementation of the Butcher group, including methods for plotting and computing products on rooted trees, as well as elementary weights and functions for generating and checking order conditions.
  • Additional classes of methods: low-storage Runge-Kutta methods, multistep Runge-Kutta methods, embedded Runge-Kutta pairs, and more.
  • The DETEST suite of initial value test problems, as well as a variety of other problems and methods for automatically comparing performance in practice.

SharpClaw (now part of PyClaw)

Old Code (deprecated; use PyClaw instead)

SharpClaw is a high-order accurate solver for general hyperbolic PDEs. It uses the same kind of wave-propagation Riemann solvers as ClawPack, but is based on a method-of-lines approach. It makes use of high order WENO reconstruction and Runge-Kutta methods to achieve high order accuracy.
SharpClaw has recently been integrated into PyClaw/PetClaw along with very high order WENO reconstruction through PyWENO code generation. The pure Fortran SharpClaw code is no longer supported. Downloading PyClaw (see above) is the recommended way to get the SharpClaw algorithms, and will allow you to run in parallel as well.


© 2011 David Ketcheson and Matteo Parsani
Site design based on a template from Andreas Viklund