CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM Running, Solving & CFD (
-   -   Beginner needs help with BCs and solver (

homerun4711 June 4, 2011 18:23

Beginner needs help with BCs and solver
1 Attachment(s)

I am quite new to OpenFOAM and trying to figure out if OpenFOAM
could be used for a project my company is working on. I personally like
the program because of its clear and simple syntax and its configuration
via human-readable text files.
And I would like to use it for our calculations if it fits our needs.

Till now I finished some tutorials I found in the users guide and in the
internet. I found only little information on heat transfer and heat
conduction and I am a bit confused of all the solvers around. :)

I attached a picture showing our system and the BCs we need.
It is a 2D cut through a cooling tower.

Is there a solver that fits all my needs or do I have to start a new one?
And which border conditions will fit our needs?

You donīt have do write long explanations, I would be thankful if you
could just push me in the right directions. Any information is welcome.

Kind regards,

tH3f0rC3 June 5, 2011 16:06


I now that I have read about the Solver chtMultiRegionRadFoam. Someone has added radiation to chtMultiRegionFoam-Solver.
The chtMultiRegionFoam-Solver is a transient solver for heat transfer. ->

I think you can use the solver chtMultiRegionRadFoam for your problem. But I don't know if this solver is used for complex geometries because I know that this solver was tested only to simple geometries.

I hope my response was helpful,

Best Regards,

akidess June 6, 2011 03:14

I don't think chtMultiRegionFoam is the right tool for this purpose. The way I understand it you only want to simulate the heat transfer within the wall, and use special boundary conditions on the surface. Is that right? In that case the solver you want is just scalarTransportFoam, and add the right BCs. groovyBC is always worth a look if the built in BCs aren't enough, as it might be the case for your radiation + convection boundary.

homerun4711 June 6, 2011 04:15


Thanks for your answers.

I guess chtMultiRegionRadFoam is for solids in contact with fluids.
This is not neccessary so far.
Our first model should only include a fixed heat flux to the air
inside the tower. Maybe later we will include that, too.

I had a look into scalarTransportFoam and laplacianFoam and the difference
between them is that laplacianFoam misses

+ fvm::div(phi, T)

in the equation definition.

I looked it up in my heat transfer text book, but could not find it.
What does this part of the heat equation stand for?

Is it possible to add multiple boundary conditions to the same border
in OpenFOAM or is it neccessary to use the mentioned groovyBC in
that case?

akidess June 6, 2011 04:27

Very good - the term div(phi,T) is the convective term of the transport equation, and since you are looking at a solid laplacianFoam is indeed what you need! (phi is a flux obtained by multiplying the fluid velocity with a cell face area).

You can only specify one boundary condition per variable and border.

By the way, you can mesh your geometry with hexahedral cells without too much effort, and it will improve the convergence of your calculations. It won't make a huge difference because this problem is fairly easy to solve, but it might come in handy if you want to do a big batch of calculations.

homerun4711 June 6, 2011 11:23

Ok, so I can only specify one bc per boundary. Argh.
I am a bit lost right now, because I do not know if it
is possible at all to set all three BCs using groovyBC.
Is it?
So far I only read about people using it to set convection
of heat to the ambient temperature...

In principle all BCs I need are heat fluxes (solar in, convection out, radiation out). And I guess we do not need a complicated radiation model
like P1 or DOM. Just adding a heat flux like

P = sigma_Boltzmann * ViewFactor * (T_inf - T_surface)

would do the trick.(In our case the viewfactor would be 0.5)

Also convection would be a constant factor in the first case.
Just some value from a lookup-table (10 W/m^2).

Any ideas what I could do?

akidess June 7, 2011 03:59

It should be possible to do this with groovyBC. Just take a sheet of paper and write down all contributions to the wall heat flux (q = q_sun - q_conv - q_rad). Once you have a nice formula for the total heat flux, have a look at how people write a convection BC with groovyBC and it should be straightforward to extend that with the other two fluxes.

homerun4711 June 7, 2011 04:28

Ok, sounds good :)

But there is still the problem that one of the heat fluxes, the sun irradiation,
is trasient and written in a text file. So far I could not figure out
if groovyBC can deal with this. Can you tell me if this is possible?

akidess June 7, 2011 04:50

You could certainly approximate your datapoints by a polynomial function and then put it into groovyBC, but I think the BC can also read timelines from a file - see

I've never used that particular functionality so I can't help you much on how to use it, but maybe the example on the wiki is enough to get you started.

homerun4711 June 7, 2011 08:22

Ok, that looks good.
One must have eagle eyes to find that :)
Thank you very much!

All times are GMT -4. The time now is 17:04.