CFD Online Discussion Forums

CFD Online Discussion Forums (
-   Main CFD Forum (
-   -   explicit CFD solver and multigrid (

John Buckley February 28, 2000 07:14

explicit CFD solver and multigrid

I have been working on a 2-D explicit CFD code, based on Jameson's 4 stage Runge-Kutta technique, for almost 3 years now. Our main reason for this work is to model the flow of wet steam through turbines. Recently we decided to try using a multigrid method to improve the convergence rate. I have successfully implemented a 1D multigrid code (using the same algorithms as the 2D code) and get an improvement in convergence of between 10 and 40 times. However the 2D code has been more of a challenge. I believe that the problems are due to the solid boundaries interfering with the multigrid process. One solution would be to freeze the solid boundary variables at the fine grid values on the coarser levels.

Does anyone have any advice or experience to offer in this area?


John Buckley

Patrick Godon March 1, 2000 14:11

Re: explicit CFD solver and multigrid
One of the difference between 1D and 2D multigrid is in the relaxation process. In 2D the relaxation has to be carried out like on a chess board, once relaxing the white then the blacks, etc... Usually, when one does not follow this process, the convergence is very poor.

If you think the problem is due to boundary conditions, then changing the boundary conditions should lead to a change in the convergence, and this can checked easily. If you do have solid boundaries, then there the residue should always be zero and you should not really solve for these points.


Bob Anderson March 4, 2000 21:04

Re: explicit CFD solver and multigrid
How closely are you following Jameson's work? Are you using smoothing on the coarser meshes? Usually far field boundary conditions can be a trouble spot for a multigrid algorithm, but solid walls should be ok. A little more detail on exactly what you've implemented might be helpful.


John Buckley March 7, 2000 07:42

Re: explicit CFD solver and multigrid

Bob, you requested some more details so here goes;

The code is currently solving the 2D Euler equations for internal flow through steam turbine blades. The mesh we are using is a primitive sheared 'H'-mesh. Inlet and outlet boundary conditions are specified by fixing the appropriate flow variables according to the law of characteristics. The wall boundary conditions are a mixture of periodic and solid wall boundary conditions. At the solid wall the only condition is that no flux is allowed through the sold boundary and since we are solving for the Euler equations slip is allowed. Pressure is extrapolated from the interior of the flow to allow the calculation of fluxes in cells next to the boundary. Which reminds me we're using a cell-vertex scheme.

We are using a 4-stage Runge-Kutta time-integration with smoothing of the residuals at all levels. The residual smoothing is performed by inversion of the tridiagonal matrix formed by the eqn (1-epsx*delta)(1-epsy*delta)R*=R where delta is a second order difference operator and R* is the smoothed residual. Artificial viscosity is based on Jameson's recipie and is a mixture of 2nd and 4th order terms with a pressure switch for shocks.

The multigrid process uses a simple V cycle using the same equations, residual smoothing, artificial viscosity and boundary conditions on all the levels (except for the inlet/outlet boundaries where the variables are fixed at the fine grid values for all levels). Transfer of the flow variables to the lower levels is by direct injection, whilst the residuals are transfered using half-weighting. Bi-linear interpolation is used to transfer the changes in the solution back up to the fine levels.

That's about it really. Currently the code converges on two levels but only very slowly (no faster than with one level only).

John Buckley

Bob Anderson March 7, 2000 15:35

Re: explicit CFD solver and multigrid
John, thanks for the detail. Since I don't know what steps you've taken, forgive me if the following seems to obvious. If you don't already have a factor which weights the collected residuals, I'd insert one and see how the code behaves at values less than 1. For a sanity check you can set it to zero and make sure you're getting the single grid result. Unfortunately multigrid does not perform nearly as well for internal flows as it does for external flows like airfoils (although it is still definitely an improvement). Scaling back the collected residuals is one of the first things I do when I run into apparent multigrid troubles.

Btw, a simple first order dissipation is usually the best choice for the coarse grids, rather than a full blown high resolution scheme. It wasn't clear which type you were using from your description.

li yuan March 8, 2000 06:00

Re: explicit CFD solver and multigrid
The slow convergence of a MG method may be due to boundary BC treatment in coarse levels and underrelaxation of restricted residual. If BC variables on coarse levels are just those transfered from the finest level, or the restricted residual is heavily under relaxed, the convergence of MG will be slower than a single grid method. Residual not containing dt(time step)needs underrelaxtion while that containing dt may be relaxed to speed up convergence if you use CFL number to define local dt.

rgds ly

All times are GMT -4. The time now is 11:59.