CFD Online Discussion Forums

CFD Online Discussion Forums (
-   Main CFD Forum (
-   -   SMAC (

Tee March 6, 2001 02:09


While using SMAC, only velocity B.C need be specified. However i am observing that after convergence, the freestrem pressure which i specify once, only at the begining, is not the same. Here I am using the free stream vel as the B.C. What could be the problem? Also are there any special considerations for the ficticious boundary cells? (the simulation is for the unconfined flow over a cylinder)

Any advice would be appreciated. Does anyone know where an electronic copy of papers relating to SMAC etc can be found.

Thank you.

Jim Park March 6, 2001 10:09


Sounds as if you're getting a good solution.

For an incompressible flow, only the pressure gradient is important. This is not due to the algorithm you have chosen (SMAC or otherwise).

So, during the iterative solution of the pressure (continuity) equation used in SMAC, the pressure level will drift somewhat. However, if the iteration converges, the pressure gradient is correct and the continuity equation will be satisfied.

If you need to fix the pressure at some point(s) on the boundary (trying to match an experiment, for example), that is permitted. But the velocity boundary condition at that point will be overridden.

teeda March 8, 2001 13:17

Dear Jim

Thanx, your reply was helpful. I have some more questions though, 1. during the convergence of the simulation, the maximum cell div did not drop below kept oscillating about this value. However the results at this stage were fairly accurate..why isnt the max div dropping further? 2. in your last reply u said the vel b.c will be over ridden...could u please elaborate

Thanx again

Jim Park March 8, 2001 13:50

I'll take a shot at answering.

First I've used the original SMAC code as distributed by the T-3 group at Los Alamos. More recently the SOLA-VOF code, same source.

These codes [in fact most of those developed by T-3 in the late 60's, 70's and early 80's] are remarkably similar in the strategy used to implement boundary conditions. A ring of 'image' cells or 'ghost' cells is used and appropriate values are set in or on the appropriate edges of those cells to impose the desired boundary condition. For velocity, it's a specified normal velocity (including no-flow, the zero value), AND the tangential velocity (no slip or free slip - zero shear).

When the pressure is specified at one (or more) boundary location, it is set in the first 'real' cell and that cell is excluded from updating in the momentum and pressure equation loops. So the velocity values set in the image cells just outside the cell where the pressure is set are never referenced and thus ignored. The pressure condition replaces the velocity condition at that point in the solution domain.

As to your first question regarding convergence, I can very little. This is always a black art

teeda March 8, 2001 14:28

Dear Jim

Thanx for the reply. I hope u wont mind if I bother u with another question.

my problem is the simulation of the flow over a cyl. for one edge of the domain, the bc is no slip and for the other the b.c is free stream vel. The grid is staggered. My ques is as follows:

while implementing no-slip, say, consider an image cell. This would contain 2 tangential vel components and two vert. vel. comp. The no slip boundary lies along one vert comp, therefore this is set to zero. As for the tangential components, they r combined with the corresponding tang comp in the real cell just above it such that their avg is zero. What about the 2nd vert. comp. of vel. in the image cell. Is there any condition that should be imposed on it?

Do u have an electronic copy of the SMAC paper?


Jim Park March 8, 2001 18:15

Sorry, I've not dealt with irregular boundary situation you describe.

Also, I don't have a copy of the SMAC code. Left that at work when I retired.

Dean March 9, 2001 13:45


Concerning your first question about the limited convergence of the iterations: one possibility is that you are encountering round-off errors, especially if the code is being run with 32-bit precision.

All times are GMT -4. The time now is 00:03.