uom/si/
acceleration.rs

1//! Acceleration (base unit meter per second squared, m · s⁻²).
2
3quantity! {
4    /// Acceleration (base unit meter per second squared, m · s⁻²).
5    quantity: Acceleration; "acceleration";
6    /// Dimension of acceleration, LT⁻² (base unit meter per second squared, m · s⁻²).
7    dimension: ISQ<
8        P1,     // length
9        Z0,     // mass
10        N2,     // time
11        Z0,     // electric current
12        Z0,     // thermodynamic temperature
13        Z0,     // amount of substance
14        Z0>;    // luminous intensity
15    units {
16        @yottameter_per_second_squared: prefix!(yotta); "Ym/s²", "yottameter per second squared",
17            "yottameters per second squared";
18        @zettameter_per_second_squared: prefix!(zetta); "Zm/s²", "zettameter per second squared",
19            "zettameters per second squared";
20        @exameter_per_second_squared: prefix!(exa); "Em/s²", "exameter per second squared",
21            "exameters per second squared";
22        @petameter_per_second_squared: prefix!(peta); "Pm/s²", "petameter per second squared",
23            "petameters per second squared";
24        @terameter_per_second_squared: prefix!(tera); "Tm/s²", "terameter per second squared",
25            "terameters per second squared";
26        @gigameter_per_second_squared: prefix!(giga); "Gm/s²", "gigameter per second squared",
27            "gigameters per second squared";
28        @megameter_per_second_squared: prefix!(mega); "Mm/s²", "megameter per second squared",
29            "megameters per second squared";
30        @kilometer_per_second_squared: prefix!(kilo); "km/s²", "kilometer per second squared",
31            "kilometers per second squared";
32        @hectometer_per_second_squared: prefix!(hecto); "hm/s²", "hectometer per second squared",
33            "hectometers per second squared";
34        @decameter_per_second_squared: prefix!(deca); "dam/s²", "decameter per second squared",
35            "decameters per second squared";
36        @meter_per_second_squared: prefix!(none); "m/s²", "meter per second squared",
37            "meters per second squared";
38        @decimeter_per_second_squared: prefix!(deci); "dm/s²", "decimeter per second squared",
39            "decimeters per second squared";
40        @centimeter_per_second_squared: prefix!(centi); "cm/s²", "centimeter per second squared",
41            "centimeters per second squared";
42        @millimeter_per_second_squared: prefix!(milli); "mm/s²", "millimeter per second squared",
43            "millimeters per second squared";
44        @micrometer_per_second_squared: prefix!(micro); "µm/s²", "micrometer per second squared",
45            "micrometers per second squared";
46        @nanometer_per_second_squared: prefix!(nano); "nm/s²", "nanometer per second squared",
47            "nanometers per second squared";
48        @picometer_per_second_squared: prefix!(pico); "pm/s²", "picometer per second squared",
49            "picometers per second squared";
50        @femtometer_per_second_squared: prefix!(femto); "fm/s²", "femtometer per second squared",
51            "femtometers per second squared";
52        @attometer_per_second_squared: prefix!(atto); "am/s²", "attometer per second squared",
53            "attometers per second squared";
54        @zeptometer_per_second_squared: prefix!(zepto); "zm/s²", "zeptometer per second squared",
55            "zeptometers per second squared";
56        @yoctometer_per_second_squared: prefix!(yocto); "ym/s²", "yoctometer per second squared",
57            "yoctometers per second squared";
58
59        @foot_per_second_squared: 3.048_E-1; "ft/s²", "foot per second squared",
60            "feet per second squared";
61        @galileo: 1.0_E-2; "Gal", "galileo", "galileos";
62        @inch_per_second_squared: 2.54_E-2; "in/s²", "inch per second squared",
63            "inches per second squared";
64        @millimeter_per_minute_squared: 2.777_777_777_777_777_8_E-7; "mm/min²",
65            "millimeter per minute squared", "millimeters per minute squared";
66        @standard_gravity: 9.806_65_E0; "g₀", "standard acceleration of gravity",
67            "standard accelerations of gravity";
68    }
69}
70
71#[cfg(test)]
72mod tests {
73    storage_types! {
74        use crate::si::acceleration as a;
75        use crate::si::length as l;
76        use crate::si::quantities::*;
77        use crate::si::time as t;
78        use crate::tests::Test;
79        use crate::num::One;
80
81        #[test]
82        fn check_dimension() {
83            let _: Acceleration<V> = Length::new::<l::meter>(V::one()) /
84                (Time::new::<t::second>(V::one()) * Time::new::<t::second>(V::one()));
85        }
86
87        #[test]
88        fn check_units() {
89            test::<l::yottameter, t::second, a::yottameter_per_second_squared>();
90            test::<l::zettameter, t::second, a::zettameter_per_second_squared>();
91            test::<l::exameter, t::second, a::exameter_per_second_squared>();
92            test::<l::petameter, t::second, a::petameter_per_second_squared>();
93            test::<l::terameter, t::second, a::terameter_per_second_squared>();
94            test::<l::gigameter, t::second, a::gigameter_per_second_squared>();
95            test::<l::megameter, t::second, a::megameter_per_second_squared>();
96            test::<l::kilometer, t::second, a::kilometer_per_second_squared>();
97            test::<l::hectometer, t::second, a::hectometer_per_second_squared>();
98            test::<l::decameter, t::second, a::decameter_per_second_squared>();
99            test::<l::meter, t::second, a::meter_per_second_squared>();
100            test::<l::decimeter, t::second, a::decimeter_per_second_squared>();
101            test::<l::centimeter, t::second, a::centimeter_per_second_squared>();
102            test::<l::millimeter, t::second, a::millimeter_per_second_squared>();
103            test::<l::micrometer, t::second, a::micrometer_per_second_squared>();
104            test::<l::nanometer, t::second, a::nanometer_per_second_squared>();
105            test::<l::picometer, t::second, a::picometer_per_second_squared>();
106            test::<l::femtometer, t::second, a::femtometer_per_second_squared>();
107            test::<l::attometer, t::second, a::attometer_per_second_squared>();
108            test::<l::zeptometer, t::second, a::zeptometer_per_second_squared>();
109            test::<l::yoctometer, t::second, a::yoctometer_per_second_squared>();
110
111            test::<l::foot, t::second, a::foot_per_second_squared>();
112            test::<l::centimeter, t::second, a::galileo>();
113            test::<l::inch, t::second, a::inch_per_second_squared>();
114            test::<l::millimeter, t::minute, a::millimeter_per_minute_squared>();
115
116            fn test<L: l::Conversion<V>, T: t::Conversion<V>, A: a::Conversion<V>>() {
117                if A::is_valid() {
118                    Test::assert_eq(&Acceleration::new::<A>(V::one()),
119                        &(Length::new::<L>(V::one()) /
120                            (Time::new::<T>(V::one()) * Time::new::<T>(V::one()))));
121                }
122            }
123        }
124    }
125}