Foam Fire Interface

Quick Start

This deceptively simple app shows the temperature at the foam-fire interface within less than 1s of applying the foam. The large reduction in T (compared to the fuel BPt) gives a correspondingly large reduction in vapour pressure.

Credits

The app is based on 2 formidable papers1,2 from Ananth and colleagues at the Naval Research Laboratory.

Foam Fire Interface

Fuel
Foam T °C
Expansion E
Fuel BPt °C
Tinterface °C
VP %
//One universal basic required here to get things going once loaded
window.onload = function () {
    //restoreDefaultValues(); //Un-comment this if you want to start with defaults
    Main();
};

//Main() is hard wired as THE place to start calculating when inputs change
//It does no calculations itself, it merely sets them up, sends off variables, gets results and, if necessary, plots them.
function Main() {
    //Save settings every time you calculate, so they're always ready on a reload
    saveSettings();

    //Send all the inputs as a structured object
    //If you need to convert to, say, SI units, do it here!
    const inputs = {
        T: sliders.SlideT.value,
        E: sliders.SlideE.value,
        Fuel: document.getElementById("Fuel").value
    };

    //Send inputs off to CalcIt where the names are instantly available
    //Get all the resonses as an object, result
    const result = CalcIt(inputs);

    //Set all the text box outputs
    document.getElementById('BPt').value = result.BPt;
    document.getElementById('Tint').value = result.Tint;
    document.getElementById('VPp').value = result.VPp;
    if (result.plots) {
        for (let i = 0; i < result.plots.length; i++) {
            plotIt(result.plots[i], result.canvas[i]);
        }
    }
}

//Here's the app calculation
//The inputs are just the names provided - their order in the curly brackets is unimportant!
//By convention the input values are provided with the correct units within Main
function CalcIt({ T, E, Fuel }) {
    let K1, Cp1, rho1, AA, AB, AC, K2, Cp2, rho2, BPt, Tint, VPp
    if (Fuel == "Hexane") { K1 = 0.13; Cp1 = 2242; rho1 = 680; AA = 6.864; AB = 1164.6; AC = 223.6; BPt = 69 }
    if (Fuel == "Heptane") { K1 = 0.13; Cp1 = 2242; rho1 = 680; AA = 6.929; AB = 1283.1; AC = 218.6; BPt = 98 }
    if (Fuel == "Octane") { K1 = 0.13; Cp1 = 2242; rho1 = 680; AA = 6.907; AB = 1345.5; AC = 208.5; BPt = 126 }
    if (Fuel == "Gasoline") { K1 = 0.13; Cp1 = 2242; rho1 = 750; AA = 6.957; AB = 1443.2; AC = 203.2; BPt = 151 }
    if (Fuel == "Kerosine") { K1 = 0.13; Cp1 = 2000; rho1 = 810; AA = 6.917; AB = 1606.4; AC = 191.5; BPt = 174 }
    K2 = 0.6
    const alpha = 1 / E
    rho2 = 1000 * alpha + 1 * (1 - alpha)
    Cp2 = (1000 * alpha * 4181 + 1 * (1 - alpha) * 1012) / rho2
    const fact = 1 / (1 + Math.sqrt((K2 * Cp2 * rho2) / (K1 * Cp1 * rho1)))
    Tint = T + (BPt - T) * fact
    //The Antoines are in mm/Hg and C
    VPp = 100 * Math.pow(10, AA - AB / (Tint + AC)) / 760
    return {
        BPt: BPt,
        Tint: Tint.toFixed(0),
        VPp: VPp.toFixed(0),
    };
}

            

Deceptively simple

Sometimes a simple formula is too simple. But not in this case. Extensive numerical modelling of what happens when a thin layer (a few mm) of foam hits the fuel surface, assumed to be at its boiling point, give results that are not only validated experimentally but can be matched to an analytical formula which can be summed up as "the average of the fuel and foam temperature."

Using 1 for fuel and 2 for foam, and given the thermal conductivities, k, densities, ρ, and heat capacities c, plus the temperatures T (where T1 is the fuel BPt), we have that the interfacial temperature T is given by:

`T=(1/(1+sqrt((k_2ρ_2c_2)/(k_1ρ_1c_1))))(T_1-T_2)+T_2`

With reasonable values of the input parameters, the answer is close to the simple average to the fuel and foam temperatures.

From the interface temperature we can calculate the vapour pressure via Antoine Coefficients AA, AB and AC:

`VP=10^("AA"-(AB)/(T+AC))`

In the app the VP is compared to atmospheric pressure (i.e. VP at boiling point) and expressed as a %. Getting 25% of the original vapour pressure with a thin layer of foam is a considerable win.

But what about ...

The original papers extensively explore real-world issues such as the effect of pre-ignition time which affects the temperature into the fuel, or the effects of convection rather than the pure conduction used to generate the analytical formula. At least for the sorts of fires studied (heptane fires with relatively short pre-ignition times) all other effects are insignificant. The authors caution about extending the ideas to other fuels such as gasoline or kerosine (here using nonane and decane as stand-in values). Anything with a BPt greater than that of water might introduce extra effects.

And what about temperatures a few mm away from the interface? Again, the analytical and full-numerical equations show that temperatures don't vary too much, so the simple interface value can be used.

This all assumes that you have a foam layer. In a real fire, with a large pre-burn, it might take some time for foam to build up, depending on its resistance to heat and flames.

The previous paragraph is a reminder that you don't fight a fire based on this simple app. But do use the app to show how remarkably little foam can achieve a remarkable reduction in interface temperature, along with reduction in fuel vapour pressure, providing a considerable assist to putting out a fire.Focussing on how to get an even coverage of the first few mm of foam (via optimal formulation and application, with the ability to withstand the initial heat and flames) should clearly be a priority.

1M. W. Conroy and R. Ananth, Fuel Surface Cooling by Aqueous Foam: A Pool Fire Suppression Mechanism, Fire Technology, 51, 667–689, 2015

2Michael W. Conroy, James W. Fleming, and Ramagopal Ananth, Surface Cooling of a Pool Fire by Aqueous Foams, Combust. Sci. Technol., 2017,189, 806–840