uom/si/
electrical_resistance.rs

1//! Electrical resistance (base unit ohm, m² · kg · s⁻³ · A⁻²).
2
3quantity! {
4    /// Electrical resistance (base unit ohm, m² · kg · s⁻³ · A⁻²).
5    quantity: ElectricalResistance; "electrical resistance";
6    /// Dimension of electrical resistance, L²MT⁻³I⁻² (base unit ohm, m² · kg · s⁻³ · A⁻²).
7    dimension: ISQ<
8        P2,     // 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: prefix!(yotta); "YΩ", "yottaohm", "yottaohms";
17        @zettaohm: prefix!(zetta); "ZΩ", "zettaohm", "zettaohms";
18        @exaohm: prefix!(exa); "EΩ", "exaohm", "exaohms";
19        @petaohm: prefix!(peta); "PΩ", "petaohm", "petaohms";
20        @teraohm: prefix!(tera); "TΩ", "teraohm", "teraohms";
21        @gigaohm: prefix!(giga); "GΩ", "gigaohm", "gigaohms";
22        @megaohm: prefix!(mega); "MΩ", "megaohm", "megaohms";
23        @kiloohm: prefix!(kilo); "kΩ", "kiloohm", "kiloohms";
24        @hectoohm: prefix!(hecto); "hΩ", "hectoohm", "hectoohms";
25        @decaohm: prefix!(deca); "daΩ", "decaohm", "decaohms";
26        /// Derived unit of electrical resistance.
27        @ohm: prefix!(none); "Ω", "ohm", "ohms";
28        @deciohm: prefix!(deci); "dΩ", "deciohm", "deciohms";
29        @centiohm: prefix!(centi); "cΩ", "centiohm", "centiohms";
30        @milliohm: prefix!(milli); "mΩ", "milliohm", "milliohms";
31        @microohm: prefix!(micro); "µΩ", "microohm", "microohms";
32        @nanoohm: prefix!(nano); "nΩ", "nanoohm", "nanoohms";
33        @picoohm: prefix!(pico); "pΩ", "picoohm", "picoohms";
34        @femtoohm: prefix!(femto); "fΩ", "femtoohm", "femtoohms";
35        @attoohm: prefix!(atto); "aΩ", "attoohm", "attoohms";
36        @zeptoohm: prefix!(zepto); "zΩ", "zeptoohm", "zeptoohms";
37        @yoctoohm: prefix!(yocto); "yΩ", "yoctoohm", "yoctoohms";
38
39        @abohm: 1.0_E-9; "abΩ", "abohm", "abohms";
40        @statohm: 8.987_552_917_115_481_E11; "statΩ", "statohm", "statohms";
41    }
42}
43
44#[cfg(test)]
45mod tests {
46    storage_types! {
47        use crate::num::One;
48        use crate::si::electric_current as i;
49        use crate::si::electric_potential as v;
50        use crate::si::electrical_resistance as r;
51        use crate::si::quantities::*;
52        use crate::tests::Test;
53
54        #[test]
55        fn check_dimension() {
56            let _: ElectricalResistance<V> = ElectricPotential::new::<v::volt>(V::one())
57                / ElectricCurrent::new::<i::ampere>(V::one());
58        }
59
60        #[test]
61        fn check_units() {
62            test::<v::yottavolt, i::ampere, r::yottaohm>();
63            test::<v::zettavolt, i::ampere, r::zettaohm>();
64            test::<v::exavolt, i::ampere, r::exaohm>();
65            test::<v::petavolt, i::ampere, r::petaohm>();
66            test::<v::teravolt, i::ampere, r::teraohm>();
67            test::<v::gigavolt, i::ampere, r::gigaohm>();
68            test::<v::megavolt, i::ampere, r::megaohm>();
69            test::<v::kilovolt, i::ampere, r::kiloohm>();
70            test::<v::hectovolt, i::ampere, r::hectoohm>();
71            test::<v::decavolt, i::ampere, r::decaohm>();
72            test::<v::volt, i::ampere, r::ohm>();
73            test::<v::decivolt, i::ampere, r::deciohm>();
74            test::<v::centivolt, i::ampere, r::centiohm>();
75            test::<v::millivolt, i::ampere, r::milliohm>();
76            test::<v::microvolt, i::ampere, r::microohm>();
77            test::<v::nanovolt, i::ampere, r::nanoohm>();
78            test::<v::picovolt, i::ampere, r::picoohm>();
79            test::<v::femtovolt, i::ampere, r::femtoohm>();
80            test::<v::attovolt, i::ampere, r::attoohm>();
81            test::<v::zeptovolt, i::ampere, r::zeptoohm>();
82            test::<v::yoctovolt, i::ampere, r::yoctoohm>();
83
84            test::<v::abvolt, i::abampere, r::abohm>();
85            test::<v::statvolt, i::statampere, r::statohm>();
86
87            fn test<U: v::Conversion<V>, I: i::Conversion<V>, R: r::Conversion<V>>() {
88                Test::assert_approx_eq(&ElectricalResistance::new::<R>(V::one()),
89                    &(ElectricPotential::new::<U>(V::one())
90                        / ElectricCurrent::new::<I>(V::one())));
91            }
92        }
93    }
94}