Skip to main content

dial_ecology/
lib.rs

1//! # dial-ecology
2//!
3//! Lotka-Volterra dynamics for musical tradition competition on cultural dials.
4//!
5//! Musical traditions compete for listener attention like species compete for
6//! resources. This crate models tradition population (popularity) dynamics using
7//! competitive Lotka-Volterra equations:
8//!
9//! `dT_i/dt = r_i · T_i · (1 - Σ_j α_ij · T_j / K_i)`
10//!
11//! where:
12//! - `T_i` is the population (popularity) of tradition *i*
13//! - `r_i` is the intrinsic growth rate
14//! - `K_i` is the carrying capacity
15//! - `α_ij` is the competition coefficient (niche overlap)
16//!
17//! ## Modules
18//!
19//! - [`tradition`] — Musical traditions with dial positions
20//! - [`lotka_volterra`] — ODE solver (Euler, RK4)
21//! - [`niche`] — Niche overlap from cultural dial distances
22//! - [`equilibrium`] — Fixed point and stability analysis
23//! - [`succession`] — Ecosystem evolution simulation
24//! - [`biodiversity`] — Shannon, Simpson diversity indices
25
26pub mod biodiversity;
27pub mod error;
28pub mod equilibrium;
29pub mod lotka_volterra;
30pub mod niche;
31pub mod succession;
32pub mod tradition;
33
34pub use biodiversity::{BiodiversityReport, compute as compute_biodiversity};
35pub use error::EcologyError;
36pub use equilibrium::Equilibrium;
37pub use lotka_volterra::{LotkaVolterraConfig, SimulationResult, SolverMethod, solve, solve_to_equilibrium};
38pub use niche::NicheOverlap;
39pub use succession::{SuccessionModel, SuccessionResult};
40pub use tradition::Tradition;