1quantity! {
15 quantity: HeatTransfer; "heat transfer";
17 dimension: ISQ<
20 Z0, P1, N3, Z0, N1, Z0, Z0>; units {
28 @yottagram_per_second_cubed_kelvin: prefix!(yotta) / prefix!(kilo); "Yg/(s³ · K)",
29 "yottagram per second cubed kelvin", "yottagrams per second cubed kelvin";
30 @zettagram_per_second_cubed_kelvin: prefix!(zetta) / prefix!(kilo); "Zg/(s³ · K)",
31 "zettagram per second cubed kelvin", "zettagrams per second cubed kelvin";
32 @exagram_per_second_cubed_kelvin: prefix!(exa) / prefix!(kilo); "Eg/(s³ · K)",
33 "exagram per second cubed kelvin", "exagrams per second cubed kelvin";
34 @petagram_per_second_cubed_kelvin: prefix!(peta) / prefix!(kilo); "Pg/(s³ · K)",
35 "petagram per second cubed kelvin", "petagrams per second cubed kelvin";
36 @teragram_per_second_cubed_kelvin: prefix!(tera) / prefix!(kilo); "Tg/(s³ · K)",
37 "teragram per second cubed kelvin", "teragrams per second cubed kelvin";
38 @gigagram_per_second_cubed_kelvin: prefix!(giga) / prefix!(kilo); "Gg/(s³ · K)",
39 "gigagram per second cubed kelvin", "gigagrams per second cubed kelvin";
40 @megagram_per_second_cubed_kelvin: prefix!(mega) / prefix!(kilo); "Mg/(s³ · K)",
41 "megagram per second cubed kelvin", "megagrams per second cubed kelvin";
42 @kilogram_per_second_cubed_kelvin: prefix!(kilo) / prefix!(kilo); "kg/(s³ · K)",
44 "kilogram per second cubed kelvin", "kilograms per second cubed kelvin";
45 @hectogram_per_second_cubed_kelvin: prefix!(hecto) / prefix!(kilo); "hg/(s³ · K)",
46 "hectogram per second cubed kelvin", "hectograms per second cubed kelvin";
47 @decagram_per_second_cubed_kelvin: prefix!(deca) / prefix!(kilo); "dag/(s³ · K)",
48 "decagram per second cubed kelvin", "decagrams per second cubed kelvin";
49 @gram_per_second_cubed_kelvin: prefix!(none) / prefix!(kilo); "g/(s³ · K)",
50 "gram per second cubed kelvin", "grams per second cubed kelvin";
51 @decigram_per_second_cubed_kelvin: prefix!(deci) / prefix!(kilo); "dg/(s³ · K)",
52 "decigram per second cubed kelvin", "decigrams per second cubed kelvin";
53 @centigram_per_second_cubed_kelvin: prefix!(centi) / prefix!(kilo); "cg/(s³ · K)",
54 "centigram per second cubed kelvin", "centigrams per second cubed kelvin";
55 @milligram_per_second_cubed_kelvin: prefix!(milli) / prefix!(kilo); "mg/(s³ · K)",
56 "milligram per second cubed kelvin", "milligrams per second cubed kelvin";
57 @microgram_per_second_cubed_kelvin: prefix!(micro) / prefix!(kilo); "µg/(s³ · K)",
58 "microgram per second cubed kelvin", "micrograms per second cubed kelvin";
59 @nanogram_per_second_cubed_kelvin: prefix!(nano) / prefix!(kilo); "ng/(s³ · K)",
60 "nanogram per second cubed kelvin", "nanograms per second cubed kelvin";
61 @picogram_per_second_cubed_kelvin: prefix!(pico) / prefix!(kilo); "pg/(s³ · K)",
62 "picogram per second cubed kelvin", "picograms per second cubed kelvin";
63 @femtogram_per_second_cubed_kelvin: prefix!(femto) / prefix!(kilo); "fg/(s³ · K)",
64 "femtogram per second cubed kelvin", "femtograms per second cubed kelvin";
65 @attogram_per_second_cubed_kelvin: prefix!(atto) / prefix!(kilo); "ag/(s³ · K)",
66 "attogram per second cubed kelvin", "attograms per second cubed kelvin";
67 @zeptogram_per_second_cubed_kelvin: prefix!(zepto) / prefix!(kilo); "zg/(s³ · K)",
68 "zeptogram per second cubed kelvin", "zeptograms per second cubed kelvin";
69 @yoctogram_per_second_cubed_kelvin: prefix!(yocto) / prefix!(kilo); "yg/(s³ · K)",
70 "yoctogram per second cubed kelvin", "yoctograms per second cubed kelvin";
71
72 @kilogram_per_second_cubed_degree_celsius: prefix!(kilo) / prefix!(kilo); "kg/(s³ · °C)",
73 "kilogram per second cubed degree celsius", "kilograms per second cubed degree celsius";
74
75 @yottawatt_per_square_meter_kelvin: prefix!(yotta); "YW/(m² · K)",
77 "yottawatt per square meter kelvin", "yottawatts per square meter kelvin";
78 @zettawatt_per_square_meter_kelvin: prefix!(zetta); "ZW/(m² · K)",
79 "zettawatt per square meter kelvin", "zettawatts per square meter kelvin";
80 @exawatt_per_square_meter_kelvin: prefix!(exa); "EW/(m² · K)",
81 "exawatt per square meter kelvin", "exawatts per square meter kelvin";
82 @petawatt_per_square_meter_kelvin: prefix!(peta); "PW/(m² · K)",
83 "petawatt per square meter kelvin", "petawatts per square meter kelvin";
84 @terawatt_per_square_meter_kelvin: prefix!(tera); "TW/(m² · K)",
85 "terawatt per square meter kelvin", "terawatts per square meter kelvin";
86 @gigawatt_per_square_meter_kelvin: prefix!(giga); "GW/(m² · K)",
87 "gigawatt per square meter kelvin", "gigawatts per square meter kelvin";
88 @megawatt_per_square_meter_kelvin: prefix!(mega); "MW/(m² · K)",
89 "megawatt per square meter kelvin", "megawatts per square meter kelvin";
90 @kilowatt_per_square_meter_kelvin: prefix!(kilo); "kW/(m² · K)",
91 "kilowatt per square meter kelvin", "kilowatts per square meter kelvin";
92 @hectowatt_per_square_meter_kelvin: prefix!(hecto); "hW/(m² · K)",
93 "hectowatt per square meter kelvin", "hectowatts per square meter kelvin";
94 @decawatt_per_square_meter_kelvin: prefix!(deca); "daW/(m² · K)",
95 "decawatt per square meter kelvin", "decawatts per square meter kelvin";
96 @watt_per_square_meter_kelvin: prefix!(none); "W/(m² · K)",
98 "watt per square meter kelvin", "watts per square meter kelvin";
99 @deciwatt_per_square_meter_kelvin: prefix!(deci); "dW/(m² · K)",
100 "deciwatt per square meter kelvin", "deciwatts per square meter kelvin";
101 @centiwatt_per_square_meter_kelvin: prefix!(centi); "cW/(m² · K)",
102 "centiwatt per square meter kelvin", "centiwatts per square meter kelvin";
103 @milliwatt_per_square_meter_kelvin: prefix!(milli); "mW/(m² · K)",
104 "milliwatt per square meter kelvin", "milliwatts per square meter kelvin";
105 @microwatt_per_square_meter_kelvin: prefix!(micro); "µW/(m² · K)",
106 "microwatt per square meter kelvin", "microwatts per square meter kelvin";
107 @nanowatt_per_square_meter_kelvin: prefix!(nano); "nW/(m² · K)",
108 "nanowatt per square meter kelvin", "nanowatts per square meter kelvin";
109 @picowatt_per_square_meter_kelvin: prefix!(pico); "pW/(m² · K)",
110 "picowatt per square meter kelvin", "picowatts per square meter kelvin";
111 @femtowatt_per_square_meter_kelvin: prefix!(femto); "fW/(m² · K)",
112 "femtowatt per square meter kelvin", "femtowatts per square meter kelvin";
113 @attowatt_per_square_meter_kelvin: prefix!(atto); "aW/(m² · K)",
114 "attowatt per square meter kelvin", "attowatts per square meter kelvin";
115 @zeptowatt_per_square_meter_kelvin: prefix!(zepto); "zW/(m² · K)",
116 "zeptowatt per square meter kelvin", "zeptowatts per square meter kelvin";
117 @yoctowatt_per_square_meter_kelvin: prefix!(yocto); "yW/(m² · K)",
118 "yoctowatt per square meter kelvin", "yoctowatts per square meter kelvin";
119
120 @watt_per_square_kilometer_degree_celsius: prefix!(none) / (prefix!(kilo) * prefix!(kilo));
122 "W/(km² · °C)", "watt per square kilometer degree celsius",
123 "watts per square kilometer degree celsius";
124 @watt_per_square_meter_degree_celsius: prefix!(none); "W/(m² · °C)",
125 "watt per square meter degree celsius", "watts per square meter degree celsius";
126 @watt_per_square_centimeter_degree_celsius:
127 prefix!(none) / (prefix!(centi) * prefix!(centi)); "W/(cm² · °C)",
128 "watt per square centimeter degree celsius",
129 "watts per square centimeter degree celsius";
130 @watt_per_square_millimeter_degree_celsius:
131 prefix!(none) / (prefix!(milli) * prefix!(milli)); "W/(mm² · °C)",
132 "watt per square millimeter degree celsius",
133 "watts per square millimeter degree celsius";
134
135 @joule_per_second_square_meter_kelvin: prefix!(none); "J/(s · m² · K)",
137 "joule per second square meter kelvin", "joules per second square meter kelvin";
138 @joule_per_second_square_meter_degree_celsius: prefix!(none); "J/(s · m² · °C)",
139 "joule per second square meter degree celsius",
140 "joules per second square meter degree celsius";
141 @btu_it_per_hour_square_foot_degree_fahrenheit: 5.678_264_134_306_046;
142 "Btu (IT)/(hr · ft² · °F)",
143 "British thermal unit (IT) per hour square foot degree Fahrenheit",
144 "British thermal units (IT) per hour square foot degree Fahrenheit";
145 @btu_it_per_hour_square_inch_degree_fahrenheit: 8.176_700_353_400_707_E2;
146 "Btu (IT)/(hr · in² · °F)",
147 "British thermal unit (IT) per hour square inch degree Fahrenheit",
148 "British thermal units (IT) per hour square inch degree Fahrenheit";
149 @btu_it_per_minute_square_foot_degree_fahrenheit: 3.406_958_480_583_627_4_E2;
150 "Btu (IT)/(min · ft² · °F)",
151 "British thermal unit (IT) per minute square foot degree Fahrenheit",
152 "British thermal units (IT) per minute square foot degree Fahrenheit";
153 @btu_it_per_minute_square_inch_degree_fahrenheit: 4.906_020_212_040_425_E4;
154 "Btu (IT)/(min · in² · °F)",
155 "British thermal unit (IT) per minute square inch degree Fahrenheit",
156 "British thermal units (IT) per minute square inch degree Fahrenheit";
157 @btu_it_per_second_square_foot_degree_fahrenheit: 2.044_175_088_350_176_5_E4;
158 "Btu (IT)/(s · ft² · °F)",
159 "British thermal unit (IT) per second square foot degree Fahrenheit",
160 "British thermal units (IT) per second square foot degree Fahrenheit";
161 @btu_it_per_second_square_inch_degree_fahrenheit: 2.943_612_127_224_254_4_E6;
162 "Btu (IT)/(s · in² · °F)",
163 "British thermal unit (IT) per second square inch degree Fahrenheit",
164 "British thermal units (IT) per second square inch degree Fahrenheit";
165 @btu_per_hour_square_foot_degree_fahrenheit: 5.674_464_473_928_946; "Btu/(hr · ft² · °F)",
166 "British thermal unit per hour square foot degree Fahrenheit",
167 "British thermal units per hour square foot degree Fahrenheit";
168 @btu_per_hour_square_inch_degree_fahrenheit: 8.171_228_842_457_684_E2;
169 "Btu/(hr · in² · °F)", "British thermal unit per hour square inch degree Fahrenheit",
170 "British thermal units per hour square inch degree Fahrenheit";
171 @btu_per_minute_square_foot_degree_fahrenheit: 3.404_678_684_357_368_E2;
172 "Btu/(min · ft² · °F)", "British thermal unit per minute square foot degree Fahrenheit",
173 "British thermal units per minute square foot degree Fahrenheit";
174 @btu_per_minute_square_inch_degree_fahrenheit: 4.902_737_305_474_611_E4;
175 "Btu/(min · in² · °F)", "British thermal unit per minute square inch degree Fahrenheit",
176 "British thermal units per minute square inch degree Fahrenheit";
177 @btu_per_second_square_foot_degree_fahrenheit: 2.042_807_210_614_421_E4;
178 "Btu/(s · ft² · °F)", "British thermal unit per second square foot degree Fahrenheit",
179 "British thermal units per second square foot degree Fahrenheit";
180 @btu_per_second_square_inch_degree_fahrenheit: 2.941_642_383_284_766_E6;
181 "Btu/(s · in² · °F)", "British thermal unit per second square inch degree Fahrenheit",
182 "British thermal units per second square inch degree Fahrenheit";
183 }
184}
185
186#[cfg(test)]
187mod tests {
188 storage_types! {
189 use crate::num::One;
190 use crate::si::area as a;
191 use crate::si::energy as e;
192 use crate::si::heat_transfer as ht;
193 use crate::si::mass as m;
194 use crate::si::power as p;
195 use crate::si::quantities::*;
196 use crate::si::temperature_interval as ti;
197 use crate::si::time as t;
198 use crate::tests::Test;
199
200 #[test]
201 fn check_dimension() {
202 let _: HeatTransfer<V> = Mass::new::<m::kilogram>(V::one())
203 / (Time::new::<t::second>(V::one())
204 * Time::new::<t::second>(V::one())
205 * Time::new::<t::second>(V::one())
206 * TemperatureInterval::new::<ti::kelvin>(V::one()));
207 }
208
209 #[test]
210 fn check_base_units() {
211 test::<m::yottagram, t::second, ti::kelvin, ht::yottagram_per_second_cubed_kelvin>();
212 test::<m::zettagram, t::second, ti::kelvin, ht::zettagram_per_second_cubed_kelvin>();
213 test::<m::exagram, t::second, ti::kelvin, ht::exagram_per_second_cubed_kelvin>();
214 test::<m::petagram, t::second, ti::kelvin, ht::petagram_per_second_cubed_kelvin>();
215 test::<m::teragram, t::second, ti::kelvin, ht::teragram_per_second_cubed_kelvin>();
216 test::<m::gigagram, t::second, ti::kelvin, ht::gigagram_per_second_cubed_kelvin>();
217 test::<m::megagram, t::second, ti::kelvin, ht::megagram_per_second_cubed_kelvin>();
218 test::<m::kilogram, t::second, ti::kelvin, ht::kilogram_per_second_cubed_kelvin>();
219 test::<m::hectogram, t::second, ti::kelvin, ht::hectogram_per_second_cubed_kelvin>();
220 test::<m::decagram, t::second, ti::kelvin, ht::decagram_per_second_cubed_kelvin>();
221 test::<m::gram, t::second, ti::kelvin, ht::gram_per_second_cubed_kelvin>();
222 test::<m::decigram, t::second, ti::kelvin, ht::decigram_per_second_cubed_kelvin>();
223 test::<m::centigram, t::second, ti::kelvin, ht::centigram_per_second_cubed_kelvin>();
224 test::<m::milligram, t::second, ti::kelvin, ht::milligram_per_second_cubed_kelvin>();
225 test::<m::microgram, t::second, ti::kelvin, ht::microgram_per_second_cubed_kelvin>();
226 test::<m::nanogram, t::second, ti::kelvin, ht::nanogram_per_second_cubed_kelvin>();
227 test::<m::picogram, t::second, ti::kelvin, ht::picogram_per_second_cubed_kelvin>();
228 test::<m::femtogram, t::second, ti::kelvin, ht::femtogram_per_second_cubed_kelvin>();
229 test::<m::attogram, t::second, ti::kelvin, ht::attogram_per_second_cubed_kelvin>();
230 test::<m::zeptogram, t::second, ti::kelvin, ht::zeptogram_per_second_cubed_kelvin>();
231 test::<m::yoctogram, t::second, ti::kelvin, ht::yoctogram_per_second_cubed_kelvin>();
232
233 test::<m::kilogram, t::second, ti::degree_celsius,
234 ht::kilogram_per_second_cubed_degree_celsius>();
235
236 fn test<
237 M: m::Conversion<V>,
238 T: t::Conversion<V>,
239 TI: ti::Conversion<V>,
240 HT: ht::Conversion<V>>()
241 {
242 Test::assert_approx_eq(&HeatTransfer::new::<HT>(V::one()),
243 &(Mass::new::<M>(V::one())
244 / (Time::new::<T>(V::one())
245 * Time::new::<T>(V::one())
246 * Time::new::<T>(V::one())
247 * TemperatureInterval::new::<TI>(V::one()))));
248 }
249 }
250
251 #[test]
252 fn check_power_per_area_ti_units() {
253 test::<p::yottawatt, a::square_meter, ti::kelvin,
254 ht::yottawatt_per_square_meter_kelvin>();
255 test::<p::zettawatt, a::square_meter, ti::kelvin,
256 ht::zettawatt_per_square_meter_kelvin>();
257 test::<p::exawatt, a::square_meter, ti::kelvin, ht::exawatt_per_square_meter_kelvin>();
258 test::<p::petawatt, a::square_meter, ti::kelvin,
259 ht::petawatt_per_square_meter_kelvin>();
260 test::<p::terawatt, a::square_meter, ti::kelvin,
261 ht::terawatt_per_square_meter_kelvin>();
262 test::<p::gigawatt, a::square_meter, ti::kelvin,
263 ht::gigawatt_per_square_meter_kelvin>();
264 test::<p::megawatt, a::square_meter, ti::kelvin,
265 ht::megawatt_per_square_meter_kelvin>();
266 test::<p::kilowatt, a::square_meter, ti::kelvin,
267 ht::kilowatt_per_square_meter_kelvin>();
268 test::<p::hectowatt, a::square_meter, ti::kelvin,
269 ht::hectowatt_per_square_meter_kelvin>();
270 test::<p::decawatt, a::square_meter, ti::kelvin,
271 ht::decawatt_per_square_meter_kelvin>();
272 test::<p::watt, a::square_meter, ti::kelvin, ht::watt_per_square_meter_kelvin>();
273 test::<p::deciwatt, a::square_meter, ti::kelvin,
274 ht::deciwatt_per_square_meter_kelvin>();
275 test::<p::centiwatt, a::square_meter, ti::kelvin,
276 ht::centiwatt_per_square_meter_kelvin>();
277 test::<p::milliwatt, a::square_meter, ti::kelvin,
278 ht::milliwatt_per_square_meter_kelvin>();
279 test::<p::microwatt, a::square_meter, ti::kelvin,
280 ht::microwatt_per_square_meter_kelvin>();
281 test::<p::nanowatt, a::square_meter, ti::kelvin,
282 ht::nanowatt_per_square_meter_kelvin>();
283 test::<p::picowatt, a::square_meter, ti::kelvin,
284 ht::picowatt_per_square_meter_kelvin>();
285 test::<p::femtowatt, a::square_meter, ti::kelvin,
286 ht::femtowatt_per_square_meter_kelvin>();
287 test::<p::attowatt, a::square_meter, ti::kelvin,
288 ht::attowatt_per_square_meter_kelvin>();
289 test::<p::zeptowatt, a::square_meter, ti::kelvin,
290 ht::zeptowatt_per_square_meter_kelvin>();
291 test::<p::yoctowatt, a::square_meter, ti::kelvin,
292 ht::yoctowatt_per_square_meter_kelvin>();
293
294 test::<p::watt, a::square_kilometer, ti::degree_celsius,
295 ht::watt_per_square_kilometer_degree_celsius>();
296 test::<p::watt, a::square_meter, ti::degree_celsius,
297 ht::watt_per_square_meter_degree_celsius>();
298 test::<p::watt, a::square_centimeter, ti::degree_celsius,
299 ht::watt_per_square_centimeter_degree_celsius>();
300 test::<p::watt, a::square_millimeter, ti::degree_celsius,
301 ht::watt_per_square_millimeter_degree_celsius>();
302
303 fn test<
304 P: p::Conversion<V>,
305 A: a::Conversion<V>,
306 TI: ti::Conversion<V>,
307 HT: ht::Conversion<V>>()
308 {
309 Test::assert_approx_eq(&HeatTransfer::new::<HT>(V::one()),
310 &(Power::new::<P>(V::one())
311 / (Area::new::<A>(V::one()) * TemperatureInterval::new::<TI>(V::one()))));
312 }
313 }
314
315 #[test]
316 fn check_energy_per_time_area_ti_units() {
317 test::<e::joule, t::second, a::square_meter, ti::kelvin,
318 ht::joule_per_second_square_meter_kelvin>();
319 test::<e::joule, t::second, a::square_meter, ti::degree_celsius,
320 ht::joule_per_second_square_meter_degree_celsius>();
321 test::<e::btu_it, t::hour, a::square_foot, ti::degree_fahrenheit,
322 ht::btu_it_per_hour_square_foot_degree_fahrenheit>();
323 test::<e::btu_it, t::hour, a::square_inch, ti::degree_fahrenheit,
324 ht::btu_it_per_hour_square_inch_degree_fahrenheit>();
325 test::<e::btu_it, t::minute, a::square_foot, ti::degree_fahrenheit,
326 ht::btu_it_per_minute_square_foot_degree_fahrenheit>();
327 test::<e::btu_it, t::minute, a::square_inch, ti::degree_fahrenheit,
328 ht::btu_it_per_minute_square_inch_degree_fahrenheit>();
329 test::<e::btu_it, t::second, a::square_foot, ti::degree_fahrenheit,
330 ht::btu_it_per_second_square_foot_degree_fahrenheit>();
331 test::<e::btu_it, t::second, a::square_inch, ti::degree_fahrenheit,
332 ht::btu_it_per_second_square_inch_degree_fahrenheit>();
333 test::<e::btu, t::hour, a::square_foot, ti::degree_fahrenheit,
334 ht::btu_per_hour_square_foot_degree_fahrenheit>();
335 test::<e::btu, t::hour, a::square_inch, ti::degree_fahrenheit,
336 ht::btu_per_hour_square_inch_degree_fahrenheit>();
337 test::<e::btu, t::minute, a::square_foot, ti::degree_fahrenheit,
338 ht::btu_per_minute_square_foot_degree_fahrenheit>();
339 test::<e::btu, t::minute, a::square_inch, ti::degree_fahrenheit,
340 ht::btu_per_minute_square_inch_degree_fahrenheit>();
341 test::<e::btu, t::second, a::square_foot, ti::degree_fahrenheit,
342 ht::btu_per_second_square_foot_degree_fahrenheit>();
343 test::<e::btu, t::second, a::square_inch, ti::degree_fahrenheit,
344 ht::btu_per_second_square_inch_degree_fahrenheit>();
345
346 fn test<
347 E: e::Conversion<V>,
348 T: t::Conversion<V>,
349 A: a::Conversion<V>,
350 TI: ti::Conversion<V>,
351 HT: ht::Conversion<V>>()
352 {
353 Test::assert_approx_eq(&HeatTransfer::new::<HT>(V::one()),
354 &(Energy::new::<E>(V::one())
355 / (Time::new::<T>(V::one())
356 * Area::new::<A>(V::one())
357 * TemperatureInterval::new::<TI>(V::one()))));
358 }
359 }
360 }
361}