|
[Sponsors] |
externalWallHeatFluxTemperature when combining radiation and conduction |
![]() |
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
![]() |
![]() |
#1 |
New Member
Mohamed el Abbassi
Join Date: Oct 2016
Location: Delft, the Netherlands
Posts: 8
Rep Power: 6 ![]() |
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); } } Mohamed Last edited by melabbassi; April 10, 2020 at 05:35. |
|
![]() |
![]() |
![]() |
![]() |
#2 |
New Member
Mohamed el Abbassi
Join Date: Oct 2016
Location: Delft, the Netherlands
Posts: 8
Rep Power: 6 ![]() |
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); |
|
![]() |
![]() |
![]() |
![]() |
#3 |
New Member
Vitor Geraldes
Join Date: Dec 2009
Location: Lisbon, Portugal
Posts: 26
Rep Power: 13 ![]() |
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); |
|
![]() |
![]() |
![]() |
![]() |
#4 |
New Member
Join Date: Mar 2015
Posts: 1
Rep Power: 0 ![]() |
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 |
|
![]() |
![]() |
![]() |
Thread Tools | Search this Thread |
Display Modes | |
|
|