capra/
lib.rs

1//! Dive planning library
2//! # Quick example
3//! A quick example showing how to use this library:
4//! ```
5//! use capra::modes::open_circuit::OpenCircuitParams;
6//! use capra_core::{common, deco};
7//! use time::Duration;
8//! use capra::modes::OpenCircuit;
9//! use capra::DivePlan;
10//! use capra_core::deco::zhl16::tissue_constants::TissueConstants;
11//! use capra_core::deco::zhl16::variant::Variant::B;
12//! let air = common::Gas::new(21, 0, 79).unwrap();
13//!
14//! // Make a new ZHL16 decompression model
15//! let zhl16 = deco::zhl16::ZHL16::new(
16//!     deco::Tissue::default(),
17//!     TissueConstants::new_by_variant(B),
18//!     50,
19//!     70,
20//! );
21//!
22//! // Make a dive segment
23//! let dive_segment = common::DiveSegment::new(
24//!     common::SegmentType::DiveSegment,
25//!     45,
26//!     45,
27//!     Duration::minutes(60),
28//!     -10,
29//!     20,
30//! )
31//! .unwrap();
32//!
33//! let deco_gases = vec![(air, None)];
34//! let segments = vec![(dive_segment, air)];
35//! let parameters = OpenCircuitParams {
36//!     ascent_rate: -10,
37//!     descent_rate: 20,
38//!     metres_per_bar: 10000.0 / common::DENSITY_SALTWATER,
39//!     sac_bottom: 20,
40//!     sac_deco: 15
41//! };
42//! let open_circuit = OpenCircuit::new(
43//!     zhl16,
44//!     &deco_gases,
45//!     &segments,
46//!     parameters
47//! );
48//!
49//! let results = open_circuit.plan();
50//!
51//! for (segment, gas) in results.total_segments() {
52//!     println!("{:?}, {:?}", segment, gas);
53//! }
54//!
55//! for (gas, qty) in results.gas_used() {
56//!     println!("{:?}: {}", gas, qty);
57//! }
58//! ```
59
60pub mod modes;
61pub mod parameters;
62pub mod plan;
63pub mod result;
64
65pub use plan::DivePlan;
66pub use result::DiveResult;
67
68/// A default, placeholder minimum ppO2.
69pub const PPO2_MINIMUM: f64 = 0.18;
70
71/// A default, placeholder maximum ppO2 for use during bottom segments.
72pub const PPO2_MAXIMUM_DIVE: f64 = 1.4;
73
74/// A default, placeholder maximum ppO2 for use during decompression stops.
75pub const PPO2_MAXIMUM_DECO: f64 = 1.6;