Skip to main content

uom/si/
compressibility_coefficient.rs

1//! Compressibility coefficient (base unit 1 / pascal, kg⁻¹ · m · s²).
2
3quantity! {
4    /// Compressibility coefficient (base unit 1 / pascal, kg⁻¹ · m · s²).
5    quantity: CompressibilityCoefficient; "compressibility coefficient";
6    /// Dimension of compressibility coefficient, LM⁻¹T² (base unit 1 / pascal, kg⁻¹ · m · s²).
7    dimension: ISQ<
8        P1,     // length
9        N1,     // mass
10        P2,     // time
11        Z0,     // electric current
12        Z0,     // thermodynamic temperature
13        Z0,     // amount of substance
14        Z0>;    // luminous intensity
15    units {
16        @per_yottapascal: prefix!(none) / prefix!(yotta);
17            "YPa⁻¹", "per yottapascal", "per yottapascal";
18        @per_zettapascal: prefix!(none) / prefix!(zetta);
19            "ZPa⁻¹", "per zettapascal", "per zettapascal";
20        @per_exapascal: prefix!(none) / prefix!(exa);
21            "EPa⁻¹", "per exapascal", "per exapascal";
22        @per_petapascal: prefix!(none) / prefix!(peta);
23            "PPa⁻¹", "per petapascal", "per petapascal";
24        @per_terapascal: prefix!(none) / prefix!(tera);
25            "TPa⁻¹", "per terapascal", "per terapascal";
26        @per_gigapascal: prefix!(none) / prefix!(giga);
27            "GPa⁻¹", "per gigapascal", "per gigapascal";
28        @per_megapascal: prefix!(none) / prefix!(mega);
29            "MPa⁻¹", "per megapascal", "per megapascal";
30        @per_kilopascal: prefix!(none) / prefix!(kilo);
31            "kPa⁻¹", "per kilopascal", "per kilopascal";
32        @per_hectopascal: prefix!(none) / prefix!(hecto);
33            "hPa⁻¹", "per hectopascal", "per hectopascal";
34        @per_decapascal: prefix!(none) / prefix!(deca);
35            "daPa⁻¹", "per decapascal", "per decapascal";
36        /// Derived unit of compressibility coefficient.
37        @per_pascal: prefix!(none); "Pa⁻¹", "per pascal", "per pascal";
38        @per_decipascal: prefix!(none) / prefix!(deci);
39            "dPa⁻¹", "per decipascal", "per decipascal";
40        @per_centipascal: prefix!(none) / prefix!(centi);
41            "cPa⁻¹", "per centipascal", "per centipascal";
42        @per_millipascal: prefix!(none) / prefix!(milli);
43            "mPa⁻¹", "per millipascal", "per millipascal";
44        @per_micropascal: prefix!(none) / prefix!(micro);
45            "µPa⁻¹", "per micropascal", "per micropascal";
46        @per_nanopascal: prefix!(none) / prefix!(nano);
47            "nPa⁻¹", "per nanopascal", "per nanopascal";
48        @per_picopascal: prefix!(none) / prefix!(pico);
49            "pPa⁻¹", "per picopascal", "per picopascal";
50        @per_femtopascal: prefix!(none) / prefix!(femto);
51            "fPa⁻¹", "per femtopascal", "per femtopascal";
52        @per_attopascal: prefix!(none) / prefix!(atto);
53            "aPa⁻¹", "per attopascal", "per attopascal";
54        @per_zeptopascal: prefix!(none) / prefix!(zepto);
55            "zPa⁻¹", "per zeptopascal", "per zeptopascal";
56        @per_yoctopascal: prefix!(none) / prefix!(yocto);
57            "yPa⁻¹", "per yoctopascal", "per yoctopascal";
58
59        @per_atmosphere: prefix!(none) / 1.013_25_E5;
60            "atm⁻¹", "per atmosphere", "per atmosphere";
61        @per_atmosphere_technical: prefix!(none) / 9.806_65_E4;
62            "at⁻¹", "per atmosphere (technical)", "per atmosphere (technical)";
63        @per_bar: prefix!(none) / 1.0_E5; "bar⁻¹", "per bar", "per bar";
64        @per_millibar: prefix!(none) / 1.0_E2; "mbar⁻¹", "per millibar", "per millibar";
65    }
66}
67
68#[cfg(test)]
69mod tests {
70    storage_types! {
71        use crate::num::One;
72        use crate::si::pressure as p;
73        use crate::si::compressibility_coefficient as cc;
74        use crate::si::quantities::*;
75        use crate::tests::Test;
76
77        #[test]
78        fn check_dimension() {
79            let _: CompressibilityCoefficient<V> = V::one()
80                / Pressure::new::<p::pascal>(V::one());
81        }
82
83        #[test]
84        fn check_units() {
85            test::<p::yottapascal, cc::per_yottapascal>();
86            test::<p::zettapascal, cc::per_zettapascal>();
87            test::<p::exapascal, cc::per_exapascal>();
88            test::<p::petapascal, cc::per_petapascal>();
89            test::<p::terapascal, cc::per_terapascal>();
90            test::<p::gigapascal, cc::per_gigapascal>();
91            test::<p::megapascal, cc::per_megapascal>();
92            test::<p::kilopascal, cc::per_kilopascal>();
93            test::<p::hectopascal, cc::per_hectopascal>();
94            test::<p::decapascal, cc::per_decapascal>();
95            test::<p::pascal, cc::per_pascal>();
96            test::<p::decipascal, cc::per_decipascal>();
97            test::<p::centipascal, cc::per_centipascal>();
98            test::<p::millipascal, cc::per_millipascal>();
99            test::<p::micropascal, cc::per_micropascal>();
100            test::<p::nanopascal, cc::per_nanopascal>();
101            test::<p::picopascal, cc::per_picopascal>();
102            test::<p::femtopascal, cc::per_femtopascal>();
103            test::<p::attopascal, cc::per_attopascal>();
104            test::<p::zeptopascal, cc::per_zeptopascal>();
105            test::<p::yoctopascal, cc::per_yoctopascal>();
106
107            test::<p::atmosphere, cc::per_atmosphere>();
108            test::<p::atmosphere_technical, cc::per_atmosphere_technical>();
109            test::<p::bar, cc::per_bar>();
110            test::<p::millibar, cc::per_millibar>();
111
112            fn test<P: p::Conversion<V>, CC: cc::Conversion<V>>() {
113                Test::assert_approx_eq(&CompressibilityCoefficient::new::<CC>(V::one()),
114                    &(V::one()
115                        / Pressure::new::<P>(V::one())));
116            }
117        }
118    }
119}