CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Running, Solving & CFD (https://www.cfd-online.com/Forums/openfoam-solving/)
-   -   how to accurately simulate flow around cylinder (https://www.cfd-online.com/Forums/openfoam-solving/117911-how-accurately-simulate-flow-around-cylinder.html)

kkpal May 17, 2013 04:39

how to accurately simulate flow around cylinder
 
hi everyone!
I've been doing simulation about flow around cylinder recently.
Some information about the case is listed below.

2D simulation;
U=1, D=1, rho=1, nu=0.01, so Re=100;
domain size: upstream 20D, downstream 40D, topwall and bottom wall 20D.
mesh size: about 40000 vertices

The problem is that no matter how I tried, I can not get the accurate result in terms of strouhal number, which in my case is 1.44. An accurate St for RE100 should be 1.65.

Could someone send me a similar case file which has been verified and yields accurate results so I can check what went wrong in my own case? I will be very grateful!
my email address is kai-zhang-kf@ynu.ac.jp

sasanghomi May 17, 2013 06:41

Hi ,
I think you use icoFoam as a solver. So I think two parameters have vital role for getting the exact result : 1) discretization method of terms in equations 2)Mesh generation.
So change your fvSchemes and fvSolution as below :
Code:

/*--------------------------------*- C++ -*----------------------------------*\
| =========                |                                                |
| \\      /  F ield        | OpenFOAM Extend Project: Open Source CFD        |
|  \\    /  O peration    | Version:  1.6-ext                              |
|  \\  /    A nd          | Web:      www.extend-project.de                |
|    \\/    M anipulation  |                                                |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version    2.0;
    format      ascii;
    class      dictionary;
    object      fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

solvers
{
    p
    {
        solver          PCG;
        preconditioner  DIC;
        tolerance        1e-06;
        relTol          0;
    };

    U
    {
        solver        BiCG;
        preconditioner  DILU;
        tolerance        1e-05;
        relTol          0;
    };
}


PISO
{
  nCorrectors    2;
  nNonOrthogonalCorrectors 0;
    pRefCell        0;
    pRefValue      0;
 }

Code:

/*--------------------------------*- C++ -*----------------------------------*\
| =========                |                                                |
| \\      /  F ield        | OpenFOAM Extend Project: Open Source CFD        |
|  \\    /  O peration    | Version:  1.6-ext                              |
|  \\  /    A nd          | Web:      www.extend-project.de                |
|    \\/    M anipulation  |                                                |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version    2.0;
    format      ascii;
    class      dictionary;
    object      fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

ddtSchemes
{
    default backward;
}

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

divSchemes
{
    default        none;
    div(phi,U)      Gauss GammaV 0.5 ;

}

laplacianSchemes
{
    default        Gauss linear limited 0.5;
    laplacian(nu,U) Gauss linear limited 0.5;
    laplacian(rUA,pcorr) Gauss linear limited 0.5;
    laplacian(rAU,p) Gauss linear limited 0.5;
}

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

snGradSchemes
{
    default        limited 0.5;
}

fluxRequired
{
    default        no;
    pcorr;
    p;
}


Hope this helps,
Sasan.

kkpal May 17, 2013 10:55

dear sasan
thanks very much! your post solved the problem, I used icoFoam this time, now my St number is 1.62, which is much better than the previous ones. Now it is clear that it is not the problem of my mesh, but the discretization method of terms in equations that is giving me bad results.

However, in my previous simulations, I used pimpleFoam because for the long run I need to do much higher Re simulations, for which icoFoam is not appropriate.

Here is my fvschemes and fvsolutions, which is for pimpleFoam and did not give right result.

Code:

/*--------------------------------*- C++ -*----------------------------------*\
| =========                |                                                |
| \\      /  F ield        | OpenFOAM: The Open Source CFD Toolbox          |
|  \\    /  O peration    | Version:  2.1.x                                |
|  \\  /    A nd          | Web:      www.OpenFOAM.org                      |
|    \\/    M anipulation  |                                                |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version    2.0;
    format      ascii;
    class      dictionary;
    location    "system";
    object      fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

solvers
{
    p
    {
        solver          GAMG;
        tolerance      1e-06;
        relTol          0.01;
        smoother        GaussSeidel;
        cacheAgglomeration true;
        nCellsInCoarsestLevel 10;
        agglomerator    faceAreaPair;
        mergeLevels    1;
    }

    pFinal
    {
        solver          GAMG;
        tolerance      1e-06;
        relTol          0;
        smoother        GaussSeidel;
        cacheAgglomeration true;
        nCellsInCoarsestLevel 10;
        agglomerator    faceAreaPair;
        mergeLevels    1;
    }

    "(U|k|epsilon)"
    {
        solver          PBiCG;
        preconditioner  DILU;
        tolerance      1e-05;
        relTol          0.1;
    }

    "(U|k|epsilon)Final"
    {
        $U;
        tolerance      1e-05;
        relTol          0;
    }
}

PIMPLE
{
    nOuterCorrectors 1;
    nCorrectors    2;
    nNonOrthogonalCorrectors 0;
    pRefCell        0;
    pRefValue      0;
}

relaxationFactors
{
    fields
    {
    }
    equations
    {
        "U.*"          0.9;
        "k.*"          1;
        "epsilon.*"    1;
    }
}


// ************************************************************************* //

Code:

/*--------------------------------*- C++ -*----------------------------------*\
| =========                |                                                |
| \\      /  F ield        | OpenFOAM: The Open Source CFD Toolbox          |
|  \\    /  O peration    | Version:  2.1.x                                |
|  \\  /    A nd          | Web:      www.OpenFOAM.org                      |
|    \\/    M anipulation  |                                                |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version    2.0;
    format      ascii;
    class      dictionary;
    location    "system";
    object      fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

ddtSchemes
{
    default        Euler;
}

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

divSchemes
{
    default        none;
    div(phi,U)      Gauss limitedLinearV 1;
    div(phi,k)      Gauss limitedLinear 1;
    div(phi,epsilon) Gauss limitedLinear 1;
    div(phi,R)      Gauss limitedLinear 1;
    div(R)          Gauss linear;
    div(phi,nuTilda) Gauss limitedLinear 1;
    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              ;
}


// ************************************************************************* //

It seems that settings in pimpleFoam is much more complex than those in icoFoam, can you guide me how to make adjustment to these files?

kkpal May 17, 2013 11:56

I just tried changing the settings in pimpleFoam to the ones you provided, hoping that it would also give good result, but it did not.
It seems in my case ,icoFoam does a better job than pimpleFoam.

or pimpleFoam requires something other different settings?

kkpal May 17, 2013 12:36

dear sasan
I think I found the cause for the inaccuracy of the Str number in pimpleFoam.

HTML Code:

http://www.cfd-online.com/Forums/openfoam-solving/94785-icofoam-vs-pisofoam-laminar.html
in this thread it is noted that relaxation may affect the Str number. So I removed the relaxation parameters and magically the good result came out!! Though I don't know what is the particular reason for this improvement.

it is found out that for unsteady cases relaxation is more than necessary. however, in pimpleFoam relaxation is allowable, should we never use relaxation in pimpleFoam when dealing with unsteady cases?

sasanghomi May 17, 2013 15:31

Hi kia ,
You are welcome .
I tried to simulate turbulent flow around a cylinder with pisoFoam 6-7 month ago.But I had some problems and the case didn't converge and amplitude of Lift didn't get a fix value(oscillation was not regular ). Actually I didn't succeed to simulate the flow accurately.
About relaxation factor I should say that I have heard when you use PISO algorithm for solving equations if you use relaxation factor only final result (after convergence) is accurate.
Anyway I am interested in simulation of turbulent flow around a cylinder and I will try to do it.
Let me know your progress.

Thanks and best regards,
Sasan.

sherandlock September 20, 2013 16:27

Help
 
Hi Sasan,

Thank you for your help very much.

This is my error. When time is 1.45s. I have no idea why this is happenning, Would you like to enlighten me a little bit?

Courant Number mean: 1.11225e+91 max: 2.80651e+96
#0 Foam::error::printStack(Foam::Ostream&) in "/home/yzhou/OpenFOAM/OpenFOAM-2.1.1/platforms/linux64Gcc44DPOpt/lib/libOpenFOAM.so"
#1 Foam::sigFpe::sigHandler(int) in "/home/yzhou/OpenFOAM/OpenFOAM-2.1.1/platforms/linux64Gcc44DPOpt/lib/libOpenFOAM.so"
#2 __restore_rt at sigaction.c:0
#3 Foam::PBiCG::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const in "/home/yzhou/OpenFOAM/OpenFOAM-2.1.1/platforms/linux64Gcc44DPOpt/lib/libOpenFOAM.so"
#4 Foam::fvMatrix<Foam::Vector<double> >::solve(Foam::dictionary const&) in "/home/yzhou/OpenFOAM/OpenFOAM-2.1.1/platforms/linux64Gcc44DPOpt/bin/icoFoam"
#5 Foam::fvMatrix<Foam::Vector<double> >::solve() in "/home/yzhou/OpenFOAM/OpenFOAM-2.1.1/platforms/linux64Gcc44DPOpt/bin/icoFoam"
#6 main in "/home/yzhou/OpenFOAM/OpenFOAM-2.1.1/platforms/linux64Gcc44DPOpt/bin/icoFoam"
#7 __libc_start_main in "/lib64/libc.so.6"
#8 Foam::UOPstream::write(char) in "/home/yzhou/OpenFOAM/OpenFOAM-2.1.1/platforms/linux64Gcc44DPOpt/bin/icoFoam"
Floating exception

sasanghomi September 20, 2013 17:37

Hi sherandlock ,

Your case has diverged . The Courant number is very high . So I only have one idea ,
Try to use adjustTimeStep in the controlDict. Add below lines in the controlDict :
Code:

adjustTimeStep  yes;
 
maxCo          0.5;
 
maxDeltaT      0.01;

Hope this helps.

Maimouna February 26, 2014 12:56

flow past a circular cylinder
 
Dear Sasan,

I'm try to implement flow past circular cylinder in pimpleFoam solver. I attached the case that I'm looking for (pdf file). I blocked and checked mesh everything was fine. I run the case without any problem. But, when I plotted drag and lift forces (using Matlab), it gave me inconvenience result. I don't know where is my mistake.

Anyway, I attached my case if you could please go through all files and checked please what are my mistakes.

NT: D = 1, Re = 100. I'm trying to fix nu in transportProperties file and change u in the attached file because I didn't know where are my errors so I'm trying to do different ways. Also, might blockMeshDict affects my results if you could check please.

Many thanks in advanced.

sasanghomi February 28, 2014 09:36

Hi,

There is no attached file, honestly!

best regards.

Maimouna February 28, 2014 09:45

2 Attachment(s)
Hi Sasan,

sorry, I attached them again.

Looking forward for your help.

kkpal March 3, 2014 22:24

I think at Re=100, turbulence model will jeopardize your result. In this regime the flow is mainly 2 dimensional and could be regarded as not turbulent.

Quote:

Originally Posted by Maimouna (Post 476958)
Dear Sasan,

I'm try to implement flow past circular cylinder in pimpleFoam solver. I attached the case that I'm looking for (pdf file). I blocked and checked mesh everything was fine. I run the case without any problem. But, when I plotted drag and lift forces (using Matlab), it gave me inconvenience result. I don't know where is my mistake.

Anyway, I attached my case if you could please go through all files and checked please what are my mistakes.

NT: D = 1, Re = 100. I'm trying to fix nu in transportProperties file and change u in the attached file because I didn't know where are my errors so I'm trying to do different ways. Also, might blockMeshDict affects my results if you could check please.

Many thanks in advanced.


Maimouna March 4, 2014 06:00

Dear Kai Zhang,

I'm working in laminar not turbulence model.

Have I changed my solver from pimpleFoam to another solver or that does not affect?

What other changes would be supposed?

Regards

alexeym March 4, 2014 06:17

Quote:

Originally Posted by Maimouna (Post 477891)
I'm working in laminar not turbulence model.

According to your case files, you're working with oneEqEddy LES model for the turbulence. If you'd like to run simulation for laminar case you need to:

1. Put RASModel in constant/turbulenceProperties
2. Put
Code:

RASModel        laminar;

turbulence      off;

printCoeffs    on;

in constant/RASProperties.

Also I'd suggest you to change fvSolution:
Code:

PIMPLE
{
    nOuterCorrectors 10;
    nCorrectors    2;
    nNonOrthogonalCorrectors 0;
    pRefCell        0;
    pRefValue      0;

    residualControl
    {
        "(U|p)"
        {
            tolarance 1e-4;
            relTol 0;
        }
    }
}

to be sure that you have converged solution on every time step.

Maimouna March 4, 2014 06:51

Dear Alexey,

many thanks for your reply. I did all changes that you supposed. After typing pimpleFoam in the command window, I got this error
[QUOTE]
Quote:

/*---------------------------------------------------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.0 |
| \\ / A nd | Web: http://www.extend-project.de |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
Build : 3.0-8d34057e525d
Exec : pimpleFoam
Date : Mar 04 2014
Time : 10:40:09
Host : maimouna-desktop
PID : 3105
CtrlDict : /home/maimouna/foam/foam-extend-3.0/etc/controlDict
Case : /home/maimouna/foam/foam-extend-3.0/tutorials/incompressible/pimpleFoam/circularCylinderModified
nProcs : 1
SigFpe : Enabling floating point exception trapping (FOAM_SIGFPE).

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create time

Create mesh for time = 0.000000e+00

Reading field p

Reading field U

Reading/calculating face flux field phi

Selecting incompressible transport model Newtonian
Selecting turbulence model type RASModel
Selecting RAS turbulence model laminar


--> FOAM FATAL IO ERROR:
keyword turbulence is undefined in dictionary "/home/maimouna/foam/foam-extend-3.0/tutorials/incompressible/pimpleFoam/circularCylinderModified/constant/RASProperties"

file: /home/maimouna/foam/foam-extend-3.0/tutorials/incompressible/pimpleFoam/circularCylinderModified/constant/RASProperties from line 18 to line 82.

From function dictionary::lookupEntry(const word&, bool, bool) const
in file db/dictionary/dictionary.C at line 395.

FOAM exiting

maimouna@maimouna-desktop:~/foam/foam-extend-3.0/tutorials/incompressible/pimpleFoam/circularCylinderModified$
What does this error mean?

alexeym March 4, 2014 06:56

Well,

Post your RASProperties file, otherwise I can only suggest that RASProperties file is incorrect ;)

Maimouna March 4, 2014 07:01

This is RASProperties file

Quote:

/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object RASProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

RASModel laminar; //oneEqEddy;

delta cubeRootVol;

printCoeffs on;

cubeRootVolCoeffs
{
deltaCoeff 1;
}

PrandtlCoeffs
{
delta cubeRootVol;
cubeRootVolCoeffs
{
deltaCoeff 1;
}

smoothCoeffs
{
delta cubeRootVol;
cubeRootVolCoeffs
{
deltaCoeff 1;
}

maxDeltaRatio 1.1;
}

Cdelta 0.158;
}

vanDriestCoeffs
{
delta cubeRootVol;
cubeRootVolCoeffs
{
deltaCoeff 1;
}

smoothCoeffs
{
delta cubeRootVol;
cubeRootVolCoeffs
{
deltaCoeff 1;
}

maxDeltaRatio 1.1;
}

Aplus 26;
Cdelta 0.158;
}

smoothCoeffs
{
delta cubeRootVol;
cubeRootVolCoeffs
{
deltaCoeff 1;
}

maxDeltaRatio 1.1;
}


// ************************************************** *********************** //
Regards

alexeym March 4, 2014 07:06

Well, can you please tell me the difference between what you've posted and what I've suggested to put into RASProperties?

Can you create a file with just
Code:

/*--------------------------------*- C++ -*----------------------------------*\
| =========                |                                                |
| \\      /  F ield        | OpenFOAM: The Open Source CFD Toolbox          |
|  \\    /  O peration    | Version:  2.2.2                                |
|  \\  /    A nd          | Web:      www.OpenFOAM.org                      |
|    \\/    M anipulation  |                                                |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version    2.0;
    format      ascii;
    class      dictionary;
    location    "constant";
    object      RASProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

RASModel        laminar;

turbulence      off;

printCoeffs    on;


// ************************************************************************* //

?

The error you've got tells you that there's no turbulence keyword in RASProperties files, and in fact there's no such keyword in your file.

Maimouna March 4, 2014 07:11

Dear Alexey,

sorry for that mistakes.

I is running now. I will let you know about the result.

Many thanks

Maimouna March 4, 2014 07:36

1 Attachment(s)
Dear Alexy,

the running is done.
I have two questions please
1. in cotrolDict file (attached)
startTime 0;
endTime 25.0;
deltaT 0.01;

but the running is completed after 1.4, why?
Code:

/*--------------------------------*- C++ -*----------------------------------*\
| =========                |                                                |
| \\      /  F ield        | OpenFOAM: The Open Source CFD Toolbox          |
|  \\    /  O peration    | Version:  1.6                                  |
|  \\  /    A nd          | Web:      www.OpenFOAM.org                      |
|    \\/    M anipulation  |                                                |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version    2.0;
    format      ascii;
    class      dictionary;
    location    "system";
    object      controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

application    pimpleFoam;

startFrom      latestTime;

startTime      0;

stopAt          endTime;

endTime        25.0;

deltaT          0.01; //1e-04

writeControl    adjustableRunTime;

writeInterval  0.1; //5.0e-1

purgeWrite      0;

writeFormat    binary;

writePrecision  6;

writeCompression uncompressed;

timeFormat      scientific;

timePrecision  6;

runTimeModifiable yes;

adjustTimeStep    yes;

maxCo            0.5;

maxDeltaT        2.0e-3;

functions
{
    probes
    {
        type            probes;
        functionObjectLibs ("libsampling.so");
        enabled        true;
        outputControl  timeStep;
        outputInterval  1;
        probeLocations
        (
            ( 0.05  0.0  0.002 )
            ( 0.05  0.01  0.002 )
            ( 0.05  0.01  0.002 )
            ( 0.05  0.01  0.002 )
            ( 0.05  0.01  0.002 )
            ( 0.05  0.01  0.002 )
            ( 0.05  0.01  0.002 )
        );

        fields
        (
            p
        );
    }

    forces
    {
        type        forceCoeffs;
        functionObjectLibs ( "libforces.so" );
        outputControl timeStep;
        outputInterval 1;
        patches
        (
            walls
        );
            directForceDensity no;

        pName      p;
        UName      U;
        rhoName    rhoInf;
        //log        true;
        rhoInf      994.5;
        CofR        ( 0 0 0 );
        liftDir    ( 0 1 0 );
        dragDir    ( 1 0 0 );
        pitchAxis  ( 0 0 1 );
        magUInf    1.787e-4; //1; //0.54
        lRef        0.04;
        Aref        0.0157;
        Aref1        0.004;
        rhoRef      994.5;
    }

    fieldAverage1
    {
        type            fieldAverage;
        functionObjectLibs ("libfieldFunctionObjects.so");
        enabled        true;
        outputControl  outputTime;
        fields
        (
            U
            {
                mean        on;
                prime2Mean  on;
                base        time;
            }

            p
            {
                mean        on;
                prime2Mean  on;
                base        time;
            }
        );
    }
}


// ************************************************************************* //




2. the drag chart is given as attached. Why? I know the drag coefficient figure is tottaly different, whats the wrong?

Best regards


All times are GMT -4. The time now is 12:21.