Mike Graham |
January 30, 2012 14:40 |
simpleFoam convergence problems for pipe flow problem
I've been solving some very simple pipe flow problems using 1.6-ext's simpleFoam with a k-epsilon turbulence model and have had trouble getting good results. As I let my simulation go, in many time steps the p equation solver maxes out the number of iterations required before moving on (I've tried 1000 maximum for GAMG, 2500 for PCG), and eventually the pressures and velocities get huge and the continuity error gets large and the simulation dies due to a SIGFPE.
I've adjusted my p solver and parameters, my grad(p) schemes and various divSchemes, my relaxation parameters, and my initial conditions, but the solution inevitably blows up. If I change my boundary conditions to inlet-pressure/outlet-velocity or pressure/pressure, I don't blow up, but I do not achieve convergence.
Can anyone explain why I'm having trouble or advise me how to proceed?
One case that I ran is posted at http://dl.dropbox.com/u/19693178/examplecase.tar.gz
Here are some of my input files
0/fvSolution
Code:
solvers
{
p
{
solver GAMG;
tolerance 1e-6;
relTol 0;
smoother GaussSeidel;
nPreSweeps 0;
nPostSweeps 2;
cacheAgglomeration on;
agglomerator faceAreaPair;
nCellsInCoarsestLevel 10;
mergeLevels 1;
};
U
{
solver smoothSolver;
smoother GaussSeidel;
tolerance 1e-8;
relTol 0.1;
nSweeps 1;
};
k
{
solver smoothSolver;
smoother GaussSeidel;
tolerance 1e-8;
relTol 0.1;
nSweeps 1;
};
epsilon
{
solver smoothSolver;
smoother GaussSeidel;
tolerance 1e-8;
relTol 0.1;
nSweeps 1;
};
}
SIMPLE
{
nNonOrthogonalCorrectors 0;
}
relaxationFactors
{
p 0.3;
U 0.6;
k 0.2;
epsilon 0.2;
}
fvSchemes
Code:
ddtSchemes
{
default steadyState;
}
gradSchemes
{
default Gauss linear;
grad(p) cellLimited Gauss linear 1;
grad(U) Gauss linear;
}
divSchemes
{
default none;
div(phi,U) Gauss linearUpwindV Gauss linear;
div(phi,k) Gauss upwind;
div(phi,epsilon) Gauss upwind;
div((nuEff*dev(grad(U).T()))) Gauss linear;
}
laplacianSchemes
{
default Gauss linear corrected;
}
fluxRequired
{
default no;
p;
}
0/U
Code:
dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
Inlet
{
type fixedValue;
value uniform (-1.68669369 -7.75789138 0);
}
Outlet
{
type zeroGradient;
}
Sym
{
type symmetryPlane;
}
Wall
{
type fixedValue;
value uniform (0 0 0);
}
}
0/p
Code:
dimensions [0 2 -2 0 0 0 0];
internalField uniform 0;
boundaryField
{
Outlet
{
type fixedValue;
value uniform -29.89;
}
Inlet
{
type zeroGradient;
}
Wall
{
type zeroGradient;
}
Sym
{
type symmetryPlane;
}
}
0/k
Code:
dimensions [0 2 -2 0 0 0 0];
internalField uniform 90.583e-6;
boundaryField
{
Inlet
{
type fixedValue;
value $internalField;
}
Outlet
{
type zeroGradient;
}
Wall
{
type kqRWallFunction;
value $internalField;
}
Sym
{
type symmetryPlane;
}
}
0/epsilon
Code:
dimensions [0 2 -3 0 0 0 0];
internalField uniform 12.89e-6;
boundaryField
{
Inlet
{
type fixedValue;
value $internalField;
}
Outlet
{
type zeroGradient;
}
Wall
{
type epsilonWallFunction;
value $internalField;
}
Sym
{
type symmetryPlane;
}
}
0/nut
Code:
dimensions [0 2 -1 0 0 0 0];
internalField uniform 0;
boundaryField
{
Inlet
{
type calculated;
value uniform 0;
}
Outlet
{
type calculated;
value uniform 0;
}
Wall
{
type nutWallFunction;
value uniform 0;
}
Sym
{
type symmetryPlane;
}
}
|