[package]
edition = "2024"
name = "math-bem"
version = "0.3.3"
authors = ["Pierre F. Aubert pierre@spinorama.org"]
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "High-performance Boundary Element Method library for acoustic scattering"
readme = "README.md"
keywords = [
"bem",
"boundary-element",
"acoustics",
"numerical",
"hrtf",
]
categories = [
"science",
"mathematics",
"simulation",
]
license = "GPL-3.0-or-later"
repository = "https://github.com/pierreaubert/sotf"
[features]
cli = [
"native",
"dep:clap",
]
default = [
"native",
"cli",
]
memory-optimized = []
native = [
"ndarray/blas",
"ndarray/rayon",
"ndarray-linalg",
"dep:env_logger",
]
out-of-core = []
parallel = []
pure-rust = ["native"]
wasm = [
"dep:wasm-bindgen",
"dep:wasm-bindgen-rayon",
]
[lib]
name = "math_audio_bem"
path = "src/lib.rs"
[[bin]]
name = "qa-suite"
path = "bin/qa_suite.rs"
required-features = [
"native",
"cli",
"parallel",
]
[[bin]]
name = "roomsim"
path = "bin/room_simulator_bem.rs"
required-features = [
"cli",
"native",
"parallel",
"memory-optimized",
"out-of-core",
]
[[example]]
name = "adaptive_beta_sweep"
path = "examples/adaptive_beta_sweep.rs"
[[example]]
name = "analytical_check"
path = "examples/analytical_check.rs"
[[example]]
name = "angular_validation"
path = "examples/angular_validation.rs"
[[example]]
name = "audio_fmm_sweep"
path = "examples/audio_fmm_sweep.rs"
[[example]]
name = "audio_frequency_sweep"
path = "examples/audio_frequency_sweep.rs"
[[example]]
name = "bem_convergence_study"
path = "examples/bem_convergence_study.rs"
[[example]]
name = "bem_diagnostics"
path = "examples/bem_diagnostics.rs"
[[example]]
name = "beta_comparison"
path = "examples/beta_comparison.rs"
[[example]]
name = "bounded_beta_test"
path = "examples/bounded_beta_test.rs"
[[example]]
name = "convergence_test"
path = "examples/convergence_test.rs"
[[example]]
name = "e_integral_debug"
path = "examples/e_integral_debug.rs"
[[example]]
name = "e_nearby_analysis"
path = "examples/e_nearby_analysis.rs"
[[example]]
name = "e_offdiag_sum"
path = "examples/e_offdiag_sum.rs"
[[example]]
name = "fmm_benchmark"
path = "examples/fmm_benchmark.rs"
[[example]]
name = "fmm_ilu_solver"
path = "examples/fmm_ilu_solver.rs"
[[example]]
name = "fmm_test"
path = "examples/fmm_test.rs"
[[example]]
name = "fmm_validation"
path = "examples/fmm_validation.rs"
[[example]]
name = "high_order_quad_test"
path = "examples/high_order_quad_test.rs"
[[example]]
name = "hypersingular_test"
path = "examples/hypersingular_test.rs"
[[example]]
name = "incident_field_check"
path = "examples/incident_field_check.rs"
[[example]]
name = "integration_test"
path = "examples/integration_test.rs"
[[example]]
name = "matrix_debug"
path = "examples/matrix_debug.rs"
[[example]]
name = "mesh_comparison"
path = "examples/mesh_comparison.rs"
[[example]]
name = "mesh_convergence_study"
path = "examples/mesh_convergence_study.rs"
[[example]]
name = "mesh_debug"
path = "examples/mesh_debug.rs"
[[example]]
name = "mesh_refinement_test"
path = "examples/mesh_refinement_test.rs"
[[example]]
name = "mesh_topology_comparison"
path = "examples/mesh_topology_comparison.rs"
[[example]]
name = "neighbor_integration_test"
path = "examples/neighbor_integration_test.rs"
[[example]]
name = "normal_check"
path = "examples/normal_check.rs"
[[example]]
name = "optimal_beta_convergence"
path = "examples/optimal_beta_convergence.rs"
[[example]]
name = "residual_check"
path = "examples/residual_check.rs"
[[example]]
name = "room_simulator_config"
path = "examples/room_simulator_config.rs"
[[example]]
name = "room_simulator_demo"
path = "examples/room_simulator_demo.rs"
[[example]]
name = "row_sum_correction_test"
path = "examples/row_sum_correction_test.rs"
[[example]]
name = "row_sum_debug"
path = "examples/row_sum_debug.rs"
[[example]]
name = "simple_sphere_test"
path = "examples/simple_sphere_test.rs"
required-features = ["native"]
[[test]]
name = "test_1d_wave"
path = "tests/test_1d_wave.rs"
[[test]]
name = "test_2d_cylinder"
path = "tests/test_2d_cylinder.rs"
[[test]]
name = "test_3d_sphere"
path = "tests/test_3d_sphere.rs"
[[test]]
name = "test_accuracy_parity"
path = "tests/test_accuracy_parity.rs"
[[test]]
name = "test_bem_sphere_integration"
path = "tests/test_bem_sphere_integration.rs"
[[test]]
name = "test_fmm_validation"
path = "tests/test_fmm_validation.rs"
[dependencies.anyhow]
version = "1.0"
[dependencies.chrono]
version = "0.4"
features = ["serde"]
[dependencies.clap]
version = "4.5"
features = ["derive"]
optional = true
[dependencies.env_logger]
version = "0.11"
optional = true
[dependencies.log]
version = "0.4"
[dependencies.math-solvers]
version = "0.3"
default-features = false
[dependencies.math-wave]
version = "0.3"
[dependencies.math-xem-common]
version = "0.3"
[dependencies.ndarray]
version = "0.17"
features = [
"rayon",
"serde",
]
default-features = false
[dependencies.ndarray-linalg]
version = "0.18"
optional = true
[dependencies.num-complex]
version = "0.4"
features = ["serde"]
[dependencies.rayon]
version = "1.11"
[dependencies.serde]
version = "1.0"
features = [
"derive",
"rc",
]
[dependencies.serde_json]
version = "1.0"
[dependencies.thiserror]
version = "2.0.17"
[dependencies.toml]
version = "0.8"
[dependencies.wasm-bindgen]
version = "0.2"
optional = true
[dependencies.wasm-bindgen-rayon]
version = "1.2"
optional = true
[dev-dependencies.directories]
version = "6"
[target.'cfg(any(target_os = "linux", target_os = "windows"))'.dependencies.ndarray-linalg]
version = "0.18"
features = ["openblas-system"]
optional = true
[target.'cfg(target_os = "macos")'.dependencies.ndarray-linalg]
version = "0.18"
features = ["openblas-system"]
optional = true