ODEPACK: Numerical Solutions to ODEs

ODEPACK is a library for the numerical solution of systems of ordinary differential equations. It is written in Fortran 77, but can be accessed from C and C++ with only a little effort. The permanent home of ODEPACK is in the ODEPACK directory at netlib. Surprisingly, there are very few open-source libraries that perform the functions of ODEPACK.

A friendlier distribution of ODEPACK

https://github.com/cfinch/odepack

ODEPACK is distributed as fixed-format Fortran 77 source with plain text files offering documentation and examples. It is not the friendliest distribution, because there are no makefiles and even the examples are buried in commented-out sections of the solver source code. It seems that ODEPACK was designed to be used in source form, perhaps by copying relevant functions and pasting them into your own Fortran program, or compiling ODEPACK right into your program.
In an effort to get ODEPACK running for my own use, I have developed a friendlier distribution. I created a Makefile that will compile ODEPACK as a shared library, using the Gnu compiler collection (gcc), and separated the demonstration code into a directory of standalone programs. I intended to make it publicly available…but I never did. Ask me if you want it!

Documentation for ODEPACK

Read the ODEPACK docs as HTML

Using ODEPACK

Once compiled as a library, ODEPACK has to be linked with your application.

ODEPACK and C/C++

Although ODEPACK is written in the vintage dialect of Fortran 77, it can be called from a C or C++ program.

3 thoughts on “ODEPACK: Numerical Solutions to ODEs”

  1. Hi just wondered if you got around the compiler / linker errors from the original code. ie. where real arrays are passed into integer arrays and arrays are accessed past their defined end. I tried to suppress these in the the Intel Compiler but test cases 5 and 6 fail.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.