Skip to main content

garbongus/
lib.rs

1//! # garbongus
2//!
3//! Fluid mechanics library for pipeline hydraulics, desalination water transport,
4//! tunnel flow, suction/vacuum lift, capillary rise, and pipe flow calculations.
5//! Supports fresh water and seawater/brine. Pure Rust, zero dependencies.
6//!
7//! ## Modules
8//!
9//! | Module | Purpose |
10//! |--------|---------|
11//! | [`fluid`] | Fluid properties: fresh water + seawater/brine (density, viscosity, surface tension, vapor pressure) |
12//! | [`flow`] | Flow rate, pipe sizing, unit conversions, Bernoulli, pump power, pressure↔depth |
13//! | [`manning`] | Manning equation for tunnel and open-channel gravity flow |
14//! | [`pipeline`] | Multi-segment pipeline with elevation profile, friction losses, pump power |
15//! | [`pipe`] | Darcy-Weisbach friction loss, Colebrook-White, Reynolds number, flow regime |
16//! | [`vacuum`] | Suction/vacuum lift over arbitrary distances |
17//! | [`capillary`] | Capillary rise height calculations |
18//!
19//! ## Quick Example
20//!
21//! ```rust
22//! use garbongus::fluid::Fluid;
23//! use garbongus::flow::{required_diameter, pump_power, FlowRate};
24//!
25//! // Seawater at 35 ppt salinity, 20°C
26//! let fluid = Fluid::seawater(20.0, 35.0);
27//! println!("Density: {:.1} kg/m³", fluid.density_kg_m3);
28//!
29//! // Size a pipe: Q = 10 m³/s at 2 m/s → D ≈ 2.52 m
30//! let d = required_diameter(10.0, 2.0);
31//! println!("Required diameter: {:.2} m", d);
32//!
33//! // Pump power for 50m total head, 85% efficiency
34//! let pp = pump_power(fluid.density_kg_m3, 10.0, 50.0, 0.85);
35//! println!("Pump power: {:.1} kW", pp.shaft_kw());
36//!
37//! // Flow rate conversions
38//! let fr = FlowRate::from_m3s(1.0);
39//! println!("{:.1} MGD = {:.0} L/min", fr.to_mgd(), fr.to_lpm());
40//! ```
41
42pub mod capillary;
43pub mod fluid;
44pub mod flow;
45pub mod manning;
46pub mod pipe;
47pub mod pipeline;
48pub mod vacuum;