Skip to main content

uom/si/
areal_number_density.rs

1//! Areal number density (base unit 1 per square meter, m⁻²).
2
3quantity! {
4    /// Areal number density (base unit 1 per square meter, m⁻²).
5    quantity: ArealNumberDensity; "areal number density";
6    /// Dimension of areal number density, L⁻² (base unit 1 per square meter, m⁻²).
7    dimension: ISQ<
8        N2,     // length
9        Z0,     // mass
10        Z0,     // time
11        Z0,     // electric current
12        Z0,     // thermodynamic temperature
13        Z0,     // amount of substance
14        Z0>;    // luminous intensity
15    kind: dyn crate::si::marker::ConstituentConcentrationKind;
16    units {
17        @per_square_kilometer: prefix!(none) / prefix!(kilo) / prefix!(kilo); "km⁻²",
18            "per square kilometer", "per square kilometer";
19        @per_square_meter: prefix!(none); "m⁻²", "per square meter", "per square meter";
20        @per_square_decimeter: prefix!(none) / prefix!(deci) / prefix!(deci); "dm⁻²",
21            "per square decimeter", "per square decimeter";
22        @per_square_centimeter: prefix!(none) / prefix!(centi) / prefix!(centi); "cm⁻²",
23            "per square centimeter", "per square centimeter";
24        @per_square_millimeter: prefix!(none) / prefix!(milli) / prefix!(milli); "mm⁻²",
25            "per square millimeter", "per square millimeter";
26        @per_square_micrometer: prefix!(none) / prefix!(micro) / prefix!(micro); "µm⁻²",
27            "per square micrometer", "per square micrometer";
28
29        @per_acre: prefix!(none) / 4.046_873_E3; "ac⁻²", "per acre", "per acre";
30        @per_are: prefix!(none) / 1.0_E2; "a⁻²", "per are", "per are";
31        @per_barn: prefix!(none) / 1.0_E-28; "b⁻²", "per barn", "per barn";
32        @per_circular_mil: prefix!(none) / 5.067_075_E-10; "cmil⁻²", "per circular mil",
33            "per circular mil";
34        @per_hectare: prefix!(none) / 1.0_E4; "ha⁻²", "per hectare", "per hectare";
35        @per_square_foot: prefix!(none) / 9.290_304_E-2; "ft⁻²", "per square foot",
36            "per square foot";
37        @per_square_inch: prefix!(none) / 6.451_6_E-4; "in⁻²", "per square inch", "per square inch";
38        @per_square_mile: prefix!(none) / 2.589_988_110_336_E6; "mi⁻²", "per square mile",
39            "per square mile";
40        @per_square_yard: prefix!(none) / 8.361_273_6_E-1; "yd⁻²", "per square yard",
41            "per square yard";
42    }
43}
44
45#[cfg(test)]
46mod tests {
47    storage_types! {
48        use crate::num::One;
49        use crate::si::area as a;
50        use crate::si::areal_number_density as n;
51        use crate::si::quantities::*;
52        use crate::tests::Test;
53
54        #[test]
55        fn check_dimension() {
56            let _: ArealNumberDensity<V> = (V::one()
57                / Area::new::<a::square_meter>(V::one())).into();
58        }
59
60        #[test]
61        fn check_units() {
62            test::<n::per_square_kilometer, a::square_kilometer>();
63            test::<n::per_square_meter, a::square_meter>();
64            test::<n::per_square_decimeter, a::square_decimeter>();
65            test::<n::per_square_centimeter, a::square_centimeter>();
66            test::<n::per_square_millimeter, a::square_millimeter>();
67            test::<n::per_square_micrometer, a::square_micrometer>();
68
69            test::<n::per_acre, a::acre>();
70            test::<n::per_are, a::are>();
71            test::<n::per_barn, a::barn>();
72            test::<n::per_circular_mil, a::circular_mil>();
73            test::<n::per_hectare, a::hectare>();
74            test::<n::per_square_foot, a::square_foot>();
75            test::<n::per_square_inch, a::square_inch>();
76            test::<n::per_square_mile, a::square_mile>();
77            test::<n::per_square_yard, a::square_yard>();
78
79            fn test<N: n::Conversion<V>, A: a::Conversion<V>>() {
80                Test::assert_approx_eq(&ArealNumberDensity::new::<N>(V::one()),
81                    &(V::one() / Area::new::<A>(V::one())).into());
82            }
83        }
84    }
85}