Outflow Boundary Condition Implementation
Hi guys,
Recently i've implemented a CFD code for unstructured meshes using FV method with collocated variables for incompresible, steadystate Navier Stokes equations. I had pretty good results with this code when compared to Ghia's results and others benchmark results for liddriven cavities problems. Now i'm trying to implement velocity inlet and outflow BCs, but i'm having serious problems with it, i get negative sources for Momentum eqs and really large velocities and my code diverges really quick. I know that velocity inlet is really simple, it's the same as wall BCs, zero gradient for pressure, and mass flow rate know. Outflow BC for what i read consists on impose zero gradient for velocities at the outflow faces, this of course corrected with the relation m_dot_in/m_dot_out to ensure conservation. Since mass flow rate is calculated with Rho*V.A at inlet i get negative mass flow rates because of the face normal vector and positive mass flow rates for outflow (also because of the face normal vector). Hence, m_dot_in/m_dot_out can get negative, affecting signal on u and v on faces. Could that be the problem? What do i do with the pressure on outflow Bc faces? What is the proper way to impose outflow BCs on unstructured meshes? I appreciate in advance any responses. Mijail. 
I have a question regarding the mass flow rate during outflow boundary condition employed. I am wondering why this mass flow rate ratio is required to put in fluent since I believe fully developed flow (velocity gradient zero) is sufficient bc condition to satisfy NS equation. Am I right? In case of multiple outflow outlet bc, it is mandatory to put those mass flow weight ratio to get a perfect simulation result as I have experienced before.
Why is it required? Any idea? Thanks. Deep 
From the mathematical point of view, such incompressible flow issues are related to the way the problem is solved. More precisely with the HelmholtzHodge decomposition.
I try to explain it very roughly. When you predict the velocity (before pressure correction) you can actually fix only tangential velocity components on the boundary while normal ones are somehow free (indeed they do not satisfy the divergence free constraint). You could fix them to satisfy overall continuity on the boundary but this is fully arbitrary and the following pressure correction is likely to create problems. What is usually done here is to use the null gradient hypothesis on the outflow for the diffusive term, possibly coupled with a significant convection velocity (so, not necessarily a crude extrapolation). Still, no extrapolation can ever ensure a full mass conservation. Normal velocity components on boundaries are instead to be fixed in the pressure correction stage, where they actually belong. But, at this point, you don't have any more an equation to do that and you can only prescribe the overall continuity to be satisfied. When multiple outflows are present, there is no chance to get an exact information on the distribution of the outflow mass rates over the different exits and some assumption is needed for the final correction. Notice that the assumption made in Fluent is really strong and final results can be strongly affected. My preferred approach when multiple outflows are present is to collect them in a single face so that a single unitary coefficient is used for all of them. 
Quote:
Specifying the mass flow split is the commonest way to provide this missing boundary information for incompressible flow but, for the example above, fixing the pressure at the two outlets would also work if reverse flow is truncated. 
Thank you a lot for these useful responses.
Deep 
Quote:
i don't get it. If the other outlet is further blocked by wall, there will still be flow throw it. Just because there is wall ahead why shall flow stop before the wall? 
Quote:

I am not sure to understand your discussion ... the general rule for incompressible flows are
1) Int [S] n.V dS = 0 > the flowrate is conserved 2) on BCs only one between velocity or pressure can be prescribed 3) Div.V = 0 can be satisfied at machine accuracy for the exact projection method or at the level of the local truncation error for the approximate projection method. If some of these three condition is not fulfilled then there should be a bug in the code 
All times are GMT 4. The time now is 01:04. 