uom/si/
thermal_resistance.rs

1//! Thermal resistance (base unit kelvin per watt, kg⁻¹ · m⁻² · s³ · K).
2
3quantity! {
4    /// Thermal resistance (base unit kelvin per watt, kg⁻¹ · m⁻² · s³ · K).
5    quantity: ThermalResistance; "thermal resistance";
6    /// Dimension of thermal resistance, L⁻²M⁻¹T³Th (base unit kelvin per watt,
7    /// kg⁻¹ · m⁻² · s³ · K).
8    dimension: ISQ<
9        N2,     // length
10        N1,     // mass
11        P3,     // time
12        Z0,     // electric current
13        P1,     // thermodynamic temperature
14        Z0,     // ammount of substance
15        Z0>;    // luminous intensity
16    units {
17        @kelvin_per_yottawatt: prefix!(none) / prefix!(yotta); "K/YW", "kelvin per yottawatt",
18            "kelvins per yottawatt";
19        @kelvin_per_zettawatt: prefix!(none) / prefix!(zetta); "K/ZW", "kelvin per zettawatt",
20            "kelvins per zettawatt";
21        @kelvin_per_exawatt: prefix!(none) / prefix!(exa); "K/EW", "kelvin per exawatt",
22            "kelvins per exawatt";
23        @kelvin_per_petawatt: prefix!(none) / prefix!(peta); "K/PW", "kelvin per petawatt",
24            "kelvins per petawatt";
25        @kelvin_per_terawatt: prefix!(none) / prefix!(tera); "K/TW", "kelvin per terawatt",
26            "kelvins per terawatt";
27        @kelvin_per_gigawatt: prefix!(none) / prefix!(giga); "K/GW", "kelvin per gigawatt",
28            "kelvins per gigawatt";
29        @kelvin_per_megawatt: prefix!(none) / prefix!(mega); "K/MW", "kelvin per megawatt",
30            "kelvins per megawatt";
31        @kelvin_per_kilowatt: prefix!(none) / prefix!(kilo); "K/kw", "kelvin per kilowatt",
32            "kelvins per kilowatt";
33        @kelvin_per_hectowatt: prefix!(none) / prefix!(hecto); "K/hW", "kelvin per hectowatt",
34            "kelvins per hectowatt";
35        @kelvin_per_decawatt: prefix!(none) / prefix!(deca); "K/daW", "kelvin per decawatt",
36            "kelvins per decawatt";
37        @kelvin_per_watt: prefix!(none) / prefix!(none); "K/W", "kelvin per watt",
38            "kelvins per watt";
39        @kelvin_per_deciwatt: prefix!(none) / prefix!(deci); "K/dW", "kelvin per deciwatt",
40            "kelvins per deciwatt";
41        @kelvin_per_centiwatt: prefix!(none) / prefix!(centi); "K/cW", "kelvin per centiwatt",
42            "kelvins per centiwatt";
43        @kelvin_per_milliwatt: prefix!(none) / prefix!(milli); "K/mW", "kelvin per milliwatt",
44            "kelvins per milliwatt";
45        @kelvin_per_microwatt: prefix!(none) / prefix!(micro); "K/µW", "kelvin per microwatt",
46            "kelvins per microwatt";
47        @kelvin_per_nanowatt: prefix!(none) / prefix!(nano); "K/nW", "kelvin per nanowatt",
48            "kelvins per nanowatt";
49        @kelvin_per_picowatt: prefix!(none) / prefix!(pico); "K/pW", "kelvin per picowatt",
50            "kelvins per picowatt";
51        @kelvin_per_femtowatt: prefix!(none) / prefix!(femto); "K/fW", "kelvin per femtowatt",
52            "kelvins per femtowatt";
53        @kelvin_per_attowatt: prefix!(none) / prefix!(atto); "K/aW", "kelvin per attowatt",
54            "kelvins per attowatt";
55        @kelvin_per_zeptowatt: prefix!(none) / prefix!(zepto); "K/zW", "kelvin per zeptowatt",
56            "kelvins per zeptowatt";
57        @kelvin_per_yoctowatt: prefix!(none) / prefix!(yocto); "K/yW", "kelvin per yoctowatt",
58            "kelvins per yoctowatt";
59    }
60}
61
62#[cfg(test)]
63mod tests {
64    storage_types! {
65        use crate::num::One;
66        use crate::si::power as p;
67        use crate::si::quantities::*;
68        use crate::si::temperature_interval as ti;
69        use crate::si::thermal_resistance as tr;
70        use crate::tests::Test;
71
72        #[test]
73        fn check_dimension() {
74            let _: ThermalResistance<V> = TemperatureInterval::new::<ti::kelvin>(V::one())
75                / Power::new::<p::watt>(V::one());
76        }
77
78        #[test]
79        fn check_power_ti_units() {
80            test::<ti::kelvin, p::yottawatt, tr::kelvin_per_yottawatt>();
81            test::<ti::kelvin, p::zettawatt, tr::kelvin_per_zettawatt>();
82            test::<ti::kelvin, p::exawatt, tr::kelvin_per_exawatt>();
83            test::<ti::kelvin, p::petawatt, tr::kelvin_per_petawatt>();
84            test::<ti::kelvin, p::terawatt, tr::kelvin_per_terawatt>();
85            test::<ti::kelvin, p::gigawatt, tr::kelvin_per_gigawatt>();
86            test::<ti::kelvin, p::megawatt, tr::kelvin_per_megawatt>();
87            test::<ti::kelvin, p::kilowatt, tr::kelvin_per_kilowatt>();
88            test::<ti::kelvin, p::hectowatt, tr::kelvin_per_hectowatt>();
89            test::<ti::kelvin, p::decawatt, tr::kelvin_per_decawatt>();
90            test::<ti::kelvin, p::watt, tr::kelvin_per_watt>();
91            test::<ti::kelvin, p::deciwatt, tr::kelvin_per_deciwatt>();
92            test::<ti::kelvin, p::centiwatt, tr::kelvin_per_centiwatt>();
93            test::<ti::kelvin, p::milliwatt, tr::kelvin_per_milliwatt>();
94            test::<ti::kelvin, p::microwatt, tr::kelvin_per_microwatt>();
95            test::<ti::kelvin, p::nanowatt, tr::kelvin_per_nanowatt>();
96            test::<ti::kelvin, p::picowatt, tr::kelvin_per_picowatt>();
97            test::<ti::kelvin, p::femtowatt, tr::kelvin_per_femtowatt>();
98            test::<ti::kelvin, p::attowatt, tr::kelvin_per_attowatt>();
99            test::<ti::kelvin, p::zeptowatt, tr::kelvin_per_zeptowatt>();
100            test::<ti::kelvin, p::yoctowatt, tr::kelvin_per_yoctowatt>();
101
102            fn test<
103                TI: ti::Conversion<V>,
104                P: p::Conversion<V>,
105                TR: tr::Conversion<V>>()
106            {
107                Test::assert_approx_eq(&ThermalResistance::new::<TR>(V::one()),
108                    &(TemperatureInterval::new::<TI>(V::one())
109                        / Power::new::<P>(V::one())));
110            }
111        }
112    }
113}