uom/si/
catalytic_activity.rs

1//! Catalytic activity (base unit katal, mol · s⁻¹).
2
3quantity! {
4    /// Catalytic activity (base unit katal, mol · s⁻¹).
5    quantity: CatalyticActivity; "catalytic activity";
6    /// Dimension of catalytic activity, T⁻¹N (base unit katal, mol · s⁻¹).
7    dimension: ISQ<
8        Z0,     // length
9        Z0,     // mass
10        N1,     // time
11        Z0,     // electric current
12        Z0,     // thermodynamic temperature
13        P1,     // amount of substance
14        Z0>;    // luminous intensity
15    units {
16        @yottakatal: prefix!(yotta); "Ykat", "yottakatal", "yottakatals";
17        @zettakatal: prefix!(zetta); "Zkat", "zettakatal", "zettakatals";
18        @exakatal: prefix!(exa); "Ekat", "exakatal", "exakatals";
19        @petakatal: prefix!(peta); "Pkat", "petakatal", "petakatals";
20        @terakatal: prefix!(tera); "Tkat", "terakatal", "terakatals";
21        @gigakatal: prefix!(giga); "Gkat", "gigakatal", "gigakatals";
22        @megakatal: prefix!(mega); "Mkat", "megakatal", "megakatals";
23        @kilokatal: prefix!(kilo); "kkat", "kilokatal", "kilokatals";
24        @hectokatal: prefix!(hecto); "hkat", "hectokatal", "hectokatals";
25        @decakatal: prefix!(deca); "dakat", "decakatal", "decakatals";
26        @katal: prefix!(none); "kat", "katal", "katals";
27        @decikatal: prefix!(deci); "dkat", "decikatal", "decikatals";
28        @centikatal: prefix!(centi); "ckat", "centikatal", "centikatals";
29        @millikatal: prefix!(milli); "mkat", "millikatal", "millikatals";
30        @microkatal: prefix!(micro); "µkat", "microkatal", "microkatals";
31        @nanokatal: prefix!(nano); "nkat", "nanokatal", "nanokatals";
32        @picokatal: prefix!(pico); "pkat", "picokatal", "picokatals";
33        @femtokatal: prefix!(femto); "fkat", "femtokatal", "femtokatals";
34        @attokatal: prefix!(atto); "akat", "attokatal", "attokatals";
35        @zeptokatal: prefix!(zepto); "zkat", "zeptokatal", "zeptokatals";
36        @yoctokatal: prefix!(yocto); "ykat", "yoctokatal", "yoctokatals";
37
38        @yotta_enzyme_unit: prefix!(yotta) * prefix!(micro) / 6.0_E1; "YU", "yotta enzyme unit",
39            "yotta enzyme units";
40        @zetta_enzyme_unit: prefix!(zetta) * prefix!(micro) / 6.0_E1; "ZU", "zetta enzyme unit",
41            "zetta enzyme units";
42        @exa_enzyme_unit: prefix!(exa) * prefix!(micro) / 6.0_E1; "EU", "exa enzyme unit",
43            "exa enzyme units";
44        @peta_enzyme_unit: prefix!(peta) * prefix!(micro) / 6.0_E1; "PU", "peta enzyme unit",
45            "peta enzyme units";
46        @tera_enzyme_unit: prefix!(tera) * prefix!(micro) / 6.0_E1; "TU", "tera enzyme unit",
47            "tera enzyme units";
48        @giga_enzyme_unit: prefix!(giga) * prefix!(micro) / 6.0_E1; "GU", "giga enzyme unit",
49            "giga enzyme units";
50        @mega_enzyme_unit: prefix!(mega) * prefix!(micro) / 6.0_E1; "MU", "mega enzyme unit",
51            "mega enzyme units";
52        @kilo_enzyme_unit: prefix!(kilo) * prefix!(micro) / 6.0_E1; "kU", "kilo enzyme unit",
53            "kilo enzyme units";
54        @hecto_enzyme_unit: prefix!(hecto) * prefix!(micro) / 6.0_E1; "hU", "hecto enzyme unit",
55            "hecto enzyme units";
56        @deca_enzyme_unit: prefix!(deca) * prefix!(micro) / 6.0_E1; "daU", "deca enzyme unit",
57            "deca enzyme units";
58        @enzyme_unit: prefix!(none) * prefix!(micro) / 6.0_E1; "U", "enzyme unit", "enzyme units";
59        @deci_enzyme_unit: prefix!(deci) * prefix!(micro) / 6.0_E1; "dU", "deci enzyme unit",
60            "deci enzyme units";
61        @centi_enzyme_unit: prefix!(centi) * prefix!(micro) / 6.0_E1; "cU", "centi enzyme unit",
62            "centi enzyme units";
63        @milli_enzyme_unit: prefix!(milli) * prefix!(micro) / 6.0_E1; "mU", "milli enzyme unit",
64            "milli enzyme units";
65        @micro_enzyme_unit: prefix!(micro) * prefix!(micro) / 6.0_E1; "μU", "micro enzyme unit",
66            "micro enzyme units";
67        @nano_enzyme_unit: prefix!(nano) * prefix!(micro) / 6.0_E1; "nU", "nano enzyme unit",
68            "nano enzyme units";
69        @pico_enzyme_unit: prefix!(pico) * prefix!(micro) / 6.0_E1; "pU", "pico enzyme unit",
70            "pico enzyme units";
71        @femto_enzyme_unit: prefix!(femto) * prefix!(micro) / 6.0_E1; "fU", "femto enzyme unit",
72            "femto enzyme units";
73        @atto_enzyme_unit: prefix!(atto) * prefix!(micro) / 6.0_E1; "aU", "atto enzyme unit",
74            "atto enzyme units";
75        @zepto_enzyme_unit: prefix!(zepto) * prefix!(micro) / 6.0_E1; "zU", "zepto enzyme unit",
76            "zepto enzyme units";
77        @yocto_enzyme_unit: prefix!(yocto) * prefix!(micro) / 6.0_E1; "yU", "yocto enzyme unit",
78            "yocto enzyme units";
79
80        @particle_per_second: 1.0_E0 / 6.022_140_76_E23; "particle/s", "particle per second",
81            "particles per second";
82
83        @mole_per_second: prefix!(none); "mol/s", "mole per second", "moles per second";
84        @standard_centimeter_per_minute: 1_E5 * prefix!(micro) / 8.314_462_618 / 273.15 / 60.0;
85            "sccm", "standard centimeter per minute", "standard centimeters per minute";
86        @standard_liter_per_minute: 1_E5 * prefix!(milli) / 8.314_462_618 / 273.15 / 60.0; "slm",
87            "standard liter per minute", "standard liters per minute";
88        @standard_cubic_meter_per_minute: 1_E5 * prefix!(none) / 8.314_462_618 / 273.15 / 60.0;
89            "m³(STP)/min", "standard cubic meter per minute", "standard cubic meters per minute";
90        @standard_cubic_foot_per_minute: 1_E5 * 2.831_685_E-2 / 8.314_462_618 / 273.15 / 60.0;
91            "scfm", "standard cubic foot per hour", "standard cubic feet per hour";
92    }
93}
94
95#[cfg(test)]
96mod tests {
97    storage_types! {
98        use crate::num::One;
99        use crate::si::amount_of_substance as aos;
100        use crate::si::catalytic_activity as ca;
101        use crate::si::quantities::*;
102        use crate::si::time as t;
103        use crate::tests::Test;
104
105        #[test]
106        fn check_dimension() {
107            let _: Time<V> = AmountOfSubstance::new::<aos::mole>(V::one())
108                / CatalyticActivity::new::<ca::katal>(V::one());
109            let _: CatalyticActivity<V> = AmountOfSubstance::new::<aos::mole>(V::one())
110                / Time::new::<t::second>(V::one());
111        }
112
113        #[test]
114        fn check_units() {
115            test::<aos::yottamole, t::second, ca::yottakatal>();
116            test::<aos::zettamole, t::second, ca::zettakatal>();
117            test::<aos::examole, t::second, ca::exakatal>();
118            test::<aos::petamole, t::second, ca::petakatal>();
119            test::<aos::teramole, t::second, ca::terakatal>();
120            test::<aos::gigamole, t::second, ca::gigakatal>();
121            test::<aos::megamole, t::second, ca::megakatal>();
122            test::<aos::kilomole, t::second, ca::kilokatal>();
123            test::<aos::hectomole, t::second, ca::hectokatal>();
124            test::<aos::decamole, t::second, ca::decakatal>();
125            test::<aos::mole, t::second, ca::katal>();
126            test::<aos::decimole, t::second, ca::decikatal>();
127            test::<aos::centimole, t::second, ca::centikatal>();
128            test::<aos::millimole, t::second, ca::millikatal>();
129            test::<aos::micromole, t::second, ca::microkatal>();
130            test::<aos::nanomole, t::second, ca::nanokatal>();
131            test::<aos::picomole, t::second, ca::picokatal>();
132            test::<aos::femtomole, t::second, ca::femtokatal>();
133            test::<aos::attomole, t::second, ca::attokatal>();
134            test::<aos::zeptomole, t::second, ca::zeptokatal>();
135            test::<aos::yoctomole, t::second, ca::yoctokatal>();
136
137            test::<aos::examole, t::minute, ca::yotta_enzyme_unit>();
138            test::<aos::petamole, t::minute, ca::zetta_enzyme_unit>();
139            test::<aos::teramole, t::minute, ca::exa_enzyme_unit>();
140            test::<aos::gigamole, t::minute, ca::peta_enzyme_unit>();
141            test::<aos::megamole, t::minute, ca::tera_enzyme_unit>();
142            test::<aos::kilomole, t::minute, ca::giga_enzyme_unit>();
143            test::<aos::mole, t::minute, ca::mega_enzyme_unit>();
144            test::<aos::millimole, t::minute, ca::kilo_enzyme_unit>();
145            test::<aos::micromole, t::minute, ca::enzyme_unit>();
146            test::<aos::nanomole, t::minute, ca::milli_enzyme_unit>();
147            test::<aos::picomole, t::minute, ca::micro_enzyme_unit>();
148            test::<aos::femtomole, t::minute, ca::nano_enzyme_unit>();
149            test::<aos::attomole, t::minute, ca::pico_enzyme_unit>();
150            test::<aos::zeptomole, t::minute, ca::femto_enzyme_unit>();
151            test::<aos::yoctomole, t::minute, ca::atto_enzyme_unit>();
152
153            test::<aos::particle, t::second, ca::particle_per_second>();
154            test::<aos::mole, t::second, ca::mole_per_second>();
155            test::<aos::standard_centimeter, t::minute, ca::standard_centimeter_per_minute>();
156            test::<aos::standard_liter, t::minute, ca::standard_liter_per_minute>();
157            test::<aos::standard_cubic_foot, t::minute, ca::standard_cubic_foot_per_minute>();
158            test::<aos::standard_cubic_meter, t::minute, ca::standard_cubic_meter_per_minute>();
159
160            fn test<AOS: aos::Conversion<V>, T: t::Conversion<V>, CA: ca::Conversion<V>>() {
161                Test::assert_approx_eq(
162                    &(AmountOfSubstance::new::<AOS>(V::one()) / Time::new::<T>(V::one())),
163                    &CatalyticActivity::new::<CA>(V::one()));
164                Test::assert_approx_eq(
165                    &Time::new::<T>(V::one()),
166                    &(AmountOfSubstance::new::<AOS>(V::one())
167                        / CatalyticActivity::new::<CA>(V::one())));
168            }
169        }
170    }
171}