CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM (
-   -   Problem with zeroGradient wall BC for temperature - Total temperature loss (

cboss May 6, 2010 07:11

Problem with zeroGradient wall BC for temperature - Total temperature loss
1 Attachment(s)
For quite a time I have some problems with adiabatic walls, which we set as 'zeroGradient' for temperature BC. If the total Temperature is calculated with Ttot=T+0.5*mag(U)^2/cp, it does not stay constant in the system, though there should be no heat flux at the walls. We calculated several cases and geometries with compressible flow and rhoSimpleFoam and sonicFoam for transonic cases. We generally use the k-omega-SST turbulence model with or without wall-functions.

I'll just add a total temperature plot of a simple test case, turbulent flow over a flat plate. Though the wall BC is 'zero gradient' for temperature, the total Temperature changes at the wall.

One can say, that this small change here can be caused by the turbulence model and perhaps the magnitude of U is somehow influenced by the model at the wall, which causes the total temperature change. But with geometries, that I don't want to post here, we have some serious errors in the temperature and total temperature field. So I think there is a problem in combination with the wall temperature BC.

My question would be, did somebody have a look at the conservation of total Temperature in cases, where no heat flux out of the domain should appear?


cboss May 17, 2010 02:59

Short update. The zeroGradient wall BC for the temperature seems not to be the problem. Last week I did a tube calculation and set the wall temperature to inlet total temperature. There is still a "loss" of total Temperature in the domain.

Perhaps there is some diffusion of heat through the outlet? Problem still not solved.


Chrisi1984 May 17, 2010 11:03

I observed preciously the same problem with my calculation. But I also could not find a solution yet. Perhabs we can tackle the problem together.
I once heard that too low relaxation factors caused an energy lost. What about your relaxation factors?

Best regards

cboss May 17, 2010 11:26

Nice to get a reply on this problem.
To answer your question first. For the latest tube calculation the relaxation factors were:

p 0.125;
U 0.875;
k 0.8;
omega 0.8;
h 0.8;

to get convergence.

At this point I have no idea, what causes the "loss" of total Temperature. If the error is not in the specified boundary conditions, the failure should be in the discretization or the numerical solution.
Discretization would mean fvSchemes, nOrthogonalCorrectors, mesh, ....
Solution would mean something like relaxationFactors, residuals, ....

But the point relaxationFactors seems to be interesting.


johannesk May 17, 2010 12:39

due to enthalpy equation?
I have been told that rhoSimpleFoam (and rhoPorousSimpleFoam) do have this exact behaviour because they solve the equation for static enthalpy not for total enthalpy.
In a case of a more complex internal flow, a colleague also observed that the total temperature towards the outlet is far lower than anticipated.

Unfortunately we did not yet have the time to dig into the code and double check the equation. (At first sight I do not recognize the equation as being correct or wrong.)


Chrisi1984 May 18, 2010 02:10

at Christoph: I think your relaxation factors should be alright.

The problem is mostly likely the implementation of the energy equation. I have yet noticed that the energy equation is only for static enthalpy. But how can I change the solver?
What must be additional written in file creationFields.H when I expand the energy equation?

Chrisi1984 May 21, 2010 02:37

hEqn changed
I modified hEqn like this:

volTensorField gradU = fvc::grad(U);

volTensorField tau =
- turbulence->muEff() * (gradU + gradU.T())

+ (2.0/3.0 * turbulence->muEff() * fvc::div(U)) * I;

volScalarField tauGradU = tau && gradU;

fvScalarMatrix hEqn
fvm::div(phi, h)
- fvm::Sp(fvc::div(phi), h)
- fvm::laplacian(turbulence->alphaEff(), h)
fvc::div(phi/fvc::interpolate(rho), p, "div(U,p)")
- p*fvc::div(phi/fvc::interpolate(rho))
- tauGradU

Now I have an increase of total Enthalpie of about 2%.That causes a too big temperature increase.
I think there is still missing a term.
Can someone help me?

Regards Chrisi

cboss May 21, 2010 02:45

Chris, Johannes,

to look at the energy equation, an perhaps also at the thermophysical model, seems to be a good idea.
I also agree, that the hEqn is solved for static enthalpy, as I cannot find any quadratic velocity terms. What now is quite unclear, if we assume, that the conservation of static enthalpy is ensured by the hEqn and everything else is correct, than the temperature in the domain should not change at all, as with a constant specific heat capacity a change in enthalpy would cause a change in temperature.?

@Chris: I have never edited a solver in this fundamental way. But I would stick to the hEqn.H and try to get the velocity in there. This will automatically give changed values of h. But I don't know how the equation should look like, and how to implement it in OF. At this point I am even not sure, if this will solve the problem. (see above)


prasant January 28, 2013 03:00

Hello Christoph,

Did you able to solve your problem? I am also getting the same issue which you are facing. Please let us know, If you resolved the temperature issue. I am using rhoPorousMRFSimpleFoam solver. And I am using totalTemperature Boundary condition at inlet.


helmut January 28, 2013 14:11

I had a similar problem and found I was losing heat by conduction at the inlet. My problem was solved by setting the thermal conductivity boundary condition at the inlet to fixedValue; value uniform 0;
Your results may vary :)

hrvig March 5, 2015 07:57

I had the same problem for the temperature distribution in a simple pipe flow. I manage to get it right by simply changing the BC's at outlet from zeroGradient to inletOutlet type BC's for U and T :-)

All times are GMT -4. The time now is 14:29.