[package]
name = "diffsol"
version = "0.12.2"
edition.workspace = true
description = "A library for solving ordinary differential equations (ODEs) in Rust."
license.workspace = true
authors.workspace = true
repository.workspace = true
readme = "../README.md"
[features]
default = ["nalgebra", "faer"]
faer = []
nalgebra = []
cuda = ["dep:cudarc"]
sundials = ["suitesparse_sys", "bindgen", "cc"]
suitesparse = ["suitesparse_sys"]
diffsl = ["dep:diffsl"]
diffsl-cranelift = ["diffsl/cranelift", "diffsl"]
diffsl-external-f64 = ["diffsl-external", "diffsl/external_f64", "diffsl"]
diffsl-external-f32 = ["diffsl-external", "diffsl/external_f32", "diffsl"]
diffsl-external = []
diffsl-external-dynamic = ["diffsl", "diffsl/external_dynamic"]
diffsl-llvm = []
diffsl-llvm15 = ["diffsl/llvm15-0", "diffsl", "diffsl-llvm"]
diffsl-llvm16 = ["diffsl/llvm16-0", "diffsl", "diffsl-llvm"]
diffsl-llvm17 = ["diffsl/llvm17-0", "diffsl", "diffsl-llvm"]
diffsl-llvm18 = ["diffsl/llvm18-1", "diffsl", "diffsl-llvm"]
diffsl-llvm19 = ["diffsl/llvm19-1", "diffsl", "diffsl-llvm"]
diffsl-llvm20 = ["diffsl/llvm20-1", "diffsl", "diffsl-llvm"]
diffsl-llvm21 = ["diffsl/llvm21-1", "diffsl", "diffsl-llvm"]
[dependencies]
nalgebra = { workspace = true }
nalgebra-sparse = { version = "0.11.0", features = ["io"] }
num-traits = { workspace = true }
serde = { workspace = true }
diffsl = { workspace = true, optional = true }
petgraph = "0.8.3"
suitesparse_sys = { version = "0.1.3", optional = true }
thiserror = "2.0.17"
faer-traits = { workspace = true }
cudarc = { workspace = true, optional = true, default-features = false, features = [
"cuda-version-from-build-system",
"cusolver",
"dynamic-linking",
"std",
"cublas",
"cublaslt",
"curand",
"driver",
"runtime",
"nvrtc",
] }
log = "0.4.29"
serde_json = { workspace = true }
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
faer = { workspace = true, features = [ "rayon" ] }
[target.'cfg(target_arch = "wasm32")'.dependencies]
faer = { workspace = true }
[dev-dependencies]
insta = { version = "1.43", features = ["yaml"] }
criterion = { version = "0.7.0" }
skeptic = "0.13.7"
paste = { workspace = true }
colog = "1.4.0"
[build-dependencies]
bindgen = { version = "0.72.1", optional = true }
cc = { version = "1.2", optional = true }
[[bench]]
name = "ode_solvers"
harness = false
[[bench]]
name = "pybamm_dfn"
harness = false
[package.metadata.docs.rs]
features = ["diffsl-llvm15", "diffsl-cranelift", "diffsl-external-dynamic"]