uom/si/
magnetic_field_strength.rs

1//! Magnetic field strength (H field) (base unit ampere per meter, m⁻¹ · A).
2
3quantity! {
4    /// Magnetic field strength (H field) (base unit ampere per meter, m⁻¹ · A).
5    quantity: MagneticFieldStrength; "magnetic field strength (H field)";
6    /// Dimension of magnetic field strength (H field), L⁻¹I (base unit ampere per meter, m⁻¹ · A).
7    dimension: ISQ<
8        N1,     // length
9        Z0,     // mass
10        Z0,     // time
11        P1,     // electric current
12        Z0,     // thermodynamic temperature
13        Z0,     // amount of substance
14        Z0>;    // luminous intensity
15    units {
16        @ampere_per_meter: prefix!(none); "A/m", "ampere per meter", "amperes per meter";
17        @ampere_per_centimeter: prefix!(none) / prefix!(centi); "A/cm", "ampere per centimeter",
18            "amperes per centimeter";
19        @ampere_per_millimeter: prefix!(none) / prefix!(milli); "A/mm", "ampere per millimeter",
20            "amperes per millimeter";
21        @ampere_per_micrometer: prefix!(none) / prefix!(micro); "A/μm", "ampere per micrometer",
22            "amperes per micrometer";
23
24        /// 1 oersted = 1000/(4π) A/m
25        @oersted: 79.577_471_545_947_67; "Oe", "oersted", "oersteds";
26    }
27}
28
29#[cfg(test)]
30mod tests {
31    storage_types! {
32        use crate::num::One;
33        use crate::si::length as l;
34        use crate::si::electric_current as i;
35        use crate::si::magnetic_field_strength as h;
36        use crate::si::quantities::*;
37        use crate::tests::Test;
38
39        #[test]
40        fn check_dimension() {
41            let _: MagneticFieldStrength<V> = ElectricCurrent::new::<i::ampere>(V::one())
42                / Length::new::<l::meter>(V::one());
43        }
44
45        #[test]
46        fn check_units() {
47            test::<i::ampere, l::meter, h::ampere_per_meter>();
48            test::<i::ampere, l::centimeter, h::ampere_per_centimeter>();
49            test::<i::ampere, l::millimeter, h::ampere_per_millimeter>();
50            test::<i::ampere, l::micrometer, h::ampere_per_micrometer>();
51
52            fn test<I: i::Conversion<V>, L: l::Conversion<V>, H: h::Conversion<V>>() {
53                Test::assert_approx_eq(&MagneticFieldStrength::new::<H>(V::one()),
54                    &(ElectricCurrent::new::<I>(V::one()) / Length::new::<L>(V::one())));
55            }
56        }
57    }
58}