CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM Running, Solving & CFD (
-   -   BoussinesqApproximation for incompressible flow (

henry July 12, 2005 10:30

You must either move the g
You must either move the


term into the UEqn construction statement

fvVectorMatrix UEqn

or also include the term in the flux prediction by including it in

U = UEqn.H()/A;

and remove it from the momentum correction statement

U -= fvc::grad(p)/A + (g*alpha*(T-TRef))/A;

ccless June 9, 2006 16:21

Christian, have you had any lu
Christian, have you had any luck? I have been thinking about a boussinesq solver, but haven't had enough time to write it. Does yours work and if so, what tricks did you use to get it up and running. Thanks

mkk August 2, 2006 09:36

Hi, we also want to build a

we also want to build a boussinesq-approximation.
You wrote your solver in the version 1.2. Am I right?
We changed your idea, so it could work in 1.3.
But we had a problem with the line:
what type is TRef and T and where you definded it?

Thanks Martin

tehache February 16, 2007 12:34

Hi, also trying to get an i

also trying to get an incompressible boussinesq-approx. solver running ...
I got something working, basically what Christian has posted, with the corrections by Henry.
Works mostly, but sometimes I get problems at boundaries (using a zeroGradient B.C. for pressure) I thought I needed a pressure boundary condition, and implemented one similar to the existing wallBuoyantPressure - just computing the pressure gradient as g*beta*(T-TRef)
Also at first glance seemed to work, gives a smooth looking pressure field, but then I realized strange vectors and pressures at the pressure reference cell, finally calculations diverge. Fixing pressure at some boundary, instead of using pEqn.setReference(pRefCell, pRefValue), works. Not setting a pressure reference the pressure solver (AMG or ICCG) diverges.

almost forgot - using OpenFOAM 1.3

Any hint would be greatly appreciated...

Thank you !


hjasak March 17, 2007 15:23

For the lazy ones out there, I
For the lazy ones out there, I have written a Boussinesq approximation incompressible buoyant flow solver with constant material properties. You can get it from the link below, including a tutorial case:


Currently, it is laminar and quite easy to understand, it will swallow the wall bouyant pressure b.c. and I think it's a pretty decent example. Extensions to turbulent, real material properties etc are straightforward but uninteresting (for me!).



rafal March 17, 2007 18:19

This link is dead.
This link is dead.

hjasak March 17, 2007 19:26

Stupid, sorry: boussinesqBuoya
Stupid, sorry: boussinesqBuoyantFoam



tehache May 16, 2007 09:19

Hrvoje, From one of the laz

From one of the lazy ones:

Your implementation suffers the same problems (mass conservation fluxes at walls not parallel to gravity and not at reference temperature).
You can see it if you make your cavity hot at bottom, cold on top, and adiabatic sidewalls.

A pressure B.C. computing pressure gradient as g*beta*(T-TRef), but without contribution to mass fluxes, works.

There is also no need to have an extra density field - which for me is the main point of the Boussinesq approximation.



gmc_salta March 7, 2008 09:01

Hrvoje, we tried to get your
we tried to get your Boussinesq approximation incompressible buoyant flow solver, but we get the following message
The page cannot be found
We wait your help...


hjasak March 7, 2008 13:36

Sorry, probably got deleted: t
Sorry, probably got deleted: try it from SVN: nFOAM-1.4.1-dev/applications/solvers/heatTransfer/boussinesqBuoyantFoam/


gmc_salta March 10, 2008 06:47

Hi,Hrvoje Thank you for your
Thank you for your help, We can download your files.
We start working on this case.

tian August 13, 2008 09:41

Hi, somebody created a bous

somebody created a boussinesq approximation solver with turbulent already and can share it with me? Thanks a lot.


hjasak August 14, 2008 16:53

Yes: have a look at: http:/
Yes: have a look at: nFOAM-1.4.1-dev/applications/solvers/heatTransfer/boussinesqBuoyantFoam/

tian August 15, 2008 03:23

Hi Hrvoje, this solver is f
Hi Hrvoje,

this solver is for buoyancy-driven laminar flow. I like to try the boussinesq approximation with turbulent flow.


imano August 15, 2008 05:14

Hi Thomas, I just wrote Wik
Hi Thomas,

I just wrote Wiki page of Boussinesq-Approximation solver for turbulent flow.

Also I wrote Wiki page of tutorial case using this solver.



tian August 15, 2008 05:46

Hi Masashi, thanks a lot! A
Hi Masashi,

thanks a lot! Arigato


braennstroem August 15, 2008 08:02

Hi Masashi, nice work! I like
Hi Masashi,
nice work! I like your tutorial with the makefile and the python meshing :-)


braennstroem August 18, 2008 10:04

Hi Masashi, I have a quest
Hi Masashi,

I have a question about your implementation of the temperature
equation. As I get it, you add a defined heat flux to the equation,
which is activated by the internal field of Q!? I tried a more general
approach by defining a heat flux b.c. using:

const boussinesq::RASModel& RAS = db().lookupObject<boussinesq::rasmodel>("RASProper ties");

scalarField nuEffWall = RAS.nuEff()().boundaryField()[patch().patch().index()];
scalarField alphaEffWall = nuEffWall /Prt;

Based on your added b.c. one could use:

type fixedHeatFlux;
heatFlux 5.0;
gradient uniform 200;

Though I am not sure yet, how to validate this b.c. with a really simple
setup!? And right now, it is a static Prt, Cp0 and rho
implementation. Does anyone know, how to get those value by a

I got one more question about the wall function. Is it correct, that as
long as one uses a constant Pr model is used, the wall effects are all
included in the turbulence model and no separate treatment for the
temperature near-wall behavior is needed?


imano August 18, 2008 11:42

Hi Fabian, It seems that f
Hi Fabian,

It seems that fixedHeatFluxFvPatchScalarField.[C,H] are not attached
properly in your previous post. So please attach them again!


braennstroem August 18, 2008 13:21

oh fixedHeatFluxFvPatchScalarField.C fixedHeatFluxFvPatchScalarField.H

All times are GMT -4. The time now is 21:56.