uom/si/
electrical_conductivity.rs

1//! Electrical conductivity (base unit siemens per meter, m⁻³ · kg⁻¹ · s³ · A²).
2
3quantity! {
4    /// Electrical conductivity (base unit siemens per meter, m⁻³ · kg⁻¹ · s³ · A²).
5    quantity: ElectricalConductivity; "electrical conductivity";
6    /// Dimension of electrical conductivity, L⁻³M⁻¹T³I² (base unit siemens per meter,
7    /// m⁻³ · kg⁻¹ · s³ · A²).
8    dimension: ISQ<
9        N3,     // length
10        N1,     // mass
11        P3,     // time
12        P2,     // electric current
13        Z0,     // thermodynamic temperature
14        Z0,     // amount of substance
15        Z0>;    // luminous intensity
16    units {
17        @siemens_per_meter: prefix!(none); "S/m", "siemens per meter", "siemens per meter";
18        @siemens_per_centimeter: prefix!(none) / prefix!(centi); "S/cm", "siemens per centimeter",
19            "siemens per centimeter";
20    }
21}
22
23#[cfg(test)]
24mod tests {
25    storage_types! {
26        use crate::num::One;
27        use crate::si::electrical_conductance as g;
28        use crate::si::length as l;
29        use crate::si::electrical_conductivity as ec;
30        use crate::si::quantities::*;
31        use crate::tests::Test;
32
33        #[test]
34        fn check_dimension() {
35            let _: ElectricalConductivity<V> = ElectricalConductance::new::<g::siemens>(V::one())
36                / Length::new::<l::meter>(V::one());
37        }
38
39        #[test]
40        fn check_units() {
41            test::<ec::siemens_per_meter, g::siemens, l::meter>();
42            test::<ec::siemens_per_centimeter, g::siemens, l::centimeter>();
43
44            fn test<EC: ec::Conversion<V>, G: g::Conversion<V>, L: l::Conversion<V>>() {
45                Test::assert_approx_eq(&ElectricalConductivity::new::<EC>(V::one()),
46                    &(ElectricalConductance::new::<G>(V::one()) / Length::new::<L>(V::one())));
47            }
48        }
49    }
50}