I've recently been doing some
I've recently been doing some calculations in a simpleFoam-based solver (incompressible flow, Newtonian viscosity, steady-state), on a 2D flow around a circular cylinder with a 200x200-cell polar mesh.
The problem I'm having is that this is very slow to converge; after 1000 timesteps, it's still not especially well-converged. If I look at the intermediate results, it's fairly clear why -- the wake behind the cylinder is slowly developing, much as it would in a time-accurate simulation, and it takes on the order of a couple of hundred timesteps just for the flow disturbance to reach the downstream end of the domain.
Compare this to a multigrid solver which I've been using, in which the flow disturbance reaches the downstream end of the domain after five or ten timesteps, and a few hundred timesteps is sufficient to converge to machine-order accuracy.
I suspect the reasons for this are no more than the obvious: The simpleFoam solver is iterating the velocity equation in an explicit manner on a relatively fine grid, and so there the velocity information can only propogate across the grid at a fairly slow rate of one or two cells per iteration. My multigrid solver, on the other hand, propogates the velocity equation on grids of a wide range of sizes, which gets around this limitation even though it also is using explicit iterations.
I suppose I could achieve a similar result by doing a simpleFoam calculation on a coarse grid, and then repeatedly transferring the results by hand to a finer grid and repeating the calculation until I get to the fine grid that I want. This requires a lot of manual intervention, however....
Thus, my question: Is there any way, in OpenFOAM's standard suite of solvers or with straightforward modifications to them, to obtain a something equivalent to a multigrid iteration of the velocity equation, so that my calculations will converge faster? (For instance, I know that the pressure poisson-equation solver uses an algebraic-multigrid method; can this be leveraged to handle the velocity equation as well, perhaps by doing a method with an implicit velocity equation?)
Alternately, any suggestions on how to automatically do the process of calculating the flow on a coarse grid, and then going through a chain of interpolating onto progressively finer grids and re-solving?
|All times are GMT -4. The time now is 16:45.|