CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   Main CFD Forum (http://www.cfd-online.com/Forums/main/)
-   -   Incompressible Flow: Retrieving Pressure from Velocity Field (http://www.cfd-online.com/Forums/main/120395-incompressible-flow-retrieving-pressure-velocity-field.html)

 lordvon July 5, 2013 18:57

Incompressible Flow: Retrieving Pressure from Velocity Field

Hello all,
I have been trying to retrieve the pressure field from a divergence-free velocity field in 2D incompressible flow. I am using the following formula for the pressure Poisson equation: (underscore denotes partial differentiation)

Laplacian(p) = ( u*u_x + v*u_y )_x + ( u*v_x + v*v_y )_y

(I arrived here from http://cfd.ce.gatech.edu/docs/CEE7751_7.pdf, labeled as Equation 3, and applying continuity: u_x = -v_y)

I apply a Poisson solver (http://arc.aiaa.org/doi/abs/10.2514/6.2012-3068), which I know works properly because I have used it for computing wall distances for a turbulence model (http://www.researchgate.net/publicat...tial_Equations).

I however get a totally wrong solution for pressure on a 2D lid-driven cavity case (The velocity field is very similar to that I get in OpenFOAM).

Any comments or suggestions on this problem of recovering the pressure field from a divergence-free velocity field?

Thanks a ton.

 FMDenaro July 6, 2013 04:33

Quote:
 Originally Posted by lordvon (Post 438059) Hello all, I have been trying to retrieve the pressure field from a divergence-free velocity field in 2D incompressible flow. I am using the following formula for the pressure Poisson equation: (underscore denotes partial differentiation) Laplacian(p) = ( u*u_x + v*u_y )_x + ( u*v_x + v*v_y )_y (I arrived here from http://cfd.ce.gatech.edu/docs/CEE7751_7.pdf, labeled as Equation 3, and applying continuity: u_x = -v_y) I apply a Poisson solver (http://arc.aiaa.org/doi/abs/10.2514/6.2012-3068), which I know works properly because I have used it for computing wall distances for a turbulence model (http://www.researchgate.net/publicat...tial_Equations). I however get a totally wrong solution for pressure on a 2D lid-driven cavity case (The velocity field is very similar to that I get in OpenFOAM). Any comments or suggestions on this problem of recovering the pressure field from a divergence-free velocity field? Thanks a ton.

first, for incompressible flow there is no meaning in the "thermodinamic pressure". What you compute is only a scalar field such that its gradient ensures the correct divergence-free velocity.

second, what do you compare in the lid-driven solution? you have some file with the pressure computed by some code? Remember that you have a solution apart a constant value.

what kind of BC are you prescribing in the Poisson equation?

 lordvon July 6, 2013 06:39

I obtain the velocity field by the "exact fractional step method" (http://www.ecs.umass.edu/mie/tcfd/Pa...ot_cfd2007.pdf). Then, I try to obtain the pressure as a post-processing step.

I am enforcing a pressure value of 0 at one point in the corner, then using Neumann (zero-gradient) boundary conditions everywhere for pressure, since walls enclose the whole space.

Thanks for the help.

 FMDenaro July 6, 2013 06:51

Quote:
 Originally Posted by lordvon (Post 438104) I obtain the velocity field by the "exact fractional step method" (http://www.ecs.umass.edu/mie/tcfd/Pa...ot_cfd2007.pdf). Then, I try to obtain the pressure as a post-processing step. I am enforcing a pressure value of 0 at one point in the corner, then using Neumann (zero-gradient) boundary conditions everywhere for pressure, since walls enclose the whole space. Thanks for the help.
1) do you compare your pressure field to some other solution?
2) the fixed zero value is a constant fixed arbitrarily, any other value give you the same solution for the Poisson equation.
3) be careful in the BCs, they are Neumann conditions but actually not homogeneous.

Finally, you have to solve DGp= q, in discrete form this can be very different from solving the Laplacian operator

 lordvon July 6, 2013 07:03

1) Yes as mentioned in my first post I am comparing with OpenFOAM (icoFoam).
2) I do realize that the problem is solvable up to an arbitrary constant.
3) As mentioned in the first post I use the solver referenced above; I have used fixed and zero-gradient boundary conditions successfully with the solver on wall distance computations. I think your third and fourth points are addressed in the reference.

 FMDenaro July 6, 2013 07:28

how do ensure that also OF fixed the zero value for the pressure? It would be useful if you post the figures of the two pressure field, just 3-4 iso-level curves are sufficient.
Furthermore, consider also that in the classical fractional step (as the method described by Kim and Moin on an old JCP paper), when implicit integration in time is used for the diffusive term the computed "pressure" results affected by a viscous term, too.

 lordvon July 6, 2013 08:05

Is there anything wrong with what I would think is the most general approach starting from the incompressible Navier-Stokes, manipulating it to the Poisson pressure form, and discretizing this?

 FMDenaro July 6, 2013 08:15

Quote:
 Originally Posted by lordvon (Post 438119) Is there anything wrong with what I would think is the most general approach starting from the incompressible Navier-Stokes, manipulating it to the Poisson pressure form, and discretizing this?
no, but what you get in term of the scalar solution can be very different from code to code.

 Jonas Holdeman July 6, 2013 09:36

There is another approach that I use. By the Helmholtz theorem, the incompressible NSE is decomposable into a pressure-free solenoidal governing equation for the velocity and an irrotational equation for the pressure as a functional of the velocity, grad p = irrotational part of (-u dot grad u). The variational form of this is (grad q, grad p) = -(grad q, u dot grad u), where q lies in the same space as p. Note that you would get this by integrating the variational form of the pressure Poisson equation by parts, but here there is no Neuman bc involved here since you don't integrate by parts.

For the discrete FE form, I like to use a continuous cubic Hermite pressure element since the pressure-gradient degrees-of-freedom might also be useful, but this is not necessary. The (vector) test function grad q is orthogonal to the solenoidal velocity space (by the Helmholz theorem) and projects out the irrotational pressure terms. Of course the velocity functions I use are the curl of a modified Hermite element and so are necessarily divergence-free. I have not tried this projection method using velocity elements that are only weakly divergence-free, bu it should work OK.

 FMDenaro July 6, 2013 11:24

Quote:
 Originally Posted by Jonas Holdeman (Post 438130) There is another approach that I use. By the Helmholtz theorem, the incompressible NSE is decomposable into a pressure-free solenoidal governing equation for the velocity and an irrotational equation for the pressure as a functional of the velocity, grad p = irrotational part of (-u dot grad u). The variational form of this is (grad q, grad p) = -(grad q, u dot grad u), where q lies in the same space as p. Note that you would get this by integrating the variational form of the pressure Poisson equation by parts, but here there is no Neuman bc involved here since you don't integrate by parts. For the discrete FE form, I like to use a continuous cubic Hermite pressure element since the pressure-gradient degrees-of-freedom might also be useful, but this is not necessary. The (vector) test function grad q is orthogonal to the solenoidal velocity space (by the Helmholz theorem) and projects out the irrotational pressure terms. Of course the velocity functions I use are the curl of a modified Hermite element and so are necessarily divergence-free. I have not tried this projection method using velocity elements that are only weakly divergence-free, bu it should work OK.

you are correct, this approach is substantially that one described in the book of Peric and Ferziger and drives to see that the "pressure" function is only a Lagrangian multiplier.

 All times are GMT -4. The time now is 01:41.