CFD Online Discussion Forums

CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   Main CFD Forum (http://www.cfd-online.com/Forums/main/)
-   -   Two phase flow in cylindrical coordinate (http://www.cfd-online.com/Forums/main/105538-two-phase-flow-cylindrical-coordinate.html)

hilllike August 2, 2012 02:30

Two phase flow in cylindrical coordinate
 
Hi gays, I wrote a 3d code in cylindrical coordinate based on FVM. I use projection method to solve the n-s equation and vof method to track the free surface. It works very well at the first 200 cycles, and suddenly lost its convergence.
Does anyone have some experiences at that kinds of code.

leflix August 2, 2012 06:58

Quote:

Originally Posted by hilllike (Post 374988)
Hi gays, I wrote a 3d code in cylindrical coordinate based on FVM. I use projection method to solve the n-s equation and vof method to track the free surface. It works very well at the first 200 cycles, and suddenly lost its convergence.
Does anyone have some experiences at that kinds of code.

Hi Ren,

first question:
Is your code working fine without the VOF module? If the answer is yes,it means it comes from your VOF implementation.
Do you use an interface reconstruction method in your implementation of VOF? A problem of mass conservation may occur. Check your gobal mass conservation along the computation.

second question:
In your mesh are all the cells orthogonal? If the answer is no, how do you cope with the non-orthogonality of the cells in the discretization of the diffusive flux?
I ask you this question because generally the non-orthogonality is handled with a deferred correction,which needs an iterative process,SIMPLE like algorithms are ideal for that . However the projection method is only a 2 steps fractional step method and not satisfactory from this point of view. Do you see my points?

hilllike August 2, 2012 09:31

Thanks for your reply!

Quote:

Originally Posted by leflix (Post 375024)
Hi Ren,

first question:
Is your code working fine without the VOF module? If the answer is yes,it means it comes from your VOF implementation.
Do you use an interface reconstruction method in your implementation of VOF?

The result shows the free surface moves well.
I use the CICSAM vof method, which doesn't need a interface reconstruction procedure. My code is changed from a fine code in Cartesian Coordinate I wrote by myself one year ago.

Quote:

Originally Posted by leflix (Post 375024)
A problem of mass conservation may occur.Check your gobal mass conservation along the computation.

Yes I check the global mass conservation at every step, it is very steady. I use a open source amg solver to solve the Poisson equation and the linear solver just blowout with any reason.

Quote:

Originally Posted by leflix (Post 375024)
second question:
In your mesh are all the cells orthogonal? If the answer is no, how do you cope with the non-orthogonality of the cells in the discretization of the diffusive flux?
I ask you this question because generally the non-orthogonality is handled with a deferred correction,which needs an iterative process,SIMPLE like algorithms are ideal for that . However the projection method is only a 2 steps fractional step method and not satisfactory from this point of view. Do you see my points?

Yes, all the cells are orthogonal and I follow a book to write this code.

leflix August 2, 2012 10:09

Quote:

Originally Posted by hilllike (Post 375044)

The result shows the free surface moves well.
I use the CICSAM vof method, which doesn't need a interface reconstruction procedure. My code is changed from a fine code in Cartesian Coordinate I wrote by myself one year ago.

If I were you , I would try first a poiseuille flow in a pipe (with only one fluid, decouple your VOF module) to check the solver and verify the numerical results compared with analytical solution

Quote:

Yes I check the global mass conservation at every step, it is very steady. I use a open source amg solver to solve the Poisson equation and the linear solver just blowout with any reason.

So the only source of problem could then come from your discretization
of DIV(1/rho(GRAD(P))=DIV(U*) in the projection step
and the way it is implemented for the call of your amg solver.
Because what you have is not really a true Poisson equation


Quote:

Yes, all the cells are orthogonal and I follow a book to write this code.
ok so then your projection method would workfine

hilllike August 3, 2012 04:34

Dear leflix, Thanks for your kind advise.

I checked the solver in other code and it is not bad.
I used this solver only because the linear equation of Poisson equation in cylindrical coordinate is not kind like seven diagonals matrix. There are two irregular diagonals at azimuth direction, which I don't know how to handle with ICCG like method.
I use FVM to discretize the projector.
Div(U*)/dt=Div(grad(p)/rho)
> (u*rdsdz-u*rdsdz+v*dzdr-v*dzdr+w*rdsdr-w*rdsdr)/dt=
>grad(pe)rdsdz/rho-grad(pw)rdsdz/rho+grad(pn)dzd/rhor-grad(ps)dzdr/rho + grad(pt)rdsdr/rho - grad(pb)rdsdr/rho

Ren

leflix August 3, 2012 04:59

Hi Ren,

Quote:


I checked the solver in other code and it is not bad.
I used this solver only because the linear equation of Poisson equation in cylindrical coordinate is not kind like seven diagonals matrix. There are two irregular diagonals at azimuth direction, which I don't know how to handle with ICCG like method.

In CG like method what you need is to be able to make the product between a matrix and a vector. Once you know the structure of your matrix (how many diagonals and where they are located) the product with a vector is straightforward.
so what you can do is to test your solver with the structure of your matrix. Start to make the product with your matrix and a given vector. Get the right hand side. Then give the right hand side to your solver and check if you get back the given vector you started with.

Quote:


I use FVM to discretize the projector.
Div(U*)/dt=Div(grad(p)/rho)
> (u*rdsdz-u*rdsdz+v*dzdr-v*dzdr+w*rdsdr-w*rdsdr)/dt=
>grad(pe)rdsdz/rho-grad(pw)rdsdz/rho+grad(pn)dzd/rhor-grad(ps)dzdr/rho + grad(pt)rdsdr/rho - grad(pb)rdsdr/rho

Ren
I see a problem in your discretization of the pseudo poisson equation.
In the equation which rho do you use? you should divide by rho_k where k stands for e w, n, s, t, b each face center.
It is the same for the discreztization of Div(U*) you should use u*and v*located at each face center (e,w,n,s,t,b)

hilllike August 3, 2012 05:32

Quote:

Originally Posted by leflix (Post 375192)
Hi Ren,

In CG like method what you need is to be able to make the product between a matrix and a vector. Once you know the structure of your matrix (how many diagonals and where they are located) the product with a vector is straightforward.
so what you can do is to test your solver with the structure of your matrix. Start to make the product with your matrix and a given vector. Get the right hand side. Then give the right hand side to your solver and check if you get back the given vector you started with.

That is not the problem, problem is how to handle the IC preconditioner. That will be very difficult.

Quote:

Originally Posted by leflix (Post 375192)
I see a problem in your discretization of the pseudo poisson equation.
In the equation which rho do you use? you should divide by rho_k where k stands for e w, n, s, t, b each face center.
It is the same for the discreztization of Div(U*) you should use u*and v*located at each face center (e,w,n,s,t,b)

Sorry, I forgot to write the face marker.


Follow your advise, Maybe I need to check my VOF method.
Ren

leflix August 3, 2012 05:59

Quote:

Originally Posted by hilllike (Post 375201)
That is not the problem, problem is how to handle the IC preconditioner. That will be very difficult.

You can change you linear system solver even with a simple SOR solver where you don't have to cope with such preconditioner problem, just to see if your code blows up at the same stage.
If it doesn't then you will know that it comes from your solver.
Then change with another library.



Quote:

Follow your advise, Maybe I need to check my VOF method.
Ren
that's why I proposed to solve first a poiseuille flow in a pipe to verify that you got the right analytical solution.
If yes,then you will know with certainty that the problem comes from your VOF module.

You have 3 sources of potential errors. The linear system solver, the 3D cylindrical NS solver, the VOF module.
You have to track which one of these 3 sources is responsible for your blow up. Thus separated tests are necessary.

hilllike August 29, 2013 01:28

Hi, gays.
My codes works well now. Did any have experiences in testing two-phase flow in cylindrical coordinates?

My model can simulate the two-phase flow movement in the cylindrical tank with a big diameter. Did anyone know some information with circular dam break or some other test cases?

leflix August 30, 2013 19:58

Quote:

Originally Posted by hilllike (Post 448646)
Hi, gays.
My codes works well now. Did any have experiences in testing two-phase flow in cylindrical coordinates?

My model can simulate the two-phase flow movement in the cylindrical tank with a big diameter. Did anyone know some information with circular dam break or some other test cases?

It would be nice when the problem is solved that you explain us what you changed and did. It would help others to avoid to make the same mistake...

hilllike September 1, 2013 21:32

Quote:

Originally Posted by leflix (Post 448977)
It would be nice when the problem is solved that you explain us what you changed and did. It would help others to avoid to make the same mistake...

The only change is the grid generation method. What I did is a numerical wave basin that the diameter of it is very large so that VOF method over regular rectangular meshes can not capture the free surface.


All times are GMT -4. The time now is 22:29.