[package]
name = "pravash"
version = "1.1.0"
edition = "2024"
rust-version = "1.89"
license = "GPL-3.0-only"
description = "Fluid dynamics simulation — SPH, Euler/Navier-Stokes, shallow water, buoyancy, drag, vortex dynamics"
homepage = "https://github.com/MacCracken/pravash"
repository = "https://github.com/MacCracken/pravash"
readme = "README.md"
documentation = "https://docs.rs/pravash"
keywords = ["fluid", "simulation", "physics", "sph", "navier-stokes"]
categories = ["science", "simulation"]
exclude = [".claude/", ".github/", "docs/", "scripts/"]

[features]
default = ["sph", "grid", "shallow"]
sph = []
grid = []
shallow = []
buoyancy = []
vortex = []
coupling = []
compute = []
parallel = ["dep:rayon"]
ai = ["dep:reqwest", "dep:tokio", "dep:serde_json"]
logging = ["dep:tracing-subscriber", "dep:tracing-chrome"]
full = ["sph", "grid", "shallow", "buoyancy", "vortex", "coupling", "compute", "parallel", "ai", "logging"]

[dependencies]
hisab = { version = "1.1", features = ["num", "geo", "autodiff"] }
serde = { version = "1", features = ["derive"] }
thiserror = "2"
tracing = "0.1"

# Optional
reqwest = { version = "0.12", features = ["json"], optional = true }
tokio = { version = "1", features = ["full"], optional = true }
serde_json = { version = "1", optional = true }
tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"], optional = true }
tracing-chrome = { version = "0.7", optional = true }
rayon = { version = "1", optional = true }

[dev-dependencies]
serde_json = "1"
criterion = { version = "0.5", features = ["html_reports"] }

[[bench]]
name = "benchmarks"
harness = false
required-features = ["sph", "grid", "shallow", "coupling"]

[[test]]
name = "integration"
required-features = ["sph", "grid", "shallow", "buoyancy", "vortex", "coupling"]

[[example]]
name = "basic_fluid"
required-features = ["sph"]

[[example]]
name = "shallow_water"
required-features = ["shallow"]

[[example]]
name = "multiphase"
required-features = ["sph"]
