#ode #numeric #ffi #simulation #env-var

sys sundials-sys

Bindings to the SUNDIALS suite of Nonlinear and DAE Solvers

10 unstable releases (4 breaking)

0.5.0 Apr 29, 2024
0.4.0 Dec 26, 2023
0.3.0 Sep 11, 2023
0.2.5 Mar 21, 2023
0.1.1 Jan 12, 2019

#760 in Math

Download history 5/week @ 2024-02-21 23/week @ 2024-02-28 11/week @ 2024-03-13 6/week @ 2024-03-20 95/week @ 2024-03-27 31/week @ 2024-04-03 129/week @ 2024-04-24 33/week @ 2024-05-01

162 downloads per month
Used in 2 crates

BSD-3-Clause

7.5MB
190K SLoC

C 125K SLoC // 0.2% comments FORTRAN Modern 50K SLoC // 0.0% comments C++ 8K SLoC // 0.1% comments CUDA 3.5K SLoC // 0.1% comments SWIG 1K SLoC // 0.5% comments Python 886 SLoC // 0.1% comments Rust 341 SLoC // 0.0% comments Shell 216 SLoC // 0.1% comments

Cargo Build & Test

sundials-sys

A barebones -sys crate around the SUNDIALS suite of ODE solvers.

System Dependencies

The system must have CMake (cmake dependency) and clang (bindgen dependency) already installed for compilation to succeed.

This crate will try to detect whether a system SUNDIALS library is present (with header files) and otherwise compile a vendored version of it. If your SUNDIALS library is installed at an unusual location, you may declare the environment variables SUNDIALS_LIBRARY_DIR and SUNDIALS_INCLUDE_DIR to communicate this to the build script. You may force the use of the vendored version by enabling the feature build_libraries.

Enabling the klu feature requires the SuiteSparse library to be installed (with header files) on your system. There is no fallback to a vendor version of SuiteSparse because this library is very large. If KLU is installed at a non-standard location and this location is not known to pkg-config, you can set KLU_INCLUDE_DIR and KLU_LIBRARY_DIR to respectively specify the include path for klu.h and the lib path. For example:

KLU_INCLUDE_DIR=/usr/include/suitesparse
KLU_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu

Unix

Use your package manager to install cmake and clang.

System SUNDIALS libraries are available: install libsundials-dev for Debian based systems, sundials-devel for Redhat and Suse, and sundials for Arch, MacOS, and the BSD distributions.

On Debian based systems, the SuiteSparse development files may be installed with apt install libsuitesparse-dev.

Windows

If you haven't already, you must install visual studio, enabling C++ development. You must also install cmake. After this, you must reboot your machine otherwise cmake will not find the C++ compiler and you will have an error such as “Generator Visual Studio 16 2019 could not find any instance of Visual Studio.”

To install a system SUNDIALS, we recommend you use vcpkg and then issue (from the vcpkg directory):

vcpkg install sundials --triplet=x64-windows

Alternatively, you may use Chocolatey to install cmake and llvm (which provides clang).

If you need to enable KLU, you need to add this vcpkg registry which provides sundials with KLU enabled.

License

The license and copyright information for the SUNDIALS suite can be viewed here. At the time of writing, it is a BSD 3-Clause license. The code specific to this crate is also made available under the BSD 3-Clause license.

Versions

  • 0.5.0
    • Add KLU support (feature gated).
    • Be compatible with Sundials version 7.0.0
  • 0.4.0 — Minor improvements
  • 0.3.0 — Ensure sundials version ≥ 6, use vcpkg on Windows.
  • 0.2.0 — Make compilation of sundials optional (allowing to link against the system library). Add static library option.
  • 0.1.1 — removal of (S) libraries from default features, addition of pthreads support if requested
  • 0.1.0 — initial -sys wrapper with minor tests

History

The package sundials-sys was started by by Jason Dark (repo) in January 2019. From June 2021 to October 2022, Arthur Carcano (repo) polished and maintained it.

Dependencies