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/)
-   -   Problems with dynamic Mesh (AMI Surface) (https://www.cfd-online.com/Forums/openfoam-solving/252067-problems-dynamic-mesh-ami-surface.html)

bumi-the-man September 25, 2023 04:05

Problems with dynamic Mesh (AMI Surface)
 
4 Attachment(s)
Dear Community,

I’m trying to simulate a stirred column using AMI surfaces. The stirrer consists of 3 rods along the Z-axis which rotate inside the column. The stirrer moves very close to the column walls which causes the diameter of the AMI surface to be very close to the diameter of the column diameter. Now, I was able to run fist simulations with the pimpleFoam solver. The mesh looks quite good to me. Also, during the simulation, the CFL number remained very low (<0.3). From the results, the velocity and kinematic pressure profile in the Z-plane look very plausible (see pictures 1 and 2). However, the kinematic pressure profile along the X-plane looks extremely weird (picture 3). It oddly jumps abruptly from time step to time step. Further, according to real-world experiments, Taylor-Couette-Instabilities should form along the walls of the column. With ANSYS, these vortices nicely appeared. But with OpenFoam, they don’t really appear. Now to my questions:

1. As you can see in the images, there is a clear visible border at the AMI interface. Some weird, unphysical things are happening there. Why is that? Do you think it is a problem, that the diameter of the AMI surface is close to the diameter of the column?
2. Also, I have a folder called “DynamicCode” which is always generated by OpenFoam when I run a simulation. Why is that?
3. How could I improve my simulation to obtain more accurate results without these weird pressure jumps.

Very Best,

Bumi-The-Man


--------------------------------
CODE
--------------------------------
DynamicMeshDict
--------------------------------
Code:

/*--------------------------------*- C++ -*----------------------------------*\
| =========                |                                                |
| \\      /  F ield        | OpenFOAM: The Open Source CFD Toolbox          |
|  \\    /  O peration    | Version:  v2306                                |
|  \\  /    A nd          | Website:  www.openfoam.com                      |
|    \\/    M anipulation  |                                                |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version    2.0;
    format      ascii;
    class      dictionary;
    object      dynamicMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

dynamicFvMesh  dynamicMotionSolverFvMesh;

motionSolverLibs (fvMotionSolvers);

motionSolver    solidBody;

cellZone        rotatingZone;


//type solidBodyMotionDisplacement;

solidBodyMotionFunction  rotatingMotion;

origin      (0 0 0);
axis        (0 0 1);
omega      3;


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

--------------------
controlDict
-------------------

Code:


/*--------------------------------*- C++ -*----------------------------------*\
| =========                |                                                |
| \\      /  F ield        | OpenFOAM: The Open Source CFD Toolbox          |
|  \\    /  O peration    | Version:  v2306                                |
|  \\  /    A nd          | Website:  www.openfoam.com                      |
|    \\/    M anipulation  |                                                |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version    2.0;
    format      ascii;
    class      dictionary;
    object      controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

application    pimpleFoam;

startFrom      latestTime;

startTime      0;

stopAt          endTime;

endTime        20;

deltaT          0.001;

writeControl    runTime;

writeInterval  0.2;

purgeWrite      0;

writeFormat    ascii;

writePrecision  7;

writeCompression no;

timeFormat      general;

timePrecision  6;

runTimeModifiable yes;

adjustTimeStep  no;

maxCo          1;

maxDeltaT      1;

functions
{
    #include "relVelocity"
}


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

-----------------
snappyHexMeshDict
-----------------

Code:

/*--------------------------------*- C++ -*----------------------------------*\
| =========                |                                                |
| \\      /  F ield        | OpenFOAM: The Open Source CFD Toolbox          |
|  \\    /  O peration    | Version:  v2306                                |
|  \\  /    A nd          | Website:  www.openfoam.com                      |
|    \\/    M anipulation  |                                                |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version    2.0;
    format      ascii;
    class      dictionary;
    object      snappyHexMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

castellatedMesh true;
snap            true;
addLayers      false;

geometry
{
    AMI.stl{ type triSurfaceMesh; name AMI;}
    inlet.stl{ type triSurfaceMesh; name inlet;}
    stirrer.stl{ type triSurfaceMesh; name stirrer;}
    outlet.stl{ type triSurfaceMesh; name outlet;}
    column.stl{ type triSurfaceMesh; name column;}
}

castellatedMeshControls
{
    maxLocalCells 100000;
    maxGlobalCells 8000000;
    minRefinementCells 0;
    maxLoadUnbalance 0.10;
    nCellsBetweenLevels 2;

    features
    (
        { file "AMI.eMesh"; level 3;} // Note: better: level 3
        { file "stirrer.eMesh"; level 2;} // Note: better: level 3
        { file "inlet.eMesh"; level 0;}
        { file "outlet.eMesh"; level 0;}
        { file "column.eMesh"; level 0;}
    );

    refinementSurfaces
    {
        AMI
        {
            level (3 3); // Note: better: levels 3 3
            faceType boundary;
            cellZone rotatingZone;
            faceZone rotatingZone;
            cellZoneInside inside;
        }
        stirrer{ level (2 2);} // Note: better: levels 3 3
        inlet{ level (0 0);}
        outlet{ level (0 0);}
        column{ level (0 0);}
    }

    resolveFeatureAngle 30;

    refinementRegions
    {
        // Note: for better mesh quality utilize this refinement region
        // AMI{ mode inside; levels ((1E15 3));}
    }

    locationInMesh (0.1001 0.001 0.0101);
    allowFreeStandingZoneFaces false;
}

snapControls
{
    nSmoothPatch 3;
    tolerance 4.0;
    nSolveIter 300;
    nRelaxIter 5;
    nFeatureSnapIter 10;
    implicitFeatureSnap true;
    explicitFeatureSnap false;
    multiRegionFeatureSnap true;
}

addLayersControls
{
    relativeSizes true;

    layers
    {
    }

    expansionRatio 1.0;
    finalLayerThickness 0.3;
    minThickness 0.1;
    nGrow 0;
    featureAngle 30;
    nRelaxIter 3;
    nSmoothSurfaceNormals 1;
    nSmoothNormals 3;
    nSmoothThickness 10;
    maxFaceThicknessRatio 0.5;
    maxThicknessToMedialRatio 0.3;
    minMedialAxisAngle 90;
    nBufferCellsNoExtrude 0;
    nLayerIter 50;
}

meshQualityControls
{
    maxNonOrtho 65;
    maxBoundarySkewness 20;
    maxInternalSkewness 4;
    maxConcave 80;
    minVol 1e-13;
    minTetQuality -1;
    minArea -1;
    minTwist 0.01;
    minDeterminant 0.001;
    minFaceWeight 0.05;
    minVolRatio 0.01;
    minTriangleTwist -1;
    nSmoothScale 4;
    errorReduction 0.75;
    relaxed
    {
        maxNonOrtho 75;
    }
}

mergeTolerance 1e-6;


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



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