scikits.bvp_solver is a python package for solving two point boundary value problems which is based on a modified version of the BVP_SOLVER Fortran package. If you have any questions, comments or suggestions about this tutorial, the examples or bvp_solver itself, please e-mail them to the mailing list or to me at jsalvati@u.washington.edu.

To join the mailing list send an e-mail to scikits-bvp_solver+subscribe@googlegroups.com

Installing and learning to use scikits.bvp_solver

scikits.bvp_solver is available through PyPi. The easiest way to learn how to install and use scikits.bvp_solver is to read the tutorial. It is also helpful to look at the examples, and to read about the template generator, which will generate a code skeleton for a boundary value problem which can then be filled in. Using the template generator reduces the busywork of solving a boundary value problem.


The BVP_SOLVER webpage has several more Fortran examples which should translate easily as well as a paper on the solver which describes its usage and capabilities in greater detail.


The source can be found on GitHub here.

Compilation Help

scikits.bvp_solver requires the gfortran compiler; it may work with other f90 compilers, but this has not been tested.

Compiling on Windows

To install on Windows (tested on Windows 7):

  1. Get MinGW with gfortran here
  2. Compile from source using python setup.py config --compiler=mingw32 build --compiler=mingw32 install

Changes to BVP_SOLVER

The modified version of the BVP_SOLVER package replaces the linear system solver COLROW (Díaz, G. Fairweather, and P. Keast, 1983) with a related linear system solver LAMPAK. This modified version of BVP_SOLVER is BSD licsense compatible. COLROW employs row elimination with row pivoting alternated with column elimination with column pivoting to avoid fill-in in the structured matrices that arise. LAMPAK employs alternate row and column interchanges (i.e., pivoting) to avoid fill-in but performs only row elimination to reduce the matrices. The authors report that LAMPAK gives essentially the same results as COLROW in all the numerical experiments they considered.


Many thanks to Lawrence Shampine, Paul Muir, and H. Xu for writing the original Fortran software, BVP_SOLVER. Additional thanks to Paul Muir for the development of a BSD compliant version of BVP_SOLVER and for consultation during the development of the Python wrapper for BVP_SOLVER.

Bug Reports

Please make bug reports on GitHub here.