CFD Online Discussion Forums

CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   OpenFOAM Running, Solving & CFD (http://www.cfd-online.com/Forums/openfoam-solving/)
-   -   ERCOFTAC Centrifugal Pump with kOmegaSST Model (http://www.cfd-online.com/Forums/openfoam-solving/109019-ercoftac-centrifugal-pump-komegasst-model.html)

marcelgt87 November 7, 2012 09:48

ERCOFTAC Centrifugal Pump with kOmegaSST Model
 
Hi everyone,

I recently got the ERCOFTAC Centrifugal Pump Validation Test Case to run in OF 2.1.0. Originally this Case uses MRFSimpleFoam and the kEpsilon Turbulence Model. More Info on the Case here.

Now I want to run the same Case using the kOmegaSST Model. Unfortunately I did not yet succeed. The Computation always crashes pretty quickly after about 4 or 5 Iterations.

With the Help of http://turbmodels.larc.nasa.gov/sst.html I assembled the following Boundary Conditions:
(though I'm not really sure if they're correct)

INLET:
k: fixedValue 0.48735 ... k = \frac{3}{2} U_0^2 I^2 , with U_0 = 11.4 \frac{m}{s} and I = 0.05)
nut: calculated 0
omega: fixedValue 4873.5 ... \omega = \frac {k} {\nu} \cdot \left( \frac{\mu_T}{\mu} \right)^{-1} with \nu = 10^{-5} \frac{m^2}{s} and \frac{\mu_T}{\mu}  = 10
p: zeroGradient
U: surfaceNormalFixedValue -11.4 m/s

OUTLET:
k: zeroGradient
nut: calculated 0
omega: zeroGradient
p: fixedValue 0
U: zeroGradient

ROTOR and STATOR:
k: kqRWallFunction 0 ... k = 0 at Wall (right?)
nut: nutkWallFunction 0
omega: omegaWallFunction 12500 ... \omega = 10 \cdot \frac{6 \nu}{0.075 \cdot \Delta d^2} with \nu = 10^-{5} \frac{m^2}{s}.
(I'm not really sure what \Delta d is supposed to be. But since I've seen pretty small values being used for it, I assumed it to be the width of the celllayer next to the wall, which would be around 8 \cdot 10^{-4} m in my case. Please correct me if I'm wrong!!!)
p: zeroGradient
U: fixedValue 0

INTERNAL FIELD:
k: 3e-7
nut: 0
omega: 100
p: 0
U: 0

FVSCHEMES:

Code:

ddtSchemes
{
    default        steadyState;
}

gradSchemes
{
    default        Gauss linear;
    grad(p)        Gauss linear;
    grad(U)        Gauss linear;
}

divSchemes
{
    default        none;
    div(phi,U)      Gauss linearUpwind Gauss;
    div(phi,k)      Gauss upwind;
    div(phi,omega)  Gauss upwind;
    div((nuEff*dev(T(grad(U))))) Gauss linear;
}

laplacianSchemes
{
    default        Gauss linear corrected;
}

interpolationSchemes
{
    default        linear;
    interpolate(U)  linear;
}

snGradSchemes
{
    default        corrected;
}

fluxRequired
{
    default        no;
    p              ;
}

FVSOLUTION:

Code:

solvers
{
    p
    {
        solver          GAMG;
        tolerance        1e-7;
        relTol          0.1;
        smoother        GaussSeidel;
        nPreSweeps      0;
        nPostSweeps      2;
        cacheAgglomeration on;
        agglomerator    faceAreaPair;
        nCellsInCoarsestLevel 10;
        mergeLevels      1;
    }

    "(U|k|omega)"
    {
        solver          smoothSolver;
        smoother        GaussSeidel;
        nSweeps        1;
        tolerance      1e-08;
        relTol          0.1;
    }
}

SIMPLE
{
    nNonOrthogonalCorrectors 0;
}
}

relaxationFactors
{
    fields
    {
        p              0.3;
    }
    equations
    {
        U              0.7;
        k              0.7;
        "omega.*"            0.7;
    }
}

cache
{
    grad(U);
}

Like I said, I'm not really sure about the BCs for omega. The other BCs should be fine since they are the same as in the kEpsilon Case.

I already tried playing around with the Relaxation Factors, BCs, etc. No Success yet, any ideas?

Any Help would be appreciated!

marcelgt87 November 9, 2012 10:09

Well, I guess that was a lesson I won't forget so soon...

if you look closely at my fvSolutions you see that I have an extra closed curly bracket after the SIMPLE-dictionary. This caused OpenFOAM to ignore the Relaxation Factors completely! OF can be a real bitch sometimes!

I hope this thread can help someone and prevent him from going crazy about why his simulations won't work. ^^

Regards,
Marcel

dogan November 26, 2012 11:42

Hello Marcel,
in your previous post, you wrote that you are using OpenFOAM 2.1.0., and you wanted to run ERCOFTAC centrifugal pump test case. I would like to ask you whether you managed to run it with this version of O.F.. Since i know (if i am not wrong), the ERCOFTAC centrifugal pump test case requires GGI algorithm, and only O.F. extended version has this algorithm. I am new in using O.F., and i am also trying to run ERCOFTAC test case, but until now, i am unable to do it, because i don't have the extended version of O.F. so if you managed to run it in any case, can you please let me know how you did it?
thank you very much
Dogan

marcelgt87 November 26, 2012 12:57

openfoam 2.1.x has the AMI interface implemented which does pretty much the same as the GGI interface. so no need for a dev- or ext-version. look at the mixervesselAMI2D pimpleDyMFoam-tutorial or here for details.

here are my settings for the steady-state case:

PolyMesh / Boundary File

Code:

7
(
    INLET
    {
        type            patch;
        nFaces          434;
        startFace      184170;
    }
    BLADE_ROT
    {
        type            wall;
        nFaces          1743;
        startFace      184604;
    }
    HUB_SHROUD
    {
        type            empty;
        nFaces          187772;
        startFace      186347;
    }
    AMI_INT
    {
        type            cyclicAMI;
        nFaces          707;
        startFace      374119;
        matchTolerance  0.0001;
        neighbourPatch  AMI_EXT;
        transform      noOrdering;
    }
    AMI_EXT
    {
        type            cyclicAMI;
        nFaces          756;
        startFace      374826;
        matchTolerance  0.0001;
        neighbourPatch  AMI_INT;
        transform      noOrdering;
    }
    OUTLET
    {
        type            patch;
        nFaces          804;
        startFace      375582;
    }
    BLADE_STAT
    {
        type            wall;
        nFaces          2760;
        startFace      376386;
    }
)

Boundary Conditions:

epsilon:
Code:

internalField  uniform 0.1;

boundaryField
{
    INLET
    {
        type            fixedValue;
        value          uniform 138.342;
    }
    BLADE_ROT
    {
        type            epsilonWallFunction;
        value          uniform 0;
    }
    HUB_SHROUD
    {
        type            empty;
    }
    OUTLET
    {
        type            zeroGradient;
    }
    BLADE_STAT
    {
        type            epsilonWallFunction;
        value          uniform 0;
    }
    AMI_INT
    {
        type                cyclicAMI;
        value                $internalField;
    }
    AMI_EXT
    {
        type                cyclicAMI;
        value                $internalField;
    }
}

k
Code:

internalField  uniform 0.1;

boundaryField
{
    INLET
    {
        type            fixedValue;
        value          uniform 0.48735;
    }
    BLADE_ROT
    {
        type            kqRWallFunction;
        value          uniform 0;
    }
    HUB_SHROUD
    {
        type            empty;
    }
    OUTLET
    {
        type            zeroGradient;
    }
    BLADE_STAT
    {
        type            kqRWallFunction;
        value          uniform 0;
    }
    AMI_INT
    {
        type                cyclicAMI;
        value                $internalField;
    }
    AMI_EXT
    {
        type                cyclicAMI;
        value                $internalField;
    }
}

nut
Code:

internalField  uniform 0;

boundaryField
{
    INLET
    {
        type            calculated;
        value          uniform 0;
    }
    BLADE_ROT
    {
        type            nutkWallFunction;
        value          uniform 0;
    }
    HUB_SHROUD
    {
        type            empty;
    }
    OUTLET
    {
        type            calculated;
        value          uniform 0;
    }
    BLADE_STAT
    {
        type            nutkWallFunction;
        value          uniform 0;
    }
    AMI_INT
    {
        type                cyclicAMI;
        value                $internalField;
    }
    AMI_EXT
    {
        type                cyclicAMI;
        value                $internalField;
    }
}

p
Code:

internalField  uniform 0;

boundaryField
{
    INLET
    {
        type            zeroGradient;
    }
    OUTLET
    {
        type            fixedValue;
        value                uniform 0;
    }
    BLADE_ROT
    {
        type            zeroGradient;
    }
    BLADE_STAT
    {
        type            zeroGradient;
    }
    HUB_SHROUD
    {
        type            empty;
    }
    AMI_INT
    {
        type                cyclicAMI;
        value                $internalField;
    }
    AMI_EXT
    {
        type                cyclicAMI;
        value                $internalField;
    }
}

U
Code:

internalField  uniform (0 0 0);

boundaryField
{
    INLET
    {
        type            surfaceNormalFixedValue;
        refValue        uniform -11.4;
    }
    OUTLET
    {
        type            zeroGradient;
    }
    BLADE_ROT
    {
        type            fixedValue;
        value          uniform (0 0 0);   
    }
    BLADE_STAT
    {
        type            fixedValue;
        value          uniform (0 0 0);
    }
    HUB_SHROUD
    {
        type                empty;
    }
    AMI_INT
    {
        type                cyclicAMI;
        value                $internalField;
    }
    AMI_EXT
    {
        type                cyclicAMI;
        value                $internalField;
    }
}

FvSchemes:
Code:

ddtSchemes
{
    default        steadyState;
}

gradSchemes
{
    default        Gauss linear;
    grad(p)        Gauss linear;
    grad(U)        Gauss linear;
}

divSchemes
{
    default        none;
    div(phi,U)      Gauss linearUpwind Gauss;
    div(phi,k)      Gauss upwind;
    div(phi,epsilon) Gauss upwind;
    div(phi,R)      Gauss upwind;
    div(R)          Gauss linear;
    div(phi,nuTilda) Gauss linear;
    div((nuEff*dev(T(grad(U))))) Gauss linear;
}

laplacianSchemes
{
    default        none;
    laplacian(nuEff,U) Gauss linear corrected;
    laplacian((1|A(U)),p) Gauss linear corrected;
    laplacian(DkEff,k) Gauss linear corrected;
    laplacian(DepsilonEff,epsilon) Gauss linear corrected;
    laplacian(DREff,R) Gauss linear corrected;
    laplacian(DnuTildaEff,nuTilda) Gauss linear corrected;
}

interpolationSchemes
{
    default        linear;
    interpolate(U)  linear;
}

snGradSchemes
{
    default        corrected;
}

fluxRequired
{
    default        no;
    p              ;
}

FvSolution:
Code:

solvers
{
    p
    {
        solver          GAMG;
        smoother        GaussSeidel;
        cacheAgglomeration true;
        nCellsInCoarsestLevel 20;
        agglomerator    faceAreaPair;
        mergeLevels    1;

        tolerance      1e-08;
        relTol          0.05;
    }

    "(U|k|epsilon)"
    {
        solver          smoothSolver;
        smoother        GaussSeidel;
        nSweeps        2;
        tolerance      1e-07;
        relTol          0.1;
    }
}

SIMPLE
{
    nNonOrthogonalCorrectors 0;
}

relaxationFactors
{
    fields
    {
        p              0.3;
    }
    equations
    {
        U              0.7;
        k              0.7;
        "epsilon.*"    0.7;
    }
}

cache
{
    grad(U);
}

works like a charm. have fun with it ;)

- marcel

RDD March 13, 2013 11:49

Centrifugal pump with MRFSimpleFoam
 
Hello everybody,

Im new using OpenFOAM and Im really looking forward to study a case of a centrifugal pump solved with MRFSimpleFoam.

Does anybody have a case already done where I can learn how to run the simulation?

Thank you very much.
Remo


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