SUNDIALS (SUite of Nonlinear and DIfferential/ALgebraic equation Solvers)


SUNDIALS is a suite of advanced computational codes for solving large-scale problems that can be modeled as a system of nonlinear algebraic equations, or as initial-value problems in ordinary differential-algebraic equations.

Consists of the following four solvers:

CVODE solves initial value problems for ordinary differential equation (ODE) systems.

CVODES solves ODE systems and includes sensitivity analysis capabilities (forward and adjoint).

IDA solves initial value problems for differential-algebraic equation (DAE) systems.

KINSOL solves nonlinear algebraic systems.

The goal of SUNDIALS is providing robust time integrators and nonlinear solvers that can easily be incorporated into existing simulation codes.

The main numerical operations performed in these codes are operations on data vectors, and the codes have been written in terms of interfaces to these vector operations. The result of this design is that users can relatively easily provide their own data structures to the solvers by telling the solver about their structures and providing the required operations on them. The codes also come with default vector structures with pre-defined operation implementations for both serial and distributed memory parallel environments in case a user prefers not to supply their own structures.

Please consult the SUNDIALS Home page for further details and documentation.

The installed versions of SUNDIALS

The suite of nonlinear and differential/algebraic equation solvers versions: 2.3.0 and 2.4.0 are available on HLRB-II.


Before using the SUNDIALS libraries, please provide the environment module sundials via:

module load sundials

Sundials has a number of the header files installed in various subdirectories of include, and users need to specify the code the include and library files. The library and include directories will be automatically linked and available in:


Link SUNDIALS libraries to your own application

The easiest way to determine the preprocessor and linker flags required to link the SUNDIALS libraries to a user application is to invoke, from within the Makefile, the executable script sundials-config which is available in $SUNDIALS_BASE/bin, Its usage is as follows:

Usage: sundials-config -m cvode|cvodes|ida|kinsol -t s|p -l c|f [-s libs|cppflags -hv]
 Requires: standard GNU commands
    -m cvode|cvodes|ida|kinsol   SUNDIALS module
    -t s|p                       use serial or parallel vectors
    -l c|f                       use C or Fortran
    -s libs|cppflags             show linking flags or C preprocessor flags.
                                 (show both if option not given.)
    -h                           usage and options (this help)
    -v                           view this script
    '-l f' is not valid for '-m cvodes'
    '-s cppflags' returns an empty string for '-l f'

With this, a sample Makefile to compile a CVODE application witten in C and using the serial NVECTOR

module could look as follows:

SHELL = /bin/sh
CC       = gcc
CFLAGS   = -g -O
SUN_DISTRO = /home/radu/CODES/sundials-2.3.0-mpich1_gcc
MY_APPS = app1 app2

     @sun_cppflags=`eval "${SUN_DISTRO}/bin/sundials-config -m cvode -t s -l c -s cppflags"`; \
     sun_ldflags=`eval "${SUN_DISTRO}/bin/sundials-config -m cvode -t s -l c -s libs"`;       \
     for i in ${MY_APPS} ; do                                                                 \
     echo "--- Making $${i} ---" ;                                                            \
     eval "make SUN_CPPFLAGS='$${sun_cppflags}' SUN_LDFLAGS='$${sun_ldflags}' $${i}";         \

app1: app1.c
        ${CC} ${CPPFLAGS} ${SUN_CPPFLAGS} ${CFLAGS} -c app1.c
        ${CC} -o app1 app1.o ${CFLAGS} ${LDFLAGS} ${SUN_LDFLAGS}
app2: app2.c
        ${CC} -o app2 app2.o ${CFLAGS} ${LDFLAGS} ${SUN_LDFLAGS}

        rm -f *.o
        rm -f ${MY_APPS}

Documentation and Support

Fore more information about the four solvers CVODE, CVODES, IDA, and KINSOL, please read the documentation as it comes with the source code in the directory


Some examples are available below

More details about compilers and options ( Fortran, MPI, library, Matlab, supports ) read

on the systems where SUNDIAL is installed.


For questions concerning the usage of the SUNDIALS library at LRZ contact: Dr. M. Allalen (089) 35831-8816