Skip to content

Commit c0a9040

Browse files
Add molality quantity
1 parent 7c4b27b commit c0a9040

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed

src/si/mod.rs

+1
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ system! {
102102
mass_density::MassDensity,
103103
mass_flux::MassFlux,
104104
mass_rate::MassRate,
105+
molality::Molality,
105106
molar_concentration::MolarConcentration,
106107
molar_energy::MolarEnergy,
107108
molar_flux::MolarFlux,

src/si/molality.rs

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
//! Molality (base unit mole per kilogram, kg⁻¹ · mol).
2+
3+
quantity! {
4+
/// Molality (base unit mole per kilogram, kg⁻¹ · mol).
5+
quantity: Molality; "molality";
6+
/// Dimension of molality, M⁻¹N (base unit mole per kilogram, kg⁻¹ · mol).
7+
dimension: ISQ<
8+
Z0, // length
9+
N1, // mass
10+
Z0, // time
11+
Z0, // electric current
12+
Z0, // thermodynamic temperature
13+
P1, // amount of substance
14+
Z0>; // luminous intensity
15+
kind: dyn (crate::si::marker::ConstituentConcentrationKind);
16+
17+
units {
18+
@mole_per_kilogram: prefix!(none);
19+
"mol/kg", "mole per kilogram", "moles per kilogram";
20+
}
21+
}
22+
23+
#[cfg(test)]
24+
mod tests {
25+
storage_types! {
26+
use crate::num::One;
27+
use crate::si::amount_of_substance as aos;
28+
use crate::si::mass as m;
29+
use crate::si::molality as mol;
30+
use crate::si::quantities::*;
31+
use crate::tests::Test;
32+
33+
#[test]
34+
fn check_dimension() {
35+
let _: Molality<V> = (AmountOfSubstance::new::<aos::mole>(V::one())
36+
/ Mass::new::<m::kilogram>(V::one())).into();
37+
}
38+
39+
#[test]
40+
fn check_units() {
41+
42+
test::<aos::mole, m::kilogram, mol::mole_per_kilogram>();
43+
44+
fn test<AOS: aos::Conversion<V>, M: m::Conversion<V>, MOL: mol::Conversion<V>>() {
45+
Test::assert_approx_eq(&Molality::new::<MOL>(V::one()),
46+
&(AmountOfSubstance::new::<AOS>(V::one()) /
47+
Mass::new::<M>(V::one())).into());
48+
}
49+
}
50+
}
51+
}

0 commit comments

Comments
 (0)