|
| 1 | +//! Kinematic viscosity (base unit square meter per second, m² · s⁻¹). |
| 2 | +
|
| 3 | +quantity! { |
| 4 | + /// Kinematic viscosity (base unit square meter per second, m² · s⁻¹). |
| 5 | + quantity: KinematicViscosity; "kinematic viscosity"; |
| 6 | + /// Dimension of kinematic viscosity, L²T⁻¹ (base unit square meter per second, m² · s⁻¹). |
| 7 | + dimension: ISQ< |
| 8 | + P2, // length |
| 9 | + Z0, // mass |
| 10 | + N1, // time |
| 11 | + Z0, // electric current |
| 12 | + Z0, // thermodynamic temperature |
| 13 | + Z0, // amount of substance |
| 14 | + Z0>; // luminous intensity |
| 15 | + kind: dyn (crate::si::marker::KinematicViscosityKind); |
| 16 | + units { |
| 17 | + @square_meter_per_second: prefix!(none); |
| 18 | + "m²/s", "square meter per second", "square meters per second"; |
| 19 | + @square_centimeter_per_second: prefix!(centi) * prefix!(centi); |
| 20 | + "cm²/s", "square centimeter per second", "square centimeters per second"; |
| 21 | + @square_millimeter_per_second: prefix!(milli) * prefix!(milli); |
| 22 | + "mm²/s", "square millimeter per second", "square millimeters per second"; |
| 23 | + @square_micrometer_per_second: prefix!(micro) * prefix!(micro); |
| 24 | + "µm²/s", "square micrometer per second", "square micrometers per second"; |
| 25 | + @square_nanometer_per_second: prefix!(nano) * prefix!(nano); |
| 26 | + "nm²/s", "square nanometer per second", "square nanometers per second"; |
| 27 | + @kilostokes: prefix!(kilo) * prefix!(centi) * prefix!(centi); |
| 28 | + "kSt", "kilostokes", "kilostokes"; |
| 29 | + @stokes: prefix!(centi) * prefix!(centi); "St", "stokes", "stokes"; |
| 30 | + @decistokes: prefix!(deci) * prefix!(centi) * prefix!(centi); |
| 31 | + "dSt", "decistokes", "decistokes"; |
| 32 | + @centistokes: prefix!(centi) * prefix!(centi) * prefix!(centi); |
| 33 | + "cSt", "centistokes", "centistokes"; |
| 34 | + @millistokes: prefix!(milli) * prefix!(centi) * prefix!(centi); |
| 35 | + "mSt", "millistokes", "millistokes"; |
| 36 | + @microstokes: prefix!(micro) * prefix!(centi) * prefix!(centi); |
| 37 | + "µSt", "microstokes", "microstokes"; |
| 38 | + @nanostokes: prefix!(nano) * prefix!(centi) * prefix!(centi); |
| 39 | + "nSt", "nanostokes", "nanostokes"; |
| 40 | + } |
| 41 | +} |
| 42 | + |
| 43 | +#[cfg(test)] |
| 44 | +mod test { |
| 45 | + storage_types! { |
| 46 | + use crate::num::One; |
| 47 | + use crate::si::area as a; |
| 48 | + use crate::si::kinematic_viscosity as kv; |
| 49 | + use crate::si::quantities::*; |
| 50 | + use crate::si::time as t; |
| 51 | + |
| 52 | + use crate::tests::Test; |
| 53 | + |
| 54 | + #[test] |
| 55 | + fn check_dimension() { |
| 56 | + let _: KinematicViscosity<V> = (Area::new::<a::square_meter>(V::one()) |
| 57 | + / Time::new::<t::second>(V::one())).into(); |
| 58 | + } |
| 59 | + |
| 60 | + #[test] |
| 61 | + fn check_units() { |
| 62 | + test::<a::square_meter, t::second, kv::square_meter_per_second>(); |
| 63 | + test::<a::square_centimeter, t::second, kv::square_centimeter_per_second>(); |
| 64 | + test::<a::square_millimeter, t::second, kv::square_millimeter_per_second>(); |
| 65 | + test::<a::square_micrometer, t::second, kv::square_micrometer_per_second>(); |
| 66 | + test::<a::square_nanometer, t::second, kv::square_nanometer_per_second>(); |
| 67 | + test::<a::square_centimeter, t::millisecond, kv::kilostokes>(); |
| 68 | + test::<a::square_centimeter, t::second, kv::stokes>(); |
| 69 | + test::<a::square_centimeter, t::decasecond, kv::decistokes>(); |
| 70 | + test::<a::square_centimeter, t::hectosecond, kv::centistokes>(); |
| 71 | + test::<a::square_centimeter, t::kilosecond, kv::millistokes>(); |
| 72 | + test::<a::square_centimeter, t::megasecond, kv::microstokes>(); |
| 73 | + test::<a::square_centimeter, t::gigasecond, kv::nanostokes>(); |
| 74 | + |
| 75 | + fn test<A: a::Conversion<V>, T: t::Conversion<V>, KV: kv::Conversion<V>>() { |
| 76 | + Test::assert_approx_eq(&KinematicViscosity::new::<KV>(V::one()), |
| 77 | + &(Area::new::<A>(V::one()) / Time::new::<T>(V::one())).into()); |
| 78 | + } |
| 79 | + } |
| 80 | + } |
| 81 | +} |
0 commit comments