### Fire and water and Frink

For the first time, Frink has failed me: it doesn't know the specific heat of water!

OK, that's easy:

``water_heat = calorie / gram / kelvin``

But Frink doesn't know the heat of vaporization of water! And that takes actual looking up! How will I ever show why water is better than liquid nitrogen for extinguishing fires?

OK, that's still easy:

``````water_heat = calorie / gram / K
water_vap = 2260 kJ/kg
steam_heat_cp = 2.080 J / g / K //at constant pressure

N2_vap = 5.56 kJ / (28 g) //199 kJ/kg
GN2_heat_cp = 1.04 J / g / K
LN2_temp = 77 K
LN2_density = 0.808 water

tank_temp = Celsius[20]
fire_temp = Fahrenheit[500] //The fire is hotter than this,
//but most of the coolant won't get so hot.

water_cooling = water * ((Celsius[100] - tank_temp) water_heat + water_vap + (fire_temp - Celsius[100]) steam_heat_cp)
LN2_cooling = LN2_density * (N2_vap + (fire_temp - LN2_temp) GN2_heat_cp)
``````

`water_cooling`, for those who haven't been following along in Frink, is 2.9 GPa. (Yes, pascals: energy over volume is pressure.) `LN2_cooling` is 544 MPa. So despite its higher storage temperature, water absorbs more than five times as much heat as an equal volume of liquid nitrogen, because of its enormous heat of vaporization. And its lower molecular weight means it produces a larger volume of gas, and displaces more air. Not to mention it's cheap and storable. There's a reason we fight fire with water.

In the course of this, I noticed something odd: the `Fahrenheit` and `Celsius` functions are their own inverses. They determine which operation to do from the dimensions of their input. This is a use of dynamic dimension-checking that I hadn't thought of, but it doesn't give me a warm fuzzy feeling.

Quick and easy physical calculations, however, do. Especially when the language makes them simple enough that they work on the first try, as this one did.