Skip to content

Commit 49e63a0

Browse files
committed
Add CompressibilityCoefficient quantity
1 parent d385d79 commit 49e63a0

File tree

2 files changed

+118
-0
lines changed

2 files changed

+118
-0
lines changed

src/si/compressibility_coefficient.rs

+117
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
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+
}

src/si/mod.rs

+1
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ system! {
6565
capacitance::Capacitance,
6666
catalytic_activity::CatalyticActivity,
6767
catalytic_activity_concentration::CatalyticActivityConcentration,
68+
compressibility_coefficient::CompressibilityCoefficient,
6869
curvature::Curvature,
6970
diffusion_coefficient::DiffusionCoefficient,
7071
dynamic_viscosity::DynamicViscosity,

0 commit comments

Comments
 (0)