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/)
-   -   Very low Courant numbers for multiple AMI (https://www.cfd-online.com/Forums/openfoam-solving/223373-very-low-courant-numbers-multiple-ami.html)

usr0830 January 8, 2020 04:55

Very low Courant numbers for multiple AMI
 
2 Attachment(s)
Hello,
I am studying the interaction of 2 rotors using cyclic AMI with pimpleFoam. The wind velocity is 10m/s and the rotor has a high rotational speed of 1200 rpm.
The maximum Courant number is set at 0.7. The smallest theoretically calculated time step size for this Courant number is 1e-5 and the largest is 1e-3. The simulations never reach these time step sizes. They oscillate around 1e-7 and 1e-6.

When I map the Courant number obtained from OpenFOAM, I see that in the outer domain, where the cells are comparatively larger than inside the rotor region, the courant number values are very small (in the order of e-5). The velocity in this region is initialised at 10 m/s (Figure2). So, I expected higher Courant numbers here.

The problem here, in my opinion, is that these low Co values are causing the time step sizes to be very small and hence slowing the simulation down drastically. There also seems to be a small jump in the Co at the interface between the stationary and the rotating parts. (Shown in Fig1)

Could anybody please help me understand why the Co is so low in the outer domain?
Is there a way to set a minimum Courant number for the simulations?
I have attached a few set-up files which might give some insight into the issue.

Thanks in advance.



Controldict file

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    "system";
    object      controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

application    pimpleFoam;

startFrom      latestTime;

startTime      0;

stopAt          endTime;
//stopAt                        nextWrite;
//stopAt                        noWriteNow

endTime        2;

deltaT          1e-5;

writeControl    adjustableRunTime;

writeInterval  0.1;

purgeWrite      0;

writeFormat    ascii;

writePrecision  9;

writeCompression off;

timeFormat      general;

timePrecision  6;

runTimeModifiable true;

adjustTimeStep  yes;

maxCo          0.7;


functions
{
forces_t1
    {
        type                forces;
        functionObjectLibs  ("libforces.so");
        patches            (blades1 blades2);
        origin  (0.0 0.0 0.5);
        coordinateRotation
                {
                        type axesRotation;
                        e3      (0 0 1);
                        e1      (1 0 0);
                }
        rho                    rhoInf;
        rhoInf              1.225;
        writeControl      adjustableRunTime;
        writeInterval      0.00001;
    }
forces_t2
    {
        type                forces;
        functionObjectLibs  ("libforces.so");
        patches            (blades3 blades4);
        origin  (0.0 0.65 0.5);
        coordinateRotation
                {
                        type axesRotation;
                        e3      (0 0 1);
                        e1      (1 0 0);
                }
        rho                    rhoInf;
        rhoInf              1.225;
        writeControl      adjustableRunTime;
        writeInterval      0.00001;
    }
Co1
    {
        type                CourantNo;
        libs                ("libfieldFunctionObjects.so");
        executeControl      timeStep;
        executeInterval    1;
        writeControl        writeTime;
    }

};


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

fvSchemes

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    "system";
    object      fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

ddtSchemes
{
    //default        Euler;
    default        CrankNicolson 0.5;
}

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

divSchemes
{
    default            none;
    div(phi,U)          Gauss linearUpwindV grad(U);
    div(phi,nuTilda)    Gauss upwind;
    div((nuEff*dev2(T(grad(U))))) Gauss linear;
}

laplacianSchemes
{
    default        Gauss linear corrected;
}

interpolationSchemes
{
    default        linear;
}

snGradSchemes
{
    default        corrected;
}

fluxRequired
{
    default        no;
    pcorr          ;
    p              ;
}

wallDist
{
        method meshWave;
}


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

fvSolution
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    "system";
    object      fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

solvers
{
    pcorr
    {
        solver          GAMG;
        smoother        GaussSeidel;
        nPreSweeps      0;
        nPostSweeps    2;
        cacheAgglomeration off;
        agglomerator    faceAreaPair;
        nCellsInCoarsestLevel 10;
        mergeLevels      1;

        tolerance        0.001;
        relTol          0;
    }

    p
    {
        $pcorr;
        tolerance      1e-06;
        relTol          0.01;
    }

    pFinal
    {
        $p;
        tolerance      1e-06;
        relTol          0;
    }
//    Phi
//    {
//        solver          GAMG;
//        smoother        DIC;
//
//        tolerance      1e-06;
//        relTol          0.01;
//    }
 

    "(U|nuTilda)"
    {
        solver          smoothSolver;
        smoother        GaussSeidel;
        tolerance      1e-05;
        relTol          0.1;
    }

    "(U|nuTilda)Final"
    {
        $U;
        tolerance      1e-06;
        relTol          0;
    }

}

potentialFlow
{
    nNonOrthogonalCorrectors 2;
}

SIMPLE
{
    nNonOrthogonalCorrectors 0;
    pRefCell        0;
    pRefValue      0;
}


PIMPLE
{
    correctPhi          no;
    nOuterCorrectors    1;
    nCorrectors        2;
    nNonOrthogonalCorrectors 5;

    pRefCell            0;
    pRefValue          0;
}

relaxationFactors
{
    "(U|nuTilda).*"    1;
}

cache
{
    grad(U);
}

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

boundary
Code:

FoamFile
{
    version    2.0;
    format      ascii;
    class      polyBoundaryMesh;
    location    "constant/polyMesh";
    object      boundary;
}

13       
(
    blades1
    {
        type wall;
        inGroups        1(wall);
        nFaces 99;
        startFace 36323;
    }
    blades2
    {
        type wall;
        inGroups        1(wall);
        nFaces 99;
        startFace 36422;
    }
    blades3
    {
        type wall;
        inGroups        1(wall);
        nFaces 99;
        startFace 36521;
    }
    blades4
    {
        type wall;
        inGroups        1(wall);
        nFaces 99;
        startFace 36620;
    }
    bottom
    {
        type symmetryPlane;
        nFaces 39;
        startFace 36719;
    }
    ext_interface1
    {
        type cyclicAMI;
        nFaces 38;
        startFace 36758;
        matchTolerance  0.025;
        transform      noOrdering;
        neighbourPatch  int_interface1;
        method          faceAreaWeightAMI;
    }
    ext_interface2
    {
        type cyclicAMI;
        nFaces 38;
        startFace 36796;
        matchTolerance  0.025;
        transform      noOrdering;
        neighbourPatch  int_interface2;
        method          faceAreaWeightAMI;
    }
    inlet
    {
        type patch;
        nFaces 39;
        startFace 36834;
    }
    int_interface1
    {
        type cyclicAMI;
        nFaces 38;
        startFace 36873;
        matchTolerance  0.025;
        transform      noOrdering;
        neighbourPatch  ext_interface1;
        method          faceAreaWeightAMI;
    }
    int_interface2
    {
        type cyclicAMI;
        nFaces 38;
        startFace 36911;
        matchTolerance  0.025;
        transform      noOrdering;
        neighbourPatch  ext_interface2;
        method          faceAreaWeightAMI;
    }
    outlet
    {
        type patch;
        nFaces 39;
        startFace 36949;
    }
    sides
    {
        type empty;
        inGroups        1(empty);
        nFaces 45204;
        startFace 36988;
    }
    top
    {
        type symmetryPlane;
        nFaces 39;
        startFace 82192;
    }
)


ybapat January 8, 2020 06:20

Courant number in each cell depends on cell size, velocity and time step. If cells in outder domain are very large, Co No. will be low compared to inner cells if velocities are same.



Regards,
-Yogesh

usr0830 January 8, 2020 07:57

Hello Yogesh,
Thank you for your response.
The time step in my case is adjustable wrt to Co. I would like to increase the time step size for my simulation from 1e-6 to 1e-5 or higher. However, since the Co reduces beyond e-5, this is not possible. Do you have any suggestions to do this for this particular mesh?

Thanks!

ybapat January 8, 2020 23:10

Hello,


You can try coarser mesh if that is possible specially in the region with high CO.



Regards,
-Yogesh

phelps July 24, 2021 08:03

Hello usr0830,


Could you share your dynamicMeshDict file? And what version of OpenFOAM do you use? I'm facing problems too while trying to use multiple AMI, I get the case running with reasonable time steps, but it crashes after a few iterations due 2nd AMI zone not moving correctly. Maybe we can help each other.


Best regards,


Pedro.


All times are GMT -4. The time now is 08:47.