|
| 1 | +//! Compressibility coefficient (base unit 1 / pascal, m · s² · kg⁻¹). |
| 2 | +
|
| 3 | +quantity! { |
| 4 | + /// Compressibility coefficient (base unit 1 / pascal, m · s² · kg⁻¹). |
| 5 | + quantity: CompressibilityCoefficient; "compressibility coefficient"; |
| 6 | + /// Dimension of compressibility coefficient, LM⁻¹T² (base unit 1 / pascal, m · s² · kg⁻¹). |
| 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 | + @per_atmosphere: prefix!(none) / 1.013_25_E5; |
| 59 | + "atm⁻¹", "per atmosphere", "per atmosphere"; |
| 60 | + @per_atmosphere_technical: prefix!(none) / 9.806_65_E4; |
| 61 | + "at⁻¹", "per atmosphere (technical)", "per atmosphere (technical)"; |
| 62 | + @per_bar: prefix!(none) / 1.0_E5; "bar⁻¹", "per bar", "per bar"; |
| 63 | + @per_millibar: prefix!(none) / 1.0_E2; "mbar⁻¹", "per millibar", "per millibar"; |
| 64 | + } |
| 65 | +} |
| 66 | + |
| 67 | +#[cfg(test)] |
| 68 | +mod test { |
| 69 | + storage_types! { |
| 70 | + use crate::num::One; |
| 71 | + use crate::si::pressure as p; |
| 72 | + use crate::si::compressibility_coefficient as cc; |
| 73 | + use crate::si::quantities::*; |
| 74 | + use crate::tests::Test; |
| 75 | + |
| 76 | + #[test] |
| 77 | + fn check_dimension() { |
| 78 | + let _: CompressibilityCoefficient<V> = V::one() |
| 79 | + / Pressure::new::<p::pascal>(V::one()); |
| 80 | + } |
| 81 | + |
| 82 | + #[test] |
| 83 | + fn check_units() { |
| 84 | + test::<p::yottapascal, cc::per_yottapascal>(); |
| 85 | + test::<p::zettapascal, cc::per_zettapascal>(); |
| 86 | + test::<p::exapascal, cc::per_exapascal>(); |
| 87 | + test::<p::petapascal, cc::per_petapascal>(); |
| 88 | + test::<p::terapascal, cc::per_terapascal>(); |
| 89 | + test::<p::gigapascal, cc::per_gigapascal>(); |
| 90 | + test::<p::megapascal, cc::per_megapascal>(); |
| 91 | + test::<p::kilopascal, cc::per_kilopascal>(); |
| 92 | + test::<p::hectopascal, cc::per_hectopascal>(); |
| 93 | + test::<p::decapascal, cc::per_decapascal>(); |
| 94 | + test::<p::pascal, cc::per_pascal>(); |
| 95 | + test::<p::decipascal, cc::per_decipascal>(); |
| 96 | + test::<p::centipascal, cc::per_centipascal>(); |
| 97 | + test::<p::millipascal, cc::per_millipascal>(); |
| 98 | + test::<p::micropascal, cc::per_micropascal>(); |
| 99 | + test::<p::nanopascal, cc::per_nanopascal>(); |
| 100 | + test::<p::picopascal, cc::per_picopascal>(); |
| 101 | + test::<p::femtopascal, cc::per_femtopascal>(); |
| 102 | + test::<p::attopascal, cc::per_attopascal>(); |
| 103 | + test::<p::zeptopascal, cc::per_zeptopascal>(); |
| 104 | + test::<p::yoctopascal, cc::per_yoctopascal>(); |
| 105 | + test::<p::atmosphere, cc::per_atmosphere>(); |
| 106 | + test::<p::atmosphere_technical, cc::per_atmosphere_technical>(); |
| 107 | + test::<p::bar, cc::per_bar>(); |
| 108 | + test::<p::millibar, cc::per_millibar>(); |
| 109 | + |
| 110 | + fn test<P: p::Conversion<V>, CC: cc::Conversion<V>>() { |
| 111 | + Test::assert_approx_eq(&CompressibilityCoefficient::new::<CC>(V::one()), |
| 112 | + &(V::one() |
| 113 | + / Pressure::new::<P>(V::one()))); |
| 114 | + } |
| 115 | + } |
| 116 | + } |
| 117 | +} |
0 commit comments