CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Programming & Development (https://www.cfd-online.com/Forums/openfoam-programming-development/)
-   -   heat transfer equation of parcel (https://www.cfd-online.com/Forums/openfoam-programming-development/149673-heat-transfer-equation-parcel.html)

wolfindark March 6, 2015 06:12

heat transfer equation of parcel
 
Dear All

Could you please write mathematical formulation of heat transfer equation for a droplet?

It is interpreted as follows in src/lagrangian/intermediate/parcels/Templates/ThermoParcel.C

Code:

template<class ParcelType>
template<class TrackData>
Foam::scalar Foam::ThermoParcel<ParcelType>::calcHeatTransfer
(
    TrackData& td,
    const scalar dt,
    const label cellI,
    const scalar Re,
    const scalar Pr,
    const scalar kappa,
    const scalar NCpW,
    const scalar Sh,
    scalar& dhsTrans,
    scalar& Sph
)
{
    if (!td.cloud().heatTransfer().active())
    {
        return T_;
    }

    const scalar d = this->d();
    const scalar rho = this->rho();

    // Calc heat transfer coefficient
    scalar htc = td.cloud().heatTransfer().htc(d, Re, Pr, kappa, NCpW);

    if (mag(htc) < ROOTVSMALL && !td.cloud().radiation())
    {
        return
            max
            (
                T_ + dt*Sh/(this->volume(d)*rho*Cp_),
                td.cloud().constProps().TMin()
            );
    }

    htc = max(htc, ROOTVSMALL);
    const scalar As = this->areaS(d);

    scalar ap = Tc_ + Sh/As/htc;
    scalar bp = 6.0*(Sh/As + htc*(Tc_ - T_));
    if (td.cloud().radiation())
    {
        tetIndices tetIs = this->currentTetIndices();
        const scalar Gc = td.GInterp().interpolate(this->position(), tetIs);
        const scalar sigma = physicoChemical::sigma.value();
        const scalar epsilon = td.cloud().constProps().epsilon0();

        ap = (ap + epsilon*Gc/(4.0*htc))/(1.0 + epsilon*sigma*pow3(T_)/htc);
        bp += 6.0*(epsilon*(Gc/4.0 - sigma*pow4(T_)));
    }
    bp /= rho*d*Cp_*(ap - T_) + ROOTVSMALL;

    // Integrate to find the new parcel temperature
    IntegrationScheme<scalar>::integrationResult Tres =
        td.cloud().TIntegrator().integrate(T_, dt, ap*bp, bp);

    scalar Tnew =
        min
        (
            max
            (
                Tres.value(),
                td.cloud().constProps().TMin()
            ),
            td.cloud().constProps().TMax()
        );

    Sph = dt*htc*As;

    dhsTrans += Sph*(Tres.average() - Tc_);

    return Tnew;
}


amirhoshangm June 23, 2016 04:24

Dear Neilson,

Have you found any mathematics formulation for parcel energy balance or any reference that the model is written based on?

Regards,

DustExplosion November 24, 2016 09:49

One note here is that Spu, Sh, Sph, and dhstrans are all passed in as zeros to the calcHeatTransfer function. That starts to get you close to something that looks like the textbook equations, but I am still working on it.

DustExplosion December 9, 2016 08:54

As you look more you learn more.

Sh, Sph, ext are only passed in as zero when the parcels are defined as a thermoCloud. ReactingCloud and ReactingMultiphaseCloud may pass in nonzero values.


All times are GMT -4. The time now is 00:26.