uom/si/
volumetric_number_rate.rs1quantity! {
4 quantity: VolumetricNumberRate; "volumetric number rate";
6 dimension: ISQ<
8 N3, Z0, N1, Z0, Z0, Z0, Z0>; kind: dyn crate::si::marker::ConstituentConcentrationKind;
16 units {
17 @per_cubic_meter_second: prefix!(none); "m⁻³ · s⁻¹",
18 "per cubic meter second", "per cubic meter second";
19 @per_cubic_centimeter_second:
20 prefix!(none) / prefix!(centi) / prefix!(centi) / prefix!(centi); "cm⁻³ · s⁻¹",
21 "per cubic centimeter second", "per cubic centimeter second";
22 @per_cubic_millimeter_second:
23 prefix!(none) / prefix!(milli) / prefix!(milli) / prefix!(milli); "mm⁻³ · s⁻¹",
24 "per cubic millimeter second", "per cubic millimeter second";
25
26 @per_cubic_foot_second: prefix!(none) / 2.831_685_E-2; "ft⁻³ · s⁻¹",
27 "per cubic foot second", "per cubic foot second";
28 @per_cubic_inch_second: prefix!(none) / 1.638_706_E-5; "in⁻³ · s⁻¹",
29 "per cubic inch second", "per cubic inch second";
30 @per_cubic_mile_second: prefix!(none) / 4.168_182_E9; "mi⁻³ · s⁻¹",
31 "per cubic mile second", "per cubic mile second";
32 @per_cubic_yard_second: prefix!(none) / 7.645_549_E-1; "yd⁻³ · s⁻¹",
33 "per cubic yard second", "per cubic yard second";
34 @per_fluid_ounce_second: prefix!(none) / 2.957_353_E-5; "fl oz⁻¹ · s⁻¹",
35 "per fluid ounce second", "per fluid ounce second";
36 @per_fluid_ounce_imperial_second: prefix!(none) / 2.841_306_E-5; "fl oz⁻¹ (UK) · s⁻¹",
37 "per Imperial fluid ounce second", "per Imperial fluid ounce second";
38 @per_gallon_imperial_second: prefix!(none) / 4.546_09_E-3; "gal⁻¹ (UK) · s⁻¹",
39 "per Imperial gallon second", "per Imperial gallon second";
40 @per_gallon_second: prefix!(none) / 3.785_412_E-3; "gal⁻¹ · s⁻¹", "per gallon second",
41 "per gallon second";
42 @per_liter_second: prefix!(none) / prefix!(milli); "L⁻¹ · s⁻¹", "per liter second",
43 "per liter second";
44 @per_milliliter_second: prefix!(none) / prefix!(milli) / prefix!(milli); "mL⁻¹ · s⁻¹",
45 "per milliliter second", "per milliliter second";
46
47 @becquerel_per_cubic_meter: prefix!(none); "Bq/m³", "becquerel per cubic meter",
48 "becquerels per cubic meter";
49
50 @curie_per_cubic_meter: 3.7_E10; "Ci/m³", "curie per cubic meter", "curies per cubic meter";
51
52 @disintegrations_per_minute_per_cubic_meter: 1.0 / 6.0_E1; "dpm/m³",
53 "disintegration per minute per cubic meter",
54 "disintegrations per minute per cubic meter";
55 }
56}
57
58#[cfg(test)]
59mod tests {
60 storage_types! {
61 use crate::num::One;
62 use crate::si::volumetric_number_rate as vnr;
63 use crate::si::radioactivity as rad;
64 use crate::si::quantities::*;
65 use crate::si::time as t;
66 use crate::si::volume as vol;
67 use crate::tests::Test;
68
69 #[test]
70 fn check_dimension() {
71 let _: VolumetricNumberRate<V> = (V::one()
72 / Time::new::<t::second>(V::one())
73 / Volume::new::<vol::cubic_meter>(V::one())).into();
74 }
75
76 #[test]
77 fn check_units() {
78 test::<vnr::per_cubic_meter_second, vol::cubic_meter, t::second>();
79 test::<vnr::per_cubic_centimeter_second, vol::cubic_centimeter, t::second>();
80 test::<vnr::per_cubic_millimeter_second, vol::cubic_millimeter, t::second>();
81
82 test::<vnr::per_cubic_foot_second, vol::cubic_foot, t::second>();
83 test::<vnr::per_cubic_inch_second, vol::cubic_inch, t::second>();
84 test::<vnr::per_cubic_mile_second, vol::cubic_mile, t::second>();
85 test::<vnr::per_cubic_yard_second, vol::cubic_yard, t::second>();
86 test::<vnr::per_fluid_ounce_second, vol::fluid_ounce, t::second>();
87 test::<vnr::per_fluid_ounce_imperial_second, vol::fluid_ounce_imperial, t::second>();
88 test::<vnr::per_gallon_imperial_second, vol::gallon_imperial, t::second>();
89 test::<vnr::per_gallon_second, vol::gallon, t::second>();
90 test::<vnr::per_liter_second, vol::liter, t::second>();
91 test::<vnr::per_milliliter_second, vol::milliliter, t::second>();
92
93 fn test<VNR: vnr::Conversion<V>, VOL: vol::Conversion<V>, T: t::Conversion<V>>() {
94 Test::assert_approx_eq(&VolumetricNumberRate::new::<VNR>(V::one()),
95 &(V::one()
96 / Time::new::<T>(V::one())
97 / Volume::new::<VOL>(V::one())).into());
98 }
99 }
100
101 #[test]
102 fn check_units_volumetric_radioactivity() {
103 test::<rad::becquerel, vol::cubic_meter, vnr::becquerel_per_cubic_meter>();
104 test::<rad::curie, vol::cubic_meter, vnr::curie_per_cubic_meter>();
105 test::<rad::disintegrations_per_minute, vol::cubic_meter,
106 vnr::disintegrations_per_minute_per_cubic_meter>();
107
108 fn test<RAD: rad::Conversion<V>, VOL: vol::Conversion<V>, VNR: vnr::Conversion<V>>() {
109 Test::assert_approx_eq(&VolumetricNumberRate::new::<VNR>(V::one()),
110 &(Radioactivity::new::<RAD>(V::one()) / Volume::new::<VOL>(V::one())).into());
111 }
112 }
113 }
114}