Poisson Solver or suitable scheme
Hi, I'm programing a 2D(it would be 3D later) incompressible viscous internal flow code recently(Re~1000-3000). I use franctional-step method(by Kim and Moin 1985) and adaptive grid. However, I have trouble with soving Poisson equation. Because I'll deal with complicate geometry later, therefore fast Fourier sovler doestn't work in my case.
Anyone can suggest me which numerical scheme I can use to solve the Poisson equation or where I can find the existing code online??!!
Another small question is the boundary of pressure. By the paper, it said that we don't need ad hoct boundary for pressure by adaptive grid. However, when I solve the Poisson equation of phi, I do need the boundary condition, rihgt? What should I do with that?
It's a long question. Thanks for your patience and attention.
Re: Poisson Solver or suitable scheme
Ultimately the discretized Possion Equation leads you to a system of equations Ax=B. You can then use standard open source solvers like PETSc or LAPACK. You just need to input the coefficient Matrix A and B in a specific order. Im not sure of the adaptive case but you can have a look at it.
Pressure b.c in physical sense is not required. However you need a b.c for phi since it forms the poisson eqn. It comes like this :
If the intermediate solution is 'us', then, we know, it is decomposed as:
us = u_n+1_ + dt*grad(phi). Taking the normal component,
gives rise to:
n.us = n.u_n+1_ + dt* n.grad(phi).
mostly, it is assumed that at the boundary, 'us' assumes the value of u_n+1_ . So the above eqn bcomes : n.grad(phi)=0. And it so happens that in this case by virtue of the 1st order time discretization, phi has to be equal to 'p' so that the splitting is exact. When its a second order crank nicholson discretisation, using phi=p will give a wrong splitting.
This sort of b.c for pressure is argued in literature as the formation of numerical boundary layers, since this boundary condition is numerical and not physical.
There are higher order methods in which phi = p + f(del.us).. and in this case you never say that you are having a b.c for pressure, but phi instead.
|All times are GMT -4. The time now is 00:15.|