1quantity! {
4 quantity: VolumeRate; "volume rate";
6 dimension: ISQ<
8 P3, Z0, N1, Z0, Z0, Z0, Z0>; units {
16 @cubic_yottameter_per_second: prefix!(yotta) * prefix!(yotta) * prefix!(yotta);
17 "Ym³/s", "cubic yottameter per second", "cubic yottameters per second";
18 @cubic_zettameter_per_second: prefix!(zetta) * prefix!(zetta) * prefix!(zetta);
19 "Zm³/s", "cubic zettameter per second", "cubic zettameters per second";
20 @cubic_exameter_per_second: prefix!(exa) * prefix!(exa) * prefix!(exa);
21 "Em³/s", "cubic exameter per second", "cubic exameters per second";
22 @cubic_petameter_per_second: prefix!(peta) * prefix!(peta) * prefix!(peta);
23 "Pm³/s", "cubic petameter per second", "cubic petameters per second";
24 @cubic_terameter_per_second: prefix!(tera) * prefix!(tera) * prefix!(tera);
25 "Tm³/s", "cubic terameter per second", "cubic terameters per second";
26 @cubic_gigameter_per_second: prefix!(giga) * prefix!(giga) * prefix!(giga);
27 "Gm³/s", "cubic gigameter per second", "cubic gigameters per second";
28 @cubic_megameter_per_second: prefix!(mega) * prefix!(mega) * prefix!(mega);
29 "Mm³/s", "cubic megameter per second", "cubic megameters per second";
30 @cubic_kilometer_per_second: prefix!(kilo) * prefix!(kilo) * prefix!(kilo);
31 "km³/s", "cubic kilometer per second", "cubic kilometers per second";
32 @cubic_hectometer_per_second: prefix!(hecto) * prefix!(hecto) * prefix!(hecto);
33 "hm³/s", "cubic hectometer per second", "cubic hectometers per second";
34 @cubic_decameter_per_second: prefix!(deca) * prefix!(deca) * prefix!(deca);
35 "dam³/s", "cubic decameter per second", "cubic decameters per second";
36 @cubic_meter_per_second: prefix!(none); "m³/s", "cubic meter per second",
37 "cubic meters per second";
38 @cubic_meter_per_minute: 1.0_E0 / 6.0_E1; "m³/min", "cubic meter per minute",
39 "cubic meters per minute";
40 @cubic_meter_per_hour: 1.0_E0 / 3.6_E3; "m³/h", "cubic meter per hour",
41 "cubic meters per hour";
42 @cubic_decimeter_per_second: prefix!(deci) * prefix!(deci) * prefix!(deci);
43 "dm³/s", "cubic decimeter per second", "cubic decimeters per second";
44 @cubic_centimeter_per_second: prefix!(centi) * prefix!(centi) * prefix!(centi);
45 "cm³/s", "cubic centimeter per second", "cubic centimeters per second";
46 @cubic_millimeter_per_second: prefix!(milli) * prefix!(milli) * prefix!(milli);
47 "mm³/s", "cubic millimeter per second", "cubic millimeters per second";
48 @cubic_micrometer_per_second: prefix!(micro) * prefix!(micro) * prefix!(micro);
49 "µm³/s", "cubic micrometer per second", "cubic micrometers per second";
50 @cubic_nanometer_per_second: prefix!(nano) * prefix!(nano) * prefix!(nano);
51 "nm³/s", "cubic nanometer per second", "cubic nanometers per second";
52 @cubic_picometer_per_second: prefix!(pico) * prefix!(pico) * prefix!(pico);
53 "pm³/s", "cubic picometer per second", "cubic picometers per second";
54 @cubic_femtometer_per_second: prefix!(femto) * prefix!(femto) * prefix!(femto);
55 "fm³/s", "cubic femtometer per second", "cubic femtometers per second";
56 @cubic_attometer_per_second: prefix!(atto) * prefix!(atto) * prefix!(atto);
57 "am³/s", "cubic attometer per second", "cubic attometers per second";
58 @cubic_zeptometer_per_second: prefix!(zepto) * prefix!(zepto) * prefix!(zepto);
59 "zm³/s", "cubic zeptometer per second", "cubic zeptometers per second";
60 @cubic_yoctometer_per_second: prefix!(yocto) * prefix!(yocto) * prefix!(yocto);
61 "ym³/s", "cubic yoctometer per second", "cubic yoctometers per second";
62
63 @yottaliter_per_second: prefix!(milli) * prefix!(yotta); "YL/s", "yottaliter per second",
64 "yottaliters per second";
65 @zettaliter_per_second: prefix!(milli) * prefix!(zetta); "ZL/s", "zettaliter per second",
66 "zettaliters per second";
67 @exaliter_per_second: prefix!(milli) * prefix!(exa); "EL/s", "exaliter per second",
68 "exaliters per second";
69 @petaliter_per_second: prefix!(milli) * prefix!(peta); "PL/s", "petaliter per second",
70 "petaliters per second";
71 @teraliter_per_second: prefix!(milli) * prefix!(tera); "TL/s", "teraliter per second",
72 "teraliters per second";
73 @gigaliter_per_second: prefix!(milli) * prefix!(giga); "GL/s", "gigaliter per second",
74 "gigaliters per second";
75 @megaliter_per_second: prefix!(milli) * prefix!(mega); "ML/s", "megaliter per second",
76 "megaliters per second";
77 @kiloliter_per_second: prefix!(milli) * prefix!(kilo); "kL/s", "kiloliter per second",
78 "kiloliters per second";
79 @hectoliter_per_second: prefix!(milli) * prefix!(hecto); "hL/s", "hectoliter per second",
80 "hectoliters per second";
81 @decaliter_per_second: prefix!(milli) * prefix!(deca); "daL/s", "decaliter per second",
82 "decaliters per second";
83 @liter_per_second: prefix!(milli); "L/s", "liter per second", "liters per second";
84 @deciliter_per_second: prefix!(milli) * prefix!(deci); "dL/s", "deciliter per second",
85 "deciliters per second";
86 @centiliter_per_second: prefix!(milli) * prefix!(centi); "cL/s", "centiliter per second",
87 "centiliters per second";
88 @milliliter_per_second: prefix!(milli) * prefix!(milli); "mL/s", "milliliter per second",
89 "milliliters per second";
90 @microliter_per_second: prefix!(milli) * prefix!(micro); "µL/s", "microliter per second",
91 "microliters per second";
92 @nanoliter_per_second: prefix!(milli) * prefix!(nano); "nL/s", "nanoliter per second",
93 "nanoliters per second";
94 @picoliter_per_second: prefix!(milli) * prefix!(pico); "pL/s", "picoliter per second",
95 "picoliters per second";
96 @femtoliter_per_second: prefix!(milli) * prefix!(femto); "fL/s", "femtoliter per second",
97 "femtoliters per second";
98 @attoliter_per_second: prefix!(milli) * prefix!(atto); "aL/s", "attoliter per second",
99 "attoliters per second";
100 @zeptoliter_per_second: prefix!(milli) * prefix!(zepto); "zL/s", "zeptoliter per second",
101 "zeptoliters per second";
102 @yoctoliter_per_second: prefix!(milli) * prefix!(yocto); "yL/s", "yoctoliter per second",
103 "yoctoliters per second";
104
105 @liter_per_minute: prefix!(milli) / 6.0_E1; "L/min", "liter per minute",
106 "liters per minute";
107
108 @acre_foot_per_second: 1.233_489_E3; "ac · ft/s", "acre-foot per second",
109 "acre-feet per second";
110 @barrel_per_second: 1.589_873_E-1; "bbl/s", "barrel per second", "barrels per second";
111 @bushel_per_second: 3.523_907_E-2; "bu/s", "bushel per second", "bushels per second";
112 @cord_per_second: 3.624_556_E0; "cords/s", "cord per second", "cords per second";
113 @cubic_foot_per_second: 2.831_685_E-2; "ft³/s", "cubic foot per second",
114 "cubic feet per second";
115 @cubic_foot_per_minute: 2.831_685_E-2 / 6.0_E1; "ft³/min", "cubic foot per minute",
116 "cubic feet per minute";
117 @cubic_inch_per_second: 1.638_706_E-5; "in³/s", "cubic inch per second",
118 "cubic inches per second";
119 @cubic_inch_per_minute: 1.638_706_E-5 / 6.0_E1; "in³/min", "cubic inch per minute",
120 "cubic inches per minute";
121 @cubic_mile_per_second: 4.168_182_E9; "mi³/s", "cubic mile per second",
122 "cubic miles per second";
123 @cubic_yard_per_second: 7.645_549_E-1; "yd³/s", "cubic yard per second",
124 "cubic yards per second";
125 @cubic_yard_per_minute: 7.645_549_E-1 / 6.0_E1; "yd³/min", "cubic yard per minute",
126 "cubic yards per minute";
127 @cup_per_second: 2.365_882_E-4; "cup/s", "cup per second", "cups per second";
128 @fluid_ounce_per_second: 2.957_353_E-5; "fl oz/s", "fluid ounce per second",
129 "fluid ounces per second";
130 @fluid_ounce_imperial_per_second: 2.841_306_E-5; "fl oz (UK)/s",
131 "Imperial fluid ounce per second", "Imperial fluid ounces per second";
132 @gallon_imperial_per_second: 4.546_09_E-3; "gal (UK)/s", "Imperial gallon per second",
133 "Imperial gallons per second";
134 @gallon_per_second: 3.785_412_E-3; "gal/s", "gallon per second", "gallons per second";
135 @gallon_per_minute: 3.785_412_E-3 / 6.0_E1; "gal/min", "gallon per minute",
136 "gallons per minute";
137 @gallon_per_day: 3.785_412_E-3 / 8.64_E4; "gal/d", "gallon per day", "gallons per day";
138 @gill_imperial_per_second: 1.420_653_E-4; "gi (UK)/s", "Imperial gill per second",
139 "Imperial gills per second";
140 @gill_per_second: 1.182_941_E-4; "gi/s", "gill per second", "gills per second";
141 @peck_per_second: 8.809_768_E-3; "pk/s", "peck per second", "pecks per second";
142 @pint_dry_per_second: 5.506_105_E-4; "dry pt/s", "dry pint per second",
143 "dry pints per second";
144 @pint_liquid_per_second: 4.731_765_E-4; "liq pt/s", "liquid pint per second",
145 "liquid pints per second";
146 @quart_dry_per_second: 1.101_221_E-3; "dry qt/s", "dry quart per second",
147 "dry quarts per second";
148 @quart_liquid_per_second: 9.463_529_E-4; "liq qt/s", "liquid quart per second",
149 "liquid quarts per second";
150 @stere_per_second: 1.0_E0; "st/s", "stere per second", "steres per second";
151 @tablespoon_per_second: 1.478_676_E-5; "tbsp/s", "tablespoon per second",
152 "tablespoons per second";
153 @teaspoon_per_second: 4.928_922_E-6; "tsp/s", "teaspoon per second",
154 "teaspoons per second";
155 @register_ton_per_second: 2.831_685_E0; "RT/s", "register ton per second",
156 "register tons per second";
157 }
158}
159
160#[cfg(test)]
161mod tests {
162 storage_types! {
163 use crate::lib::any::TypeId;
164 use crate::num::One;
165 use crate::si::quantities::*;
166 use crate::si::time as t;
167 use crate::si::volume as v;
168 use crate::si::volume_rate as r;
169 use crate::tests::Test;
170
171 #[test]
172 fn check_dimension() {
173 let _: VolumeRate<V> = Volume::new::<v::cubic_meter>(V::one())
174 / Time::new::<t::second>(V::one());
175 }
176
177 #[test]
178 fn check_units() {
179 if TypeId::of::<f64>() == TypeId::of::<V>() {
181 test::<v::cubic_yottameter, t::second, r::cubic_yottameter_per_second>();
182 test::<v::cubic_zettameter, t::second, r::cubic_zettameter_per_second>();
183 test::<v::cubic_exameter, t::second, r::cubic_exameter_per_second>();
184 test::<v::cubic_petameter, t::second, r::cubic_petameter_per_second>();
185 }
186
187 test::<v::cubic_terameter, t::second, r::cubic_terameter_per_second>();
188 test::<v::cubic_gigameter, t::second, r::cubic_gigameter_per_second>();
189 test::<v::cubic_megameter, t::second, r::cubic_megameter_per_second>();
190 test::<v::cubic_kilometer, t::second, r::cubic_kilometer_per_second>();
191 test::<v::cubic_hectometer, t::second, r::cubic_hectometer_per_second>();
192 test::<v::cubic_decameter, t::second, r::cubic_decameter_per_second>();
193 test::<v::cubic_meter, t::second, r::cubic_meter_per_second>();
194 test::<v::cubic_meter, t::minute, r::cubic_meter_per_minute>();
195 test::<v::cubic_meter, t::hour, r::cubic_meter_per_hour>();
196 test::<v::cubic_decimeter, t::second, r::cubic_decimeter_per_second>();
197 test::<v::cubic_centimeter, t::second, r::cubic_centimeter_per_second>();
198 test::<v::cubic_millimeter, t::second, r::cubic_millimeter_per_second>();
199 test::<v::cubic_micrometer, t::second, r::cubic_micrometer_per_second>();
200 test::<v::cubic_nanometer, t::second, r::cubic_nanometer_per_second>();
201 test::<v::cubic_picometer, t::second, r::cubic_picometer_per_second>();
202 test::<v::cubic_femtometer, t::second, r::cubic_femtometer_per_second>();
203
204 if TypeId::of::<f64>() == TypeId::of::<V>() {
206 test::<v::cubic_attometer, t::second, r::cubic_attometer_per_second>();
207 test::<v::cubic_zeptometer, t::second, r::cubic_zeptometer_per_second>();
208 test::<v::cubic_yoctometer, t::second, r::cubic_yoctometer_per_second>();
209 }
210
211 test::<v::yottaliter, t::second, r::yottaliter_per_second>();
212 test::<v::zettaliter, t::second, r::zettaliter_per_second>();
213 test::<v::exaliter, t::second, r::exaliter_per_second>();
214 test::<v::petaliter, t::second, r::petaliter_per_second>();
215 test::<v::teraliter, t::second, r::teraliter_per_second>();
216 test::<v::gigaliter, t::second, r::gigaliter_per_second>();
217 test::<v::megaliter, t::second, r::megaliter_per_second>();
218 test::<v::kiloliter, t::second, r::kiloliter_per_second>();
219 test::<v::hectoliter, t::second, r::hectoliter_per_second>();
220 test::<v::decaliter, t::second, r::decaliter_per_second>();
221 test::<v::liter, t::second, r::liter_per_second>();
222 test::<v::deciliter, t::second, r::deciliter_per_second>();
223 test::<v::centiliter, t::second, r::centiliter_per_second>();
224 test::<v::milliliter, t::second, r::milliliter_per_second>();
225 test::<v::microliter, t::second, r::microliter_per_second>();
226 test::<v::nanoliter, t::second, r::nanoliter_per_second>();
227 test::<v::picoliter, t::second, r::picoliter_per_second>();
228 test::<v::femtoliter, t::second, r::femtoliter_per_second>();
229 test::<v::attoliter, t::second, r::attoliter_per_second>();
230 test::<v::zeptoliter, t::second, r::zeptoliter_per_second>();
231 test::<v::yoctoliter, t::second, r::yoctoliter_per_second>();
232
233 test::<v::liter, t::minute, r::liter_per_minute>();
234
235 test::<v::acre_foot, t::second, r::acre_foot_per_second>();
236 test::<v::barrel, t::second, r::barrel_per_second>();
237 test::<v::bushel, t::second, r::bushel_per_second>();
238 test::<v::cord, t::second, r::cord_per_second>();
239 test::<v::cubic_foot, t::second, r::cubic_foot_per_second>();
240 test::<v::cubic_foot, t::minute, r::cubic_foot_per_minute>();
241 test::<v::cubic_inch, t::second, r::cubic_inch_per_second>();
242 test::<v::cubic_inch, t::minute, r::cubic_inch_per_minute>();
243 test::<v::cubic_mile, t::second, r::cubic_mile_per_second>();
244 test::<v::cubic_yard, t::second, r::cubic_yard_per_second>();
245 test::<v::cubic_yard, t::minute, r::cubic_yard_per_minute>();
246 test::<v::cup, t::second, r::cup_per_second>();
247 test::<v::fluid_ounce, t::second, r::fluid_ounce_per_second>();
248 test::<v::fluid_ounce_imperial, t::second, r::fluid_ounce_imperial_per_second>();
249 test::<v::gallon_imperial, t::second, r::gallon_imperial_per_second>();
250 test::<v::gallon, t::second, r::gallon_per_second>();
251 test::<v::gallon, t::minute, r::gallon_per_minute>();
252 test::<v::gallon, t::day, r::gallon_per_day>();
253 test::<v::gill_imperial, t::second, r::gill_imperial_per_second>();
254 test::<v::gill, t::second, r::gill_per_second>();
255 test::<v::peck, t::second, r::peck_per_second>();
256 test::<v::pint_dry, t::second, r::pint_dry_per_second>();
257 test::<v::pint_liquid, t::second, r::pint_liquid_per_second>();
258 test::<v::quart_dry, t::second, r::quart_dry_per_second>();
259 test::<v::quart_liquid, t::second, r::quart_liquid_per_second>();
260 test::<v::stere, t::second, r::stere_per_second>();
261 test::<v::tablespoon, t::second, r::tablespoon_per_second>();
262 test::<v::teaspoon, t::second, r::teaspoon_per_second>();
263 test::<v::register_ton, t::second, r::register_ton_per_second>();
264
265 fn test<O: v::Conversion<V>, T: t::Conversion<V>, R: r::Conversion<V>>() {
266 Test::assert_eq(&VolumeRate::new::<R>(V::one()),
267 &(Volume::new::<O>(V::one()) / Time::new::<T>(V::one())));
268 }
269 }
270 }
271}