Nanofluid Thermal Conductivity

Quick Start

There has been much hype about how nanofluids can increase thermal conductivity to help create more efficient heat exchangers, cooling systems etc. In fact the effects in real devices are modest and usually not worth bothering with.

Nanofluids

Kf Fluid W/mK.
Kp Particle W/mK.
Particle Radius, r, nm
Aspect Ratio
Sphericity
φc
//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();
};
//Any global variables go here


//Main is hard wired as THE place to start calculating when input changes
//It does no calculations itself, it merely sets them up, sends off variables, gets results and, if necessary, plots them.
function Main() {
    saveSettings();

    //Send all the inputs as a structured object
    //If you need to convert to, say, SI units, do it here!
    const inputs = {
        r: sliders.Slider.value,
        Af:sliders.SlideAR.value,
        Kf: sliders.SlideKf.value,
        Kp: sliders.SlideKp.value,
    }

    //Get all the resonses as a map via set/get
    const result = CalcIt(inputs)

    //Set all the text box outputs
    document.getElementById('Sphericity').value = result.Sphericity
    document.getElementById('phic').value = result.phic
    //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 CalcIt!
}

//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({r,Af,Kf,Kp}) {
    let phic=(9.875*Af+Af*Af)/(7.742+14.61*Af+12.33*Math.pow(Af,1.5)+1.763*Af*Af+1.658*Af*Af*Af)
    let Sphericity=0.0035*(Af-1)*(Af-1)-0.0771*(Af-1)+1
    let n1=3/Sphericity-1
    const phim=0.6 //Not too critical at this level of accuracy
    const vcorr=Math.exp((phim-phic)/(phim-0))
    let TC=[],v=[]
    for (let phi=0;phi<=0.101;phi+=0.001)
    {
        //A pseudo-code to give a linear increase from 0.5 at 100nm to 1.5 at 5nm
        phir=phi*(1.5-0.01*r)
        TCc=((Kp+n1*Kf-n1*(Kf-Kp)*phir)/(Kp+n1*Kf+(Kf-Kp)*phir))
        vc=Math.exp((phim-phic)/(phim-phi))/vcorr
        if (phi>phic) {//A pseudo-code as a warning!
            TCc*=Math.pow(phi/phic,3)
            vc*=Math.pow(phi/phic,3)
        }
        TC.push({x:phi*100,y:TCc})
        v.push({x:phi*100,y:vc})
    }
 
 
    // //Now set up all the graphing data detail by detail.
    const prmap = {
        plotData: [TC,v], //An array of 1 or more datasets
        lineLabels: ['K_rel','η_rel'], //An array of labels for each dataset
        xLabel: "φ&%", //Label for the x axis, with an & to separate the units
        yLabel: "Relative& ", //Label for the y axis, with an & to separate the units
        y2Label: null, //Label for the y2 axis, null if not needed
        yAxisL1R2: [], //Array to say which axis each dataset goes on. Blank=Left=1
        logX: false, //Is the x-axis in log form?
        xTicks: undefined, //We can define a tick function if we're being fancy
        logY: false, //Is the y-axis in log form?
        yTicks: undefined, //We can define a tick function if we're being fancy
        legendPosition: 'top', //Where we want the legend - top, bottom, left, right
        xMinMax: [0,10], //Set min and max, e.g. [-10,100], leave one or both blank for auto
        yMinMax: [1,], //Set min and max, e.g. [-10,100], leave one or both blank for auto
        y2MinMax: [,], //Set min and max, e.g. [-10,100], leave one or both blank for auto
        xSigFigs: 'F2', //These are the sig figs for the Tooltip readout. A wide choice!
        ySigFigs: 'F2', //F for Fixed, P for Precision, E for exponential
    };

   //Now we return everything - text boxes, plot and the name of the canvas, which is 'canvas' for a single plot

    return {
        phic : phic.toFixed(2),
        Sphericity: Sphericity.toFixed(2),
        plots: [prmap],
        canvas: ['canvas'],
    }
}
            

In 18811 the great Maxwell gave the theory behind the rather obvious fact that if you add high thermal conductivity particles to lower conductivity fluids, the overall conductivity will increase, say 30% for a volume fraction φ = 5%. Given that heat exchangers etc. would benefit from higher thermal conductivities, this was a good idea in principle but useless in practice because large particles fell out of suspension.

Choi, at Argonne labs, cleverly took Maxwell's idea and replaced large particles with nanoparticles2. Now you could get that 30% increase with a relatively stable dispersion.

This modest idea led to a typical academic bandwagon with 1000s of papers on the wonders of nanofluids. When you read them you find muddle, exaggeration and a disregard for the practicalities. So although academics would say "Increased thermal conductivity is important for energy saving and efficiency" their published work would provide no pathway to real-world improvements.

There's a good reason for the small impact of 1000s of papers on the real world. The particles that more-or-less follow Maxwell give just 10, 20, 30% improvements, with an increase in viscosity that requires more pump energy and reduces convective cooling, with an extra cost of high quality, well-dispersed particles, worries about long-term stability of nanosuspensions, wear on pumps etc., all those real-world concerns. It's not generally worth it. The stability issue is very real - how do you keep nanoparticles happily dispersed for a decade? I'm sure there are some niches where the effects are worth it (I've read about coolants for racing cars - the nanoparticles only have to last one race.) - it's just that I've read large numbers of "in principle" papers and very few "this worked well in practice" ones.

But then there are the "anomalous" increases where you might get twice the conductivity, far more than expected from Maxwell. There are many academic fights about these but my take on it is that it's elementary rheology of higher aspect-ratio particles (see the High Shear Particles app) which, via percolation etc. can transmit more thermal energy but at the cost of unusably high viscosities. To repeat: thermal devices need to expend energy on pumping and benefit from convection. Higher viscosities are bad for both.

There are also fights about particle size. There is no agreement on the true effects and in the app I've just put in an illustrative increase as you go from 100nm down to 10nm. Sometimes you get an increase, sometimes not, sometimes there's a local maximum. I suspect that higher conductivities go with higher viscosities (i.e. association effects are involved) but lots of papers just focus on exciting effects rather than analyses relevant to real-world use.

There are many 10s of equations more sophisticated than Maxwell's early version, each saying that it's the best for modelling the phenomena. There are lists of "important factors" many of which contain the word "Brownian" used, as far as I can tell, as a magical incantation rather than providing deep insights. Many papers say that Brownian motion cannot and does not have an effect, others say it explains lots of things. It's a mess. For the app I've used the Hamilton-Crosser model which is basically Maxwell with a correction for Sphericity Ψ, via a shape factor n=ψ/3, but in order to link with rheology, I've done a rough correlation to allow Aspect Ratio as the input (all equations can be read by clicking the Show Code link). The formula for the thermal conductivity Krel relative to the working fluid depends on the particle conductivity Kp, the fluid conductivity Kf and the modified shape factor n1=n-1 is:

`K_(rel) = (K_p+n_1K_f-n_1φ(K_f-K_p))/(K_p+n_1K_f+φ(K_f-K_p))`

Typical values (in W/mK at ~25°C) for Kf are Water = 0.61 and ethylene glycol = 0.25. For Kp we have TiO2 = 9, Al2O3 = 40, CuO = 77, Au= 310, Cu = 400, Ag = 430. As you will find when you change parameters, the benefits of super-high conductivities are modest as the effect reaches a plateau.

Because viscosity is so important, I've used a viscosity model from the High Shear Particles app that takes into account φc which is the percolation threshold for the particles. This depends strongly on the Aspect ratio, so although a higher Aspect Ratio gives increased thermal conductivity, it also gives higher viscosity.

The calculations are only illustrative. A lot of the confusion in the literature (even for the workhorse standard, Al2O3) is surely due to lack of knowledge of or control of particle-particle interactions. It just takes a few kT to transform a low viscosity formulation with 20% increase in conductivity to a high viscosity one with 60% increase. To make sense of this comment, go to the Micro-Rheology app)

For those wondering about temperature effects, I'm not including them. These are complicated and, of course, controversial.

A note to the experts

If you disagree with my pessimistic view that nanofluids have been more of a bandwagon than a real attempt to improve working fluids, I'd be delighted to hear from you and correct/update the app accordingly.

1Maxwell, J. C., and W. D. Niven. 1881. A Treatise on Electricity and Magnetism,Clarendon Press Series. Oxford: Clarendon Press.

2Choi, S. U. S. 1995. Enhancing thermal conductivity of fluids with nanoparticles. Proceedings of the 1995 ASME International Mechanical Engineering Congress and Exposition, November 12–17, 1995, San Francisco, CA. New York: American Society of Mechanical Engineers.

3Hamilton, R. L., and Crosser, O. K. Thermal conductivity of heterogeneous two-component system. Industrial and Engineering Chemistry Fundamentals, 1, 1962: 187–191.