Project

BlockMesh Drill down challenge

Objectives of the Project:-

(1) Create the geometry using BlockMesh in OpenFOAM.

(2) Simulate the flow using the icoFoam solver.

(3) Compare the velocity magnitude profile for different values of mesh grading factor at a distance of 0.085m from the inlet.

Theory:-

For this project, the lid-driven cavity tutorial provided in OpenFOAM has been modified.

IcoFoam solver is a transient solver for incompressible, laminar flow of Newtonian fluids. It uses the PISO algorithm to solve the continuity and momentum equations.

Assumptions:-

  • Number of cells along X-direction=200
  • Number of cells along Y-direction=20
  • Number of cells along Z-direction=1
  • Grading factor near all walls=0.2
  • No slip boundary condition given at all walls
  • Kinematic viscosity=0.01 m^2/second
  • Inlet velocity=0.5 m/second
  • Simulation time=0.25 seconds
  • time-step=0.0001 sec

The blockMeshDict file has been edited to obtain the geometry as follows:

For ungraded mesh, the grading factor is kept as 1. Also to ensure proper capture of flow properties at the boundaries, grading factor of 0.2 is kept at walls so that mesh is fine in that section.

Mesh grading factor= Size of last cell/Size of the first cell

When mesh grading factor<<1, the mesh is finer at the end as compared to start of blockMesh.

When mesh grading factor>>1, the mesh is finer at the start as compared to end of blockMesh.

The BlockMeshDict File:-

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

convertToMeters 0.01;

vertices
(
    (0 0 0)		//0
    (8 0 0)		//1
    (8 0.5 0)		//2
    (0 0.5 0)		//3
    (0 0 0.1)		//4
    (8 0 0.1)		//5
    (8 0.5 0.1)		//6
    (0 0.5 0.1)		//7
    (0 1 0)		//8
    (8 1 0)		//9
    (0 1 0.1)		//10
    (8 1 0.1)		//11
    (8 -1 0)		//12
    (20 -1 0)		//13
    (20 -0.5 0)		//14
    (8 -0.5 0)		//15
    (8 -1 0.1)		//16
    (20 -1 0.1)		//17
    (20 -0.5 0.1)	//18
    (8 -0.5 0.1)	//19
    (20 0 0)		//20
    (20 0.5 0)		//21
    (20 0 0.1)		//22
    (20 0.5 0.1)	//23
    (20 1 0)		//24
    (20 1 0.1)		//25
);

blocks
(
    hex (0 1 2 3 4 5 6 7) (80 5 1) simpleGrading (1 1 1)
    hex (3 2 9 8 7 6 11 10) (80 5 1) simpleGrading (1 1 1)
    hex (2 21 24 9 6 23 25 11) (120 5 1) simpleGrading (1 1 1)
    hex (1 20 21 2 5 22 23 6) (120 5 1) simpleGrading (1 1 1)
    hex (15 14 20 1 19 18 22 5) (120 5 1) simpleGrading (1 1 1)
    hex (12 13 14 15 16 17 18 19) (120 5 1) simpleGrading (1 1 1)
);

edges
(
);

boundary
(
    inlet
    {
	type patch;
	faces
	(
	    (0 3 7 4)
	    (3 8 10 7)
	);
    }
    outlet
    {
	type patch;
	faces
	(
	    (23 25 24 21)
	    (22 23 21 20)
	    (18 22 20 14)
	    (17 18 14 13)
	);
    }
    noslipwall
    {
        type wall;
        faces
        (
            (8 9 11 10)
            (13 12 16 17)
            (15 1 5 19)
            (9 24 25 11)
	    (12 15 19 16)
            (0 4 5 1)
        );
    }
    frontandback
    {
        type empty;
        faces
        (
            (0 1 2 3)
            (3 2 9 8)
	    (2 21 24 9)
            (1 20 21 2)
            (15 14 20 1)
	    (12 13 14 15)
            (4 7 6 5)
            (7 10 11 6)
	    (6 11 25 23)
	    (5 6 23 22)
	    (19 5 22 18)
	    (16 19 18 17)
        );
    }
);

mergePatchPairs
(
);

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

The BlockMesh Geometry:-

Initial conditions for Pressure and Velocity are as given below:

Pressure:-

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

dimensions      [0 2 -2 0 0 0 0];

internalField   uniform 0;

boundaryField
{
    inlet
    {
        type            zeroGradient;
    }

    outlet
    {
        type            fixedValue;
	value		uniform 0;
    }

    noslipwall
    {
        type            zeroGradient;
    }

    frontAndBack
    {
        type            empty;
    }
}

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

Velocity:-

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

dimensions      [0 1 -1 0 0 0 0];

internalField   uniform (0 0 0);

boundaryField
{
    inlet
    {
        type            fixedValue;
        value           uniform (0.5 0 0);
    }

    outlet
    {
        type            zeroGradient;
    }

    noslipwall
    {
        type            noSlip;
    }

    frontAndBack
    {
        type            empty;
    }
}

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

The ControlDict File:-

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



application     icoFoam;

startFrom       startTime;

startTime       0;

stopAt          endTime;

endTime         0.25;

deltaT          0.0001;

writeControl    timeStep;

writeInterval   100;

purgeWrite      0;

writeFormat     ascii;

writePrecision  6;

writeCompression off;

timeFormat      general;

timePrecision   6;

runTimeModifiable true;




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

RESULTS:-

Case 1: Ungraded Mesh (Mesh grading factor=1)

Case 2: Mesh grading factor=0.2

Only the block command in code is modified to change the mesh grading factor. The mesh near step is made finer by changing the mesh grading factor. The code is given below:

blocks
(
    hex (0 1 2 3 4 5 6 7) (80 5 1) simpleGrading (0.2 5 1)
    hex (3 2 9 8 7 6 11 10) (80 5 1) simpleGrading (0.2 0.2 1)
    hex (2 21 24 9 6 23 25 11) (120 5 1) simpleGrading (5 0.2 1)
    hex (1 20 21 2 5 22 23 6) (120 5 1) simpleGrading (5 5 1)
    hex (15 14 20 1 19 18 22 5) (120 5 1) simpleGrading (5 0.2 1)
    hex (12 13 14 15 16 17 18 19) (120 5 1) simpleGrading (5 5 1)
);

Case 3: Mesh grading factor=0.5 :-

blocks
(
    hex (0 1 2 3 4 5 6 7) (80 5 1) simpleGrading (0.5 2 1)
    hex (3 2 9 8 7 6 11 10) (80 5 1) simpleGrading (0.5 0.2 1)
    hex (2 21 24 9 6 23 25 11) (120 5 1) simpleGrading (2 0.2 1)
    hex (1 20 21 2 5 22 23 6) (120 5 1) simpleGrading (2 2 1)
    hex (15 14 20 1 19 18 22 5) (120 5 1) simpleGrading (2 0.5 1)
    hex (12 13 14 15 16 17 18 19) (120 5 1) simpleGrading (2 5 1)
);

Case 4: Mesh grading factor=0.8 :-

blocks
(
    hex (0 1 2 3 4 5 6 7) (80 5 1) simpleGrading (0.8 1.25 1)
    hex (3 2 9 8 7 6 11 10) (80 5 1) simpleGrading (0.8 0.2 1)
    hex (2 21 24 9 6 23 25 11) (120 5 1) simpleGrading (1.25 0.2 1)
    hex (1 20 21 2 5 22 23 6) (120 5 1) simpleGrading (1.25 1.25 1)
    hex (15 14 20 1 19 18 22 5) (120 5 1) simpleGrading (1.25 0.8 1)
    hex (12 13 14 15 16 17 18 19) (120 5 1) simpleGrading (1.25 5 1)
);

Velocity Profiles:-

From the above plots of the Velocity profiles, it can be seen that a better distribution of boundary layer separation is obtained for mesh grading factor of 0.2.

Also, the CFL number increases as the grading factor is decreased.

Conclusion:-

To capture the flow conditions accurately, a finer mesh is required.

Typically at the boundaries to capture the boundary layer separation.

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.