|
[Sponsors] |
Poisson equation with Neumann boundary conditions |
![]() |
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
![]() |
![]() |
#1 |
Guest
Posts: n/a
|
May I add one question to this thread?
For the poisson equation that will turn out to be matrix equation: div(grad(p)) = f how can I insert the Neumann boundary conditions into the matrix: <grad(p), n>= 0 where <,> is inner product and n is a unit normal of (n_x, n_y) on the boundary. In a staggered grid, the boundary condition turns out to be as follows usually: p_i = (- n_x * p_(j))/(n_x + n_y) + (-n_y * p(k))/(n_x + n_y) where p_i, p_j, and p_k are the pressure at cell centers and neighbor to each other.. My question is whether I should replace this into the poisson equation modifying the poisson equation without changing the size of the matrix or use the boundary condition as a Lagrange Multiplier? Please help me.. Cregeo |
|
![]() |
![]() |
![]() |
#2 |
Guest
Posts: n/a
|
May I add one question to this thread?
For the poisson equation that will turn out to be matrix equation: div(grad(p)) = f how can I insert the Neumann boundary conditions into the matrix: [grad(p), n]= 0 where [,] is the inner product and n is a unit normal of (n_x, n_y) on the boundary. In a staggered grid, the boundary condition turns out to be as follows usually: p_i = (- n_x * p_(j))/(n_x + n_y) + (-n_y * p(k))/(n_x + n_y) where p_i, p_j, and p_k are the pressure at cell centers and neighbor to each other.. My question is whether I should replace this into the poisson equation modifying the poisson equation without changing the size of the matrix or use the boundary condition as a Lagrange Multiplier? Please help me.. Cregeo |
|
![]() |
![]() |
![]() |
#3 |
Guest
Posts: n/a
|
Maybe, my question was too absurd or too basic.
![]() My question was whether I should replace the neumann boundary conditions into the matrix system for the poisson equation, Au = b, without changing the size of the matrix, or use the boundary condition as a Lagrange Multiplier? Replacing means that each [grad(p_i), n] = 0 changes a row of the matrix A and b's component. Please save me.. Cregeo |
|
![]() |
![]() |
![]() |
#4 |
Guest
Posts: n/a
|
Just a note: If you use a weak formulation (FVM, FEM), the Neumann BC is a so-called "natural BC". More specifically, if the normal derivative is 0, then this term is 0. For example, if you solve heat transfer using FVM, boundaries you do not specify any BC data on are actually adiabatic walls.
|
|
![]() |
![]() |
![]() |
#5 |
Guest
Posts: n/a
|
Rami, could not you specify: in FEM if a normal derivative = 0 than it is "natural BC". But if the normal derivative > 0 or < 0 is it "natural BC" too? Thx.
|
|
![]() |
![]() |
![]() |
#6 |
Guest
Posts: n/a
|
In the weak formulation lingo, a Neumann-type BC is termed "natural BC", no matter if homogeneous or not, i.e., the derivative may be anything. A Dirichlet-type BC is termed "essential BC".
Being an engineer, I hope I did not commit any mathematical crime here... |
|
![]() |
![]() |
![]() |
#7 |
Guest
Posts: n/a
|
Thanks, Rami.
When [grad(p), n] = 0, grad(p) does not need to be only zero. For example, when grad(p) is on the plane perpendicular to the normal, n, the equation [grad(p), n] = 0 is met---where, [a,b] means dot product. Do you have any idea, how can I enforce this boundary condition when I solve the poisson equation div(grad(p)) = f ? When the boundary condition is not like the above, e.g., [grad(p), n] = F (no longer essential condition), how can I specify it with the matrix obtained by the poisson equation? Should that be solved by using the Lagrange multiplier? Or by updating some rows of the poisson equation with the boundary condition imposed at each point on the boundary? Thanks again, Cregeo |
|
![]() |
![]() |
![]() |
#8 |
Guest
Posts: n/a
|
1. I never claimed that the homogeneous Neumann BC (i.e., normal derivative of grad(p) = 0) implies grad(p) = 0.
2. "Essential BC" is not limited to normal derivative = 0 (see also my former post http://www.cfd-online.com/Forum/main.cgi?read=32432). 3. I have no experience in the implementation of the pressure correction solver, so I cannot comment on the specific BC you wish to use. Assuming you need an inhomogeneous Neumann BC, you may use either methods you asked about (Lagrange multiplier or rows update). 4. Are you using a weak- (FVM, FEM) or strong- (FDM) formulation? |
|
![]() |
![]() |
![]() |
#9 |
Guest
Posts: n/a
|
You are right about the essential boundary conditions.
I got some hints about the third item of your posting and my main question, from http://www.ap.univie.ac.at/usersves/cp0102/dxnode89.htm I'm using strong formulation. Thanks a lot, Rami |
|
![]() |
![]() |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Neumann boundary conditions | Martin80 | OpenFOAM Programming & Development | 22 | September 7, 2011 17:48 |
RPM in Wind Turbine | Pankaj | CFX | 9 | November 23, 2009 04:05 |
boundary conditions of level set equation | Amir | Main CFD Forum | 0 | September 17, 2008 02:26 |
Poisson Equation with Neumann bc | Beginner | Main CFD Forum | 0 | September 6, 2007 09:18 |
Boundary Conditions Pressure Poisson Equation | Oscar Salazar | Main CFD Forum | 1 | October 12, 2004 11:37 |