[package]
name = "chrom-rs"
version = "0.3.0"
edition = "2024"
description = "Liquid chromatography simulator — Langmuir isotherms, numerical solvers (Euler, RK4), CLI and config-file interface"
license = "Apache-2.0"
repository = "https://github.com/biface/chromatography"
readme = "README.md"
keywords = ["chromatography", "simulation", "langmuir", "numerical", "chemistry"]
categories = ["science", "mathematics", "algorithms"]
exclude = [
    "tools/*",
    "benches/*",
    "tests/integration/*",
]

[features]
default = ["parallel"]
parallel = ["rayon"]
beyond_physical_limits = []

[package.metadata.coverage]
min-coverage = 80

[profile.coverage]
inherits = "test"
opt-level = 0

[dependencies]
dynamic-cli = "0.2.0"
nalgebra = { version = "0.34.2", features = ["serde-serialize"] }
num = "0.4.3"
serde = { version = "1.0.228", features = ["derive"] }
typetag = "0.2"
log = "0.4.29"
serde_json = "1.0"
serde_yaml = "0.9"
anyhow = "1"

# Export and visualization
chrono = "0.4"
plotters = "0.3"

# Parallelism (optional)
rayon = { version = "1.11", optional = true }
ndarray = { version = "0.17.2", features = ["serde"] }

[dev-dependencies]
approx = "0.5.1"
cargo-llvm-cov = "0.8.5"
criterion = { version = "0.8", features = ["html_reports", "plotters"] }
tempfile = "3.25.0"
rand = "0.10"

[package.metadata.docs.rs]
rustdoc-args = ["--html-in-header", "docs/katex-header.html"]

[[bench]]
name = "solver_performance"
harness = false

[[bench]]
name = "langmuir_performance"
harness = false

[[example]]
name = "tfa_single"
path = "examples/tfa.rs"

[[example]]
name = "tfa_from_config"
path = "examples/tfa_from_config.rs"

[[example]]
name = "acids_multi"
path = "examples/acids_multi.rs"

[[example]]
name = "acids_from_config"
path = "examples/acids_from_config.rs"

[[example]]
name = "high_load"
path = "examples/high_load.rs"
required-features = ["beyond_physical_limits"]

[[bin]]
name = "plot_parallelism_threshold"
path = "tools/plot_parallelism_threshold.rs"

[[bin]]
name = "plot_species_response_curve"
path = "tools/plot_species_response_curve.rs"
