[package]
name = "caustic"
version = "0.0.12"
edition = "2024"
description = "A General-Purpose 6D Collisionless Gravitational Dynamics Solver"
authors = ["Albin <albin@sjoegren.se>"]
license = "GPL-3.0"
repository = "https://github.com/resonant-jovian/caustic"
documentation = "https://docs.rs/caustic"
keywords = ["vlasov", "poisson", "simulation", "physics"]
categories = ["science", "simulation"]
[dependencies]
rust_decimal = "1.40.0"
anyhow = "1.0.102"
thiserror = "2.0.18"
rustfft = "6.4.1"
rayon = "1.11.0"
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.149"
realfft = "3.5.0"
tracing = "0.1.44"
faer = "0.24.0"
hdf5-metno = { version = "0.12.4", optional = true }
mpi = { version = "0.8.1", optional = true }
dhat = { version = "0.3.3", optional = true }
tikv-jemallocator = { version = "0.6.1", optional = true }
mimalloc = { version = "0.1.48", optional = true }
tracing-tracy = { version = "0.11.4", optional = true }
[dev-dependencies]
criterion = { version = "0.8.2", features = ["html_reports"] }
[features]
default = []
hdf5 = ["dep:hdf5-metno"]
mpi = ["dep:mpi"]
jemalloc = ["dep:tikv-jemallocator"]
mimalloc-alloc = ["dep:mimalloc"]
dhat-heap = ["dep:dhat"]
tracy = ["dep:tracing-tracy"]
[[bench]]
name = "solver_kernels"
harness = false
[profile.release]
opt-level = 3
lto = "fat"
codegen-units = 1
panic = "abort"
[profile.profiling]
inherits = "release"
debug = true
strip = "none"
[lints.rust]
unsafe_code = "deny"
warnings = "forbid"
non_ascii_idents = "allow"
non_snake_case = "allow"
dead_code = "allow"
unused_variables = "allow"
unused_imports = "allow"
deprecated = "allow"
non_upper_case_globals = "allow"
non_camel_case_types = "allow"
unused_attributes = "allow"
[lints.clippy]
unwrap_used = "deny"
expect_used = "deny"
unwrap_in_result = "deny"
get_unwrap = "deny"
panic = "deny"
needless_range_loop = "allow"
too_many_arguments = "allow"
excessive_precision = "allow"