CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM Running, Solving & CFD (
-   -   Adding a momentum source term (

segersson May 19, 2005 12:43

Hi, I'm trying to model air f
I'm trying to model air flow through vegetation and need to add a negative source term to the momentum equation in simpleFoam. I would appreciate some advice to get this right (I'm quite new to OpenFOAM...).

For the different directions the source term is:
Sx = -0.5*rho*Cd*abs(u)*u
Sy = -0.5*rho*Cd*abs(v)*v
Sz = ...
,where Cd is a constant.

My questions are:
1. After I have created a volScalarField for Cd, how can I express the term in OpenFOAM in a nice way?
( S = -0.5*rho*Cd*U&U gives me the wrong sign I guess...)

3. Is it correct to insert the source term in simpleFoam.C as:

solve(UEqn() == S -fvc::grad(p));

Do I have to include the source term anywhere else in the SIMPLE algorithm?

3. If I want the term to be explicit, are there any advantage in using the SuSp(..,..) function?


henry May 19, 2005 12:53

Basically you are adding a dra
Basically you are adding a drag term in which case you should make it implicit using fvm::Sp. Is the drag coefficient a scalar or should it be tensorial to take into account anisotropy? If scalar I think your source term should be

-fvm::Sp(0.5*rho*Cd*mag(U), U)

and remember to include it in the momentum equation construction not in

solve(UEqn() == S -fvc::grad(p));

otherwise the pressure equation will not "see" the drag term at all.

chafi_fatima_zohra May 20, 2005 11:17

hi, I added the energy equati
I added the energy equation in icoFoam, this equation depends, obviously, the rates of flow: u, v and w. my questions are:

1- how to add a source term in the momentum equation only in z direction?

2- this source term does not depend on velocity but it depends on the temperature: g*beta*(T-Tref) (approximation of Boussinesq), icoFoam can it solve equation(equation of movement coupled with the equation of energy)?

thank you in advance for your assistance


henry May 20, 2005 11:31

Create g as a dimensionedVecto
Create g as a dimensionedVector then g*beta*(T-Tref) will be a volVectorField containing components only in the g-direction and this can be added as a source term to the momentum equation.

You will have to think carefully about the pressure boundary conditions because zero-gradient on walls will no longer be appropriate. Alternatively you can use the approach in the buoyant-flow codes I have already written in which a "dynamic-pressure" pd is used which is p - rho*(g&h) which avoids some of the issues to do with the pressure boundary conditions as well as potential solution staggering that can occur on collocated meshes.

chafi_fatima_zohra May 20, 2005 13:23

hi, I will apply what you h

I will apply what you have suggest me.

thank you

liugx212 March 3, 2006 00:06

Dear chafi fatima zohra: I
Dear chafi fatima zohra:

I have the same question about how to add the source term in cavity case of icoFoam. Could you please give some advice please?

Thanks a lot.

Best wishes,

All times are GMT -4. The time now is 15:51.