uom/si/
electrical_resistivity.rs

1//! Electrical resistivity (base unit ohm meter, m³ · kg · s⁻³ · A⁻²).
2
3quantity! {
4    /// Electrical resistivity (base unit ohm meter, m³ · kg · s⁻³ · A⁻²).
5    quantity: ElectricalResistivity; "electrical resistivity";
6    /// Dimension of electrical resistivity, L³MT⁻³I⁻² (base unit ohm meter, m³ · kg · s⁻³ · A⁻²).
7    dimension: ISQ<
8        P3,     // length
9        P1,     // mass
10        N3,     // time
11        N2,     // electric current
12        Z0,     // thermodynamic temperature
13        Z0,     // amount of substance
14        Z0>;    // luminous intensity
15    units {
16        @yottaohm_meter: prefix!(yotta); "YΩ · m", "yottaohm meter", "yottaohm meters";
17        @zettaohm_meter: prefix!(zetta); "ZΩ · m", "zettaohm meter", "zettaohm meters";
18        @exaohm_meter: prefix!(exa); "EΩ · m", "exaohm meter", "exaohm meters";
19        @petaohm_meter: prefix!(peta); "PΩ · m", "petaohm meter", "petaohm meters";
20        @teraohm_meter: prefix!(tera); "TΩ · m", "teraohm meter", "teraohm meters";
21        @gigaohm_meter: prefix!(giga); "GΩ · m", "gigaohm meter", "gigaohm meters";
22        @megaohm_meter: prefix!(mega); "MΩ · m", "megaohm meter", "megaohm meters";
23        @kiloohm_meter: prefix!(kilo); "kΩ · m", "kiloohm meter", "kiloohm meters";
24        @hectoohm_meter: prefix!(hecto); "hΩ · m", "hectoohm meter", "hectoohm meters";
25        @decaohm_meter: prefix!(deca); "daΩ · m", "decaohm meter", "decaohm meters";
26        /// Derived unit of electrical resistance.
27        @ohm_meter: prefix!(none); "Ω · m", "ohm meter", "ohm meters";
28        @deciohm_meter: prefix!(deci); "dΩ · m", "deciohm meter", "deciohm meters";
29        @centiohm_meter: prefix!(centi); "cΩ · m", "centiohm meter", "centiohm meters";
30        @milliohm_meter: prefix!(milli); "mΩ · m", "milliohm meter", "milliohm meters";
31        @microohm_meter: prefix!(micro); "µΩ · m", "microohm meter", "microohm meters";
32        @nanoohm_meter: prefix!(nano); "nΩ · m", "nanoohm meter", "nanoohm meters";
33        @picoohm_meter: prefix!(pico); "pΩ · m", "picoohm meter", "picoohm meters";
34        @femtoohm_meter: prefix!(femto); "fΩ · m", "femtoohm meter", "femtoohm meters";
35        @attoohm_meter: prefix!(atto); "aΩ · m", "attoohm meter", "attoohm meters";
36        @zeptoohm_meter: prefix!(zepto); "zΩ · m", "zeptoohm meter", "zeptoohm meters";
37        @yoctoohm_meter: prefix!(yocto); "yΩ · m", "yoctoohm meter", "yoctoohm meters";
38
39        @abohm_meter: 1.0_E-9; "abΩ · m", "abohm meter", "abohm meters";
40        @statohm_meter: 8.987_552_917_115_481_E11; "statΩ · m", "statohm meter", "statohm meters";
41
42        @ohm_centimeter: prefix!(none) * prefix!(centi); "Ω · cm", "ohm centimeter",
43            "ohm centimeters";
44        @abohm_centimeter: 1.0_E-9 * prefix!(centi); "abΩ · cm", "abohm centimeter",
45            "abohm centimeters";
46        @statohm_centimeter: 8.987_552_917_115_481_E11 * prefix!(centi); "statΩ · cm",
47            "statohm centimeter", "statohm centimeters";
48
49        @ohm_inch: 2.54_E-2; "Ω · in", "ohm inch", "ohm inches";
50        @ohm_foot: 3.048_E-1; "Ω · ft", "ohm foot", "ohm feet";
51        @ohm_yard: 9.144_E-1; "Ω · yd", "ohm yard", "ohm yards";
52
53        @ohm_square_millimeter_per_meter: prefix!(milli) * prefix!(milli); "Ω · mm²/m",
54            "ohm square millimeter per meter", "ohm square millimeters per meter";
55    }
56}
57
58#[cfg(test)]
59mod tests {
60    storage_types! {
61        use crate::num::One;
62        use crate::si::electrical_resistance as r;
63        use crate::si::electrical_resistivity as er;
64        use crate::si::length as l;
65        use crate::si::quantities::*;
66        use crate::tests::Test;
67
68        #[test]
69        fn check_dimension() {
70            let _: ElectricalResistivity<V> = ElectricalResistance::new::<r::ohm>(V::one())
71                * Length::new::<l::meter>(V::one());
72        }
73
74        #[test]
75        fn check_units() {
76            test::<er::yottaohm_meter, r::yottaohm, l::meter>();
77            test::<er::zettaohm_meter, r::zettaohm, l::meter>();
78            test::<er::petaohm_meter, r::petaohm, l::meter>();
79            test::<er::teraohm_meter, r::teraohm, l::meter>();
80            test::<er::gigaohm_meter, r::gigaohm, l::meter>();
81            test::<er::megaohm_meter, r::megaohm, l::meter>();
82            test::<er::kiloohm_meter, r::kiloohm, l::meter>();
83            test::<er::hectoohm_meter, r::hectoohm, l::meter>();
84            test::<er::decaohm_meter, r::decaohm, l::meter>();
85            test::<er::ohm_meter, r::ohm, l::meter>();
86            test::<er::deciohm_meter, r::deciohm, l::meter>();
87            test::<er::centiohm_meter, r::centiohm, l::meter>();
88            test::<er::milliohm_meter, r::milliohm, l::meter>();
89            test::<er::microohm_meter, r::microohm, l::meter>();
90            test::<er::nanoohm_meter, r::nanoohm, l::meter>();
91            test::<er::picoohm_meter, r::picoohm, l::meter>();
92            test::<er::femtoohm_meter, r::femtoohm, l::meter>();
93            test::<er::attoohm_meter, r::attoohm, l::meter>();
94            test::<er::zeptoohm_meter, r::zeptoohm, l::meter>();
95            test::<er::yoctoohm_meter, r::yoctoohm, l::meter>();
96
97            test::<er::abohm_meter, r::abohm, l::meter>();
98            test::<er::statohm_meter, r::statohm, l::meter>();
99
100            test::<er::ohm_centimeter, r::ohm, l::centimeter>();
101            test::<er::abohm_centimeter, r::abohm, l::centimeter>();
102            test::<er::statohm_centimeter, r::statohm, l::centimeter>();
103
104            test::<er::ohm_inch, r::ohm, l::inch>();
105            test::<er::ohm_foot, r::ohm, l::foot>();
106            test::<er::ohm_yard, r::ohm, l::yard>();
107
108            test::<er::ohm_square_millimeter_per_meter, r::microohm, l::meter>();
109
110            fn test<ER: er::Conversion<V>, R: r::Conversion<V>, L: l::Conversion<V>>() {
111                Test::assert_approx_eq(&ElectricalResistivity::new::<ER>(V::one()),
112                    &(ElectricalResistance::new::<R>(V::one())
113                        * Length::new::<L>(V::one())));
114            }
115        }
116    }
117}