about the implemention of periodic boundary condition
I currently meet some problems with the implementaion of the periodic boundary condition for transient Rayleigh-Benard convection problem.
My code is based on FVM, SIMPLE algorithm and colocatted grid system (with Rhie-Chow interpolation) .
i am prettly sure that my code works for adiabtic boundary condition for temperature (no-slip wall for velocities), as i compared my results with some beachmark solutions.
To simulate a infinite long domain in horizontal direction (my solver is two - dimensional), i want to implment periodic boundary condition for temperature, velocity and pressure fields.
Thus i did some modification of the code,
for tempearture and velocity field, i exchange the values on boundaries, like (a N by N grid )
phi(1, j) = phi(N-1,j)
phi(N,j) = phi(2,j)
then treat the boundary type like Dirichlet condition;
for pressure field,
at the beginning i think we may not need any modification as the problem i considered is not like the other type periodic boundary condition , like there is a incomming flow and we need to guarantee the constant pressure drop.
then i realized that the pressure correction genearlly implicitly incoperates with Neumann boundaries for all boundaries, then i did some modification like temperature field.
However, i failed, as the solver directly divergence in the first two or three time steps and i do not know the reason. I wish someone who has similar experience can help me.
If someone can provide some usful materials, it would be great.
you have to change your matrix by means of the link in the periodicity, you cannot use Dirichlet BCs..
do you mean for the pressure correction equation?
in each time step,
i firstly compute U, V
then compute P
finally compute T
in the subroutine for computing pressure correction,
i first assemble AE, AW, AN, AS, AP and right hand side (Su)
then i set the value on boundaries according to the periodic boundary conditions, take the west side as example,
i set pp(1,j) = pp(N-1,j) , pp stands for pressure correction;
since i have the values on boundaries, i treat it like Dirichlet boundary condition
then i call the linear sysmeter solver ...
This is the procedure i did, do you mean 'even i known the values on boundaris , i can not treat it like Dirichlet type'? so what should i do ?
Thank you for your quick reply.
at point i=2
(p(i-1,j) - 2*p(i,j) + p(i+1,j))/dx/dx
(p(N-1,j) - 2*p(i,j) + p(i+1,j))/dx/dx
that means you changed the position in to the matrix entry. You never compute the value p(1,j) until the pressure solver has converged
I get your point, in fact, i asked my teacher this afternoon, he shared a similiar idea ...
though i unstand your meaning now, there seems to be some problem from the implementaion point of view.
it seems this problem will change the structure of the coefficinet matrix to be non-diagonal ... which means tranditional linear system solver (like SIP ) may fail
tomorrow i will try to add one or two layer of ghost cells to see it works or not ...
thank you for your reply again ....
hi, dear harbinyg,
I faced same problem when I try to solve Poisson equation in cylindrical coordinates. And I didn't use any boundary condition in that case.
Just treat the points beside the periodic boundary as internal points, and that can solve the problem implicitly.
|All times are GMT -4. The time now is 18:25.|