CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > OpenFOAM > OpenFOAM Running, Solving & CFD

externalWallHeatFluxTemperature when combining radiation and conduction

Register Blogs Community New Posts Updated Threads Search

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   April 9, 2020, 19:34
Default externalWallHeatFluxTemperature when combining radiation and conduction
  #1
New Member
 
Mohamed el Abbassi
Join Date: Oct 2016
Location: Delft, the Netherlands
Posts: 9
Rep Power: 10
melabbassi is on a distinguished road
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
Attached Images
File Type: png T_withoutSolidRegion.png (27.1 KB, 45 views)
File Type: png T_withSolidRegion.png (26.6 KB, 38 views)

Last edited by melabbassi; April 10, 2020 at 04:35.
melabbassi is offline   Reply With Quote

Old   April 12, 2020, 11:32
Default
  #2
New Member
 
Mohamed el Abbassi
Join Date: Oct 2016
Location: Delft, the Netherlands
Posts: 9
Rep Power: 10
melabbassi is on a distinguished road
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.
melabbassi is offline   Reply With Quote

Old   October 19, 2020, 21:01
Default
  #3
New Member
 
Vitor Geraldes
Join Date: Dec 2009
Location: Lisbon, Portugal
Posts: 26
Rep Power: 16
vitor.geraldes@ist.utl.pt is on a distinguished road
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);
vitor.geraldes@ist.utl.pt is offline   Reply With Quote

Old   December 1, 2020, 11:44
Default externaWallHeatFluxtemperature problem
  #4
New Member
 
Join Date: Mar 2015
Posts: 1
Rep Power: 0
acoppa is on a distinguished road
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
acoppa is offline   Reply With Quote

Old   August 20, 2024, 09:09
Default
  #5
New Member
 
Theo Firelli
Join Date: Aug 2024
Posts: 4
Rep Power: 2
Engineers_Firelli is on a distinguished road
This seems to have been solved in the latest versions of OpenFOAM (I've checked versions 11 and 12). The radiative heat transfer coefficient is calculated according to the method mentioned by vitor.geraldes and added to h:



const scalarField hp
(
1
/(
1
/(
(emissivity_ > 0)
? (
h_
+ emissivity_*sigma.value()
*((pow3(Ta) + pow3(Tp)) + Ta*Tp*(Ta + Tp))
)()
: h_
) + totalSolidRes
)
);




Explanation :

The heat flow (in W) between the wall (p) and the ambient (a) is calculated as:
Q_rad = emissivity * sigma * A * (Tp^4-Ta^4)


But we want to express it in the same form as a convective heat transfer, so that we can sum up the coefficients:
Q_rad = h_rad * A * (Tp-Ta)


We use the identity:
a^4 - b^4 = (a-b)(a^3 + a^2 * b + a * b^2 + b^3) = (a-b)(a^3 + b^3 + a*b*(a+b))



Replacing a with Tp and b with Ta, and setting both previous equations for Q_rad to be equal, we get:
h_rad = emissivity * sigma * (Tp^3 + Ta^3 + Tp*Ta*(Tp+Ta))


And this is the formula used in openfoam, as shown in the code above (externalTemperatureFvPatchScalarField.c from src/ThermophysicalTransportModels/coupledThermophysicalTransportModels/externalTemperature), we have:


1/hp = 1/(h+h_rad) + totalSolidRes



h accounts for convection between the wall and the ambient, h_rad for radiation between wall and ambient, and totalSolidRes for the conductive resistance of the wall.


So the externalWallHeatFluxTemperature BC should work fine.
Engineers_Firelli is offline   Reply With Quote

Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On



All times are GMT -4. The time now is 01:20.