CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Running, Solving & CFD (https://www.cfd-online.com/Forums/openfoam-solving/)
-   -   externalWallHeatFluxTemperature when combining radiation and conduction (https://www.cfd-online.com/Forums/openfoam-solving/225850-externalwallheatfluxtemperature-when-combining-radiation-conduction.html)

melabbassi April 9, 2020 20:34

externalWallHeatFluxTemperature when combining radiation and conduction
 
2 Attachment(s)
Hi foamers,

There is a problem when applying both external radiation and solid heat resistance when using externalWallHeatFluxTemperature.

I'm simulating a combustion process in a horizontal cylindrical furnace using chtMultiRegionFoam in OpenFOAM-v5.0. This furnace is located outside and the wall of the furnace loses its heat to the environment via thermal radiation and convection. Since the solid wall region surrounds the cylindrical gas region, the solid could be replaced by the advanced boundary condition externalWallHeatFluxTemperature, and then you only have to simulate the gas region.


So with a solid region the BC for the outer wall patch is:

Code:

wallExternal
    {
        type            externalWallHeatFluxTemperature;
        mode            coefficient;
        kappaMethod    solidThermo;
        h              uniform 1;
        Ta              constant 293;
        emissivity      0.85;
        qr              none;
        value          600;
    }


And without the solid region (but wall thermal resistance included), the BC at the inner wall patch is:
Code:

wallInternal
    {
        type            externalWallHeatFluxTemperature;
        mode            coefficient;
        kappaMethod    fluidThermo;
        h              uniform 1;
        Ta              constant 293;
        emissivity      0.85;
        qr              qr;
        thicknessLayers List<scalar> 1(0.19);
        kappaLayers    List<scalar> 1(2.1);

        value          1200;
    }


However, for the case without the solid region. The gas temperature increases dramatically compared to the case with solid region, which doesn't make sense at all. I attached two plots of temperature against # of iterations for both cases to illustrate the difference in average outlet temperature.

When looking at the source code I find it difficult to understand how the solid thermal resistance is incorporated when thermal radiation is activated. Can someone please explain to me what is happening here (second if-scope)? I think that something is wrong here.

Code:

            if (emissivity_ > 0)
            {
                // Evaluate the radiative flux to the environment
                // from the surface temperature ...
                if (totalSolidRes > 0)
                {
                    // ... including the effect of the solid wall thermal
                    // resistance
                    scalarField TpLambda(h_/(h_ + 1/totalSolidRes));
                    scalarField Ts(TpLambda*Tp + (1 - TpLambda)*Ta);
                    scalarField lambdaTa4(pow4((1 - TpLambda)*Ta));

                    hp += emissivity_*sigma.value()*(pow4(Ts) - lambdaTa4)/Tp;
                    hpTa += emissivity_*sigma.value()*(lambdaTa4 + pow4(Ta));

                }
                else
                {
                    // ... if there is no solid wall thermal resistance use
                    // the current wall temperature
                    hp += emissivity_*sigma.value()*pow3(Tp);
                    hpTa += emissivity_*sigma.value()*pow4(Ta);
                }
            }

Thanks in advance,
Mohamed

melabbassi April 12, 2020 12:32

If I exclude radiation (emissivity = 0) and make the convective heat transfer coefficient big enough (say h = 20), then I get the same result with and without the solid region. Also in the source code it makes sense and we see the familiar composition of convection and conduction to determine the overall heat transfer coefficient hp.

Code:

case fixedHeatTransferCoeff:
        {
            scalar totalSolidRes = 0;
            if (thicknessLayers_.size())
            {
                forAll(thicknessLayers_, iLayer)
                {
                    const scalar l = thicknessLayers_[iLayer];
                    if (kappaLayers_[iLayer] > 0)
                    {
                        totalSolidRes += l/kappaLayers_[iLayer];
                    }
                }
            }
            scalarField hp(1/(1/h_ + totalSolidRes));

            const scalar Ta = Ta_->value(this->db().time().timeOutputValue());
            scalarField hpTa(hp*Ta);

However I couldn't find the theory to understand how the overall heat transfer coefficient with radiation and conduction is determined in the code.

vitor.geraldes@ist.utl.pt October 19, 2020 22:01

I had the same problem with OpenFOAM-8. The radiation term of the BC seem to not work well. I used the classic approach of considering that the heat transfer coefficient from radiation if given by:
qrad = h_rad (Ta-Tp),
where h_rad = sigma*emissivity*(Ta^4-Tp^4)/(Ta-Tp)
The total heat flux is then given by:
q = h (Ta-Tp) + h_rad (Ta-Tp)

= (h + h_rad)*(Ta-Tp)


We can then replace h by (h+h_rad). This approach should work fine if the difference between Ta and Tp is no very high.


Using this approach, I have replaced the following code:


// scalarField hp(1/(1/h_ + totalSolidRes));
//
// const scalar Ta = //Ta_->value(this->db().time().timeOutputValue());
// scalarField hpTa(hp*Ta);

// if (emissivity_ > 0)
// {
// // Evaluate the radiative flux to the environment
// // from the surface temperature ...
// if (totalSolidRes > 0)
// {
// // ... including the effect of the solid wall thermal
// // resistance
// scalarField TpLambda(h_/(h_ + 1/totalSolidRes));
// scalarField Ts(TpLambda*Tp + (1 - TpLambda)*Ta);
// scalarField lambdaTa4(pow4((1 - TpLambda)*Ta));
//
// hp += emissivity_*sigma.value()*(pow4(Ts) - lambdaTa4)/Tp;
// hpTa += emissivity_*sigma.value()*(lambdaTa4 + pow4(Ta));
// }
// else
// {
// // ... if there is no solid wall thermal resistance use
// // the current wall temperature
// hp += emissivity_*sigma.value()*pow3(Tp);
// hpTa += emissivity_*sigma.value()*pow4(Ta);
// }
// }


by


const scalar Ta = Ta_->value(this->db().time().timeOutputValue());
scalarField hp(1/(
1/(
h_+emissivity_*sigma.value()*(pow4(Ta)-pow4(Tp))/(Ta-Tp+VSMALL)
) + totalSolidRes
)

);

scalarField hpTa(hp*Ta);

acoppa December 1, 2020 12:44

externaWallHeatFluxtemperature problem
 
from my experience with openFoam7, it is impossible to submit radiative flux and convective flux at the same time on a patch with externaWallHeatFluxtemperature.
it's a pity. Such a BC corresponds to a standard case: A heated solid in air exchanging both with radiation and convection. With such BC , it would be possible to calculate the exchange with air without meshing the air region


All times are GMT -4. The time now is 21:41.