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/)
-   -   Thin Wall Heat Transfer BC for rhoSimpleFoam (https://www.cfd-online.com/Forums/openfoam-solving/79824-thin-wall-heat-transfer-bc-rhosimplefoam.html)

swahono September 5, 2010 22:18

Thin Wall Heat Transfer BC for rhoSimpleFoam
 
Good afternoon everyone!

I'm just starting to look at using OpenFOAM to solve a heat transfer problem across a 'thin' (thickness approaching zero) wall in a high Re compressible flow.
I am using the rhoSimpleFoam solver, and I don't currently have a separate solid mesh for the wall.

I have problem with specifying a wall BC for temperature that will solve the heat transfer across a thin wall (conjugate fluid-solid heat transfer) without having a separate mesh for the solid.

Specifying zeroGradient BC at the wall led to the wall being treated as an adiabatic wall.
The appropriate temperature BC at the wall should be constant heat flux across the wall.

I think Fluent does the heat transfer across the wall somehow by creating the 'shadow' wall, and then mapping the temperature on one side to the other side of the wall, and solve using an outer iteration to satisfy the constant heat flux condition across the wall.

Can anyone please help me if there is already an existing BC with OF that does this?

Thank you very much for your help.

Best regards,
Stefano

swahono September 5, 2010 22:27

I think I need to clarify this further.

The amount of heat flux through the wall is dependant on the flow solution.

Chrisi1984 September 6, 2010 07:38

Hi Stefano,

I used "groovyBC" to solve the problem you described. Here http://openfoamwiki.net/index.php/Co...s_are_defined:
you can read how to use this boundary condition. But there are also many threads around groovyBC in this forum.

For a thin wall with convective and radiative heat loss, my boundary is:

Quote:

wall
{
type groovyBC;
value uniform 613.15;
gradientExpression "gradT";
fractionExpression "0";
variables "Cp=-7.042064689*pow(10,-8)*T*T*T+1.040574732*pow(10,-4)*T*T+1.955987737*0.1*T+911.897060;alphaa=10;Tinf =310;d=0.015;lambda=17.6;sigma=5.67e-8;emissivity=0.5;Trad=293.15;heatFlux1=alphaa*(Tin f-T)+emissivity*sigma*(pow(Trad,4)-pow(T,4));Tw1=heatFlux1*(d/lambda+1/Cp*alphaEff)+T;heatFlux2=alphaa*(Tinf-Tw1)+emissivity*sigma*(pow(Trad,4)-pow(Tw1,4));Tw2=heatFlux2*(d/lambda+1/Cp*alphaEff)+T;heatFlux3=alphaa*(Tinf-Tw2)+emissivity*sigma*(pow(Trad,4)-pow(Tw2,4));Tw3=heatFlux3*(d/lambda+1/Cp*alphaEff)+T;heatFlux4=alphaa*(Tinf-Tw3)+emissivity*sigma*(pow(Trad,4)-pow(Tw3,4));Tw4=heatFlux4*(d/lambda+1/Cp*alphaEff)+T;heatFlux5=alphaa*(Tinf-Tw4)+emissivity*sigma*(pow(Trad,4)-pow(Tw4,4));Tw5=heatFlux5*(d/lambda+1/Cp*alphaEff)+T;heatFlux6=alphaa*(Tinf-Tw5)+emissivity*sigma*(pow(Trad,4)-pow(Tw5,4));Tw6=heatFlux6*(d/lambda+1/Cp*alphaEff)+T;heatFlux7=alphaa*(Tinf-Tw6)+emissivity*sigma*(pow(Trad,4)-pow(Tw6,4));gradT=heatFlux7/(Cp*alphaEff);";
timelines (
);
}
Best regards Chrisi

swahono September 6, 2010 21:18

Hi Chrisi,

Thank you very much for your quick reply.
That looks like a complex radiation heat trf model!
Yes, I have been looking in the forum, and it seems that the most commonly used BC for the thin wall heat trf is the groovyBC.

May I ask you several things regarding your thin wall BC?
1) where is alphaEff value being assigned?
2) I assume Cp is of the fluid?
3) What is alphaa?

In my case, Tinf differs on both sides of the wall.

--> Hot flow, T_HOT ~ 600 C, MACH=0.5
=============THIN=STAINLESS=STEEL=WALL=========
--> Cold flow, T_COLD ~ 50 C, MACH = 0.1

4) So, what do you think is the appropriate value of Tinf and Trad in this case?

5) I assumed your BC does not incorporate the effect of convective heat transfer (i.e conv heat trf coeff and local Nusselt No)?

So, basically this BC is similar to the 'fixedGradient' type, however with the ability to calculate and update the temperature gradient at the two sides of the 'wall' at every flow iteration?

Thank you very much, again.
I think OF is missing a very important feature here, a feature which has been taken for granted when using FLUENT :(

Best Regards,
Stefano

Chrisi1984 September 7, 2010 07:06

Hi Stefano,

alphaEff=(alpha_lam+alphat) is derived and need not be defined.

cp is of the fluid (here air)

alphaa is the heat transfer coefficient of the outer surface of the pipe.

The boundary incorporate the effect of convection. It is a mixed boundary out of radiation and convection.

For your temperatures, I do not exactly know how your case looks like, so I cannot give any advice for them.

Regards Chrisi

swahono September 9, 2010 00:00

Thanks for your patience and help, Chrisi!

I will try this BC and let you know.

Best regards,
Stefano

swahono September 15, 2010 01:53

Hi Chrisi,

I have tested your thin wall heat transfer BC on rhoSimpleFoam using a simple case. The resulting 'wall temperature' is different to that calculated using Fluent.

I found that the calculated wall temperature is sensitive to the 'given value of Tinf and Trad. From looking at your eqn, I know that Tinf and Trad is just an 'initial guess' value used to calculate the qDOT. The wall Ts is then improved using the seven qDot equations (or iterations). ==> Is my understanding correct?

If yes, then I don't understand why the resulting wall Ts is sensitive to the Tinf and Trad?

Maybe Tinf and Trad should be read from internalField at every flow iteration?

What determines the Tinf and Trad you use?

Should we use another value of 'valueFraction'?

Thank you very much.

Best Regards,
Stefano



P.S
Yes, you are right, alphaeff is calculated in the solution, and it accounts for the heat convection.

Chrisi1984 September 15, 2010 04:11

Hi!

Tinf is the air temperature of the environment which cools or heats your boundary.

Trad is the radiation temperature of your environment which can be different to the air temperature.

Both temperatures are not initial guesses. This are fixed values for your environment.

The temperatures Tw are calculated iterative . And Tw1 is an initial guess to get a first approximation for the wall temperature. The wall temperature is needed to calculate the mass-flux.

I hope I could hepl you.

Regards Chrisi

alfa_8C November 16, 2010 09:31

Hello Chrisi & Swahono,

your calculation domains contain internal walls.
How do you create your mesh? I tried to convert a 3Dfluent mesh with internal walls using the option "writeSets". This is possible for the fluentMeshToFoam converter and unfortunately NOT for fluent3DMeshToFoam. But I need to convert 3D Meshes. So do you have an idea, how deal with a 3DMesh having internal walls?

Second Question.
I'm using groovyBC as well. Also for heatFlux problems and it looks like this:

SURFACE_SOURCE
{
type groovyBC;
value uniform 283;
valueExpression "283";
gradientExpression "gradT";
fractionExpression "0";
variables "heatFlux=2000;Cp0=1005;rho0=1.18;gradT=heatFl ux/(alphaEff * Cp0 * rho0);";
timelines (
);
}

Up to now I used it in models without radiation. As soon as radiation is implemented the solver gives you the following error:

--> FOAM FATAL ERROR:
Parser Error at "1.11-18" :"field alphaEff not existing or of wrong type"
"heatFlux/(alphaEff * Cp0 * rho0)"
" ^^^^^^^^ "

From function parsingValue
in file PatchValueExpressionDriver.C at line 188.

Does anybody have a clue, where this problem could come from?

I compared the appearance of alphaEff in buoyantSimpleFoam and in buoyantSimpleRadiationFoam. The appearance is exactly the same!!

Thanx in advance for any hints!
Tony

ahmmedshakil April 2, 2013 20:15

The problem is in the declaration:FOAM FATAL ERROR:
Parser Error at "1.11-18" :"field alphaEff not existing or of wrong type"
"heatFlux/(alphaEff * Cp0 * rho0)"
" ^^^^^^^^ "
--- you've not declared "alphaEff" in the variables
--- and one parsing error of --> 1.11-18 to be 1.11e-18

Chrisi1984 April 3, 2013 15:03

Dear all.

Due to some diverging problems, I modified the bc a little bit. It now looks that way:

Quote:

type groovyBC;
value uniform 653.15;
gradientExpression "(T<300) ? -gradT/4 : gradT";
fractionExpression "0";
variables "Cp=-7.042064689*pow(10,-8)*T*T*T+1.040574732*pow(10,-4)*T*T+1.955987737*0.1*T+911.897060;alphaa=20;Tinf =300;d=0.015;l=23;s=5.67e-8;e=0.2;Trad=300;Tw0=(1-e)*Trad+e*T;heatFlux1=alphaa*(Tinf-T)+e*s*(pow(Trad,4)-pow(Tw0,4));Tw1=heatFlux1*(d/l+1/Cp*alphaEff)+T;heatFlux2=alphaa*(Tinf-Tw1)+e*s*(pow(Trad,4)-pow(Tw1,4));heatFlux3=(heatFlux1+heatFlux2)/2;Tw3=heatFlux3*(d/l+1/Cp*alphaEff)+T;heatFlux4=alphaa*(Tinf-Tw3)+e*s*(pow(Trad,4)-pow(Tw3,4));heatFlux5=(heatFlux3+heatFlux4)/2;Tw5=heatFlux5*(d/l+1/Cp*alphaEff)+T;heatFlux6=alphaa*(Tinf-Tw5)+e*s*(pow(Trad,4)-pow(Tw5,4));heatFlux7=(heatFlux6+heatFlux5)/2;gradT=heatFlux7/(Cp*alphaEff);";
timelines (
);
}
One additional remark:

alphaEff is derived from the used solver. I used that bc for the simplePorousFoam solver.

Kind regards

Chrisi

Mojtaba.a September 6, 2013 12:31

Quote:

Originally Posted by Chrisi1984 (Post 418164)
Dear all.

Due to some diverging problems, I modified the bc a little bit. It now looks that way:



One additional remark:

alphaEff is derived from the used solver. I used that bc for the simplePorousFoam solver.

Kind regards

Chrisi

Dear Chrisi, Do you have any reference for this?

What are Tw, d and l?
Why you are iterating the procedure to find heatFlux7?

Thank you,
Mojtaba

Chrisi1984 October 4, 2013 11:49

Hi,

Tw is the wall temperature

d is the wall thickness

l is the thermal conductivity of the wall.


The reason for the iterative solution is that you cannot calculate the heatflux through the wall from scratch. It depends on the adjusting wall temperature, which I calculate iteratively.

I am sorry but I do not have any reference for that measure. I just compared the received results with FLUENT. That showed good agreement.

Kind regards

Chrisi


All times are GMT -4. The time now is 11:33.