Foam Nucleation

This app shows how much of a foaming agent needs to be in the PU formulation to achieve required foam density. It also show the size of foam bubbles created from a specific size of foaming agent bubbles. If we can create the right amount of the right size foaming agent nuclei we would have ultimate control over foam cell size and then also over its thermal conductivity. Unfortunally this app doesn't tell you how to do it, just what it is you have to do.

Credits

A big Thank You to prof. Steven Abbott for designing and developing the app.

Foam Nucleation

foaming agent
foaming agent
Wt %
liqid density
ρliq kg/m3
max foam temp.
Tmax °C
diameter of nuclei
φdrop μm
 
foam expansion ρrel
as % of solid density
foam density
ρFoam kg/m³
 
diameter of final cells
φcell μm
//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 = {
        // liquid density in kg/m3
        rho: sliders.Sliderho.value,
        //diameter of nuclei
        phi: sliders.Slidephi.value, //Everything stays in μm
        // % of foaming agent
        perc: sliders.Slideperc.value,
        // max temperature of foaming
        Tmax: sliders.SlideTmax.value,
        // foaming agent
        Agent: document.getElementById("Agent").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('rhorel').value = result.rhorel; 
    document.getElementById('phicell').value = result.phicell; 
    document.getElementById('Fdencalc').value = result.Fdencalc;
    //Do all relevant plots by calling plotIt - if there's no plot, nothing happens
    //plotIt is part of the app infrastructure in app.new.js
    if (result.plots) {
        for (let i = 0; i < result.plots.length; i++) {
            plotIt(result.plots[i], result.canvas[i]);
        }
    }

    //You might have some other stuff to do here, but for most apps that's it for Main!
}

//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({ rho, phi, perc, Tmax, Agent}) {
    const MWt=(Agent=="Water") ? 18 : 72
    const rhol=(Agent=="Water") ? 1 : 0.63
    const Ideal=22400 //Volume of 1 mol of Ideal gas at 20
    const Volg=Ideal*perc/MWt*(273+Tmax)/293
    const Voll=perc/rhol
    const Other = 100-perc
    const Volb=Other/(rho/1000)
    const rhoFoam=1000*100/(Volg+Other/(rho/1000))
    const rhorel=rhoFoam/1000/(rho/1000)
    const Fdencalc=rhorel*rho
//
    const Voldrop=4/3*Math.PI*Math.pow(phi/2,3)
    const Volbubble=Voldrop*Volg/Voll
    const phicell=2*Math.pow(3*Volbubble/4/Math.PI,0.333)

  
//Now we return everything - text boxes, plot and the name of the canvas, which is 'canvas' for a single plot
return {
    phicell: (phicell).toFixed(1),
    rhorel: (rhorel*100).toFixed(2),
    Fdencalc: (Fdencalc).toFixed(1),
};
}
            

Typical PU foams rely on nucleation to control the foam cell size. By supplying the foaming agent as individual particles of the same size (the smaller the better), nucleation is controlled which means that cell size is controlled.

Given that a typical foaming agent will expand to 2000x its original volume it is, at first, a surprise that a, say, 1μm particle only grows to something like 12μm, but because volume goes as the cube of the diameter, we only get an increase of ∛2000 ~ 12.5

Creating the controlled liquid particles is a science in its own right. But by separating the problems, it becomes possible to optimize different aspects of the foam rather than try to get everything to work well at the same time.