Challenge

Week 8 - Simulation of a backward facing step in OpenFOAM

OBJECTIVE:

Case 1 - Simulate the flow without using any grading factor (i.e., GF = 1)

Case 2 - Simulate the flow with grading factor of 0.2. The cells should be finer near the walls (includig the step wall).

Domain specification

Steps:

open the terminal from Ubuntu (CTRL+ALT+T)

enter the script foam > ls

change the directory cd tutorials > ls

select the incompressible directory cd incompressibe > ls

select icofoam directory using the script cd icofoam > ls

copy the cavity folder to foam run cp -r cavity $FOAM_RUN/cavity_test

change the directory to cd $FOAM_RUN

change to the system directory and edit the block mesh using the script gedit blockMeshDict

change the vertices and the block

similarly check the gedit controlDict

change the physical properties of nu to 1e-5;

navigate to 0 folder and change the pressure p and U velocity using gedit p and gedit U

To run the mesh blockMesh

To check the Mesh checkMesh

To run the case use solver name in this case it is icoFoam

then run the simulation and plot the results using paraFoam

BLOCK MESH FILE CREATING METHOD:

To create the geometry as shown in the figure, we need edit the blockMeshDict file that is available in the system folder of the case setup.

Geometry Creation:

Let us consider creating the geometry using 5 blocks as shown in the figure below,

NOTE: We have demonstrated the geometry creation using 5 blocks and have indexed the vertices this way. This can be varied, according to your comfort.

The Isometric View,

Now let’s, start indexing the Vertices on the Back side of the Blocks, Since openFoam uses C++ programming, we start the index from “0”. (The Numbering of the vertices can be varied according to your comfort)

Similarly, the indexing for the frontside of the Blocks are,



To View the Bigger Picture,



Finally, to define the blocks, we need to specify the right order of vertex indices

For example:

to create the 1st Block for this case,

hex (0 1 2 3 11 12 13 14) (1 1 1) simpleGrading (1 1 1)

Similarly proceed by defining the vertices of the other blocks in the Geometry.

To View geometry that you have created, clear out all the entries inside the boundary section of the blockMeshDict file and execute the blockMesh command in the terminal.

Now open paraview and view the geometry that you have created.

Meshing:

Now to mesh the geometry fill in the number of cells in x, y and z direction inside the second parenthesis of the Hex command,

i.e., hex(0 1 2 3 11 12 13 14) (10 10 1) simplegrading(1 1 1).

since this is a 2D problem, increasing the number of cells in the z direction, doesn’t make sense. To view the mesh in paraFoam, select the surface with edges option and view the mesh.

Similarly to refine the mesh near the walls of the geometry, you need to play around with the numbers in the third parenthesis. We leave that for you to figure out, how It can be done.

Boundary Conditions:

Before we run the simulations, we need to specify the initial and boundary conditions.

The given boundary conditions are,

1.Inlet: (Type patch)

The faces that contribute to inlet boundary are shown above. If we are looking at these faces from the outside, the definition of inlet boundary will be in counter-clockwise direction,

(0 11 14 3)

(3 14 16 5)



2.Outlet: (Type patch)

Similarly, we have 3 faces contributing to the outlet boundary condition. Since we are viewing the faces from outside, hence the definition of the outlet boundary will be in counter-clockwise direction,

(9 8 19 20)

(8 7 18 19)

(7 6 17 18)

Now for the other boundary look at the images below and repeat the steps to define the boundaries.

3.Front & Back: (Type empty)

4.No Slip walls: (Type wall)

After defining the boundaries correctly, to check if you have given defined them correctly, execute the blockMesh command in the terminal.Now open paraFoam, select all the patches and click apply. You will now be able to see the boundary conditions that have been applied to the geometry.

As part of the Challenge, figure out the right initial conditions.

PostProcessing

Line probe:

After the simulation runs through, open the case in paraFoam and click apply.

Then click on the Filters, expand the data analysis group. You will find the plot over line option. If its not present here, use the search option in the filters toolbar and type in “plot over line” to find the option.

After selecting the plot over line, click apply. Now scroll down the plot over line definition, and input the right values of (x,y,z) coordinate to position the probe, just after the step. After positioning the probe, scroll down further until you find a checklist to select the parameter you want to plot along the line probe.

Hit apply to get the parameter plotted along the line probe.

To extract the plot data to an Excel file, click the file option in the toolbar and select the “Export Scene” option. Name the output document and save it.

Now use the GUI to navigate to the directory where the excel file with the plot data has been save to.

Note: The line plot can also be done by installing GNUplot and using singleGraph postprocessing commands.

blockMeshDict file for grading factor 0.2

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

convertToMeters 1;

vertices
(
    (0 0 0)  //0
    (0.08 0 0) //1 
    (0.08 0.005 0) //2
    (0 0.005 0) //3
    (0.08 0.01 0) //4
    (0 0.01 0) //5
    (0.2 0.01 0) //6
    (0.2 0.005 0) //7
    (0.2 0 0)  //8
    (0.2 -0.01 0) //9
    (0.08 -0.01 0)  //10

    (0 0 0.001)  //11
    (0.08 0 0.001)  //12
    (0.08 0.005 0.001)   //13
    (0 0.005 0.001)  //14
    (0.08 0.01 0.001) //15
    (0 0.01 0.001)  //16
    (0.2 0.01 0.001)  //17
    (0.2 0.005 0.001)  //18
    (0.2 0 0.001)  //19
    (0.2 -0.01 0.001) //20
    (0.08 -0.01 0.001)  //21
);

blocks
(
    hex (0 1 2 3 11 12 13 14) (80 5 1) simpleGrading (0.2 5 1)

    hex (3 2 4 5 14 13 15 16) (80 5 1) simpleGrading (0.2 0.2 1)

    hex (1 8 7 2 12 19 18 13) (120 5 1) simpleGrading (5 5 1)

    hex (2 7 6 4 13 18 17 15) (120 5 1) simpleGrading (5 0.2 1)

    hex (10 9 8 1 21 20 19 12) (120 10 1) simpleGrading (5 5 1)
);

edges
(
);

boundary
(
    inlet
    {
        type patch;
        faces
        (
            (0 11 14 3)
            (3 14 16 5)
        );
    }
    upperwall
    {
        type wall;
        faces
        (
            (5 16 15 4)
            (4 15 17 6)
        );
    }
    lowerwall
    {
        type wall;
        faces
        (
            (0 1 12 11)
            (10 9 20 21)
            (10 21 12 1)
        );
    }
    FrontandBack
    {
        type empty;
        faces
        (
            (0 3 2 1)
            (3 5 4 2)
            (10 1 8 9)
            (1 2 7 8)
            (2 4 6 7)
            (11 12 13 14)
            (14 13 15 16)
            (15 13 18 17)
            (13 12 19 18)
            (12 21 20 19)
        );
    }

    outlet
    {
        type patch;
        faces
        (
            (7 6 17 18)
            (8 7 18 19)
            (9 8 19 20)
        );
    }
);

mergePatchPairs
(
);

// ************************************************************************* //
controlDict file:   (Defining the timesteps)

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

application     icoFoam;

startFrom       startTime;

startTime       0;

stopAt          endTime;

endTime         5;

deltaT          0.001;

writeControl    timeStep;

writeInterval   20;

purgeWrite      0;

writeFormat     ascii;

writePrecision  6;

writeCompression off;

timeFormat      general;

timePrecision   6;

runTimeModifiable true;


// ************************************************************************* //
change the physical properties

/*--------------------------------*- C++ -*----------------------------------*\
  =========                 |
  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
   \\    /   O peration     | Website:  https://openfoam.org
    \\  /    A nd           | Version:  9
     \\/     M anipulation  |
\*---------------------------------------------------------------------------*/
FoamFile
{
    format      ascii;
    class       dictionary;
    location    "constant";
    object      transportProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

nu              [0 2 -1 0 0 0 0] 1e-5;


// ************************************************************************* //
change the p pressure values

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

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

internalField   uniform 0;

boundaryField
{
    inlet
    {
        type            zeroGradient;
    }

    upperwall
    {
        type            zeroGradient;
    }

    lowerwall
    {
        type            zeroGradient;
    }

    FrontandBack
    {
        type            empty;
    }

    outlet
    {
        type            fixedValue;
        value           uniform 0;
    }
}

// ************************************************************************* //
change the U velocity values

/*--------------------------------*- C++ -*----------------------------------*\
  =========                 |
  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
   \\    /   O peration     | Website:  https://openfoam.org
    \\  /    A nd           | Version:  10
     \\/     M anipulation  |
\*---------------------------------------------------------------------------*/
FoamFile
{
    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.1 0 0);
    }

    upperwall
    {
        type            noSlip;
    }

    lowerwall
    {
        type            noSlip;
    }

    FrontandBack
    {
        type            empty;
    }

    outlet
    {
        type            zeroGradient;
    }
}

BLOCKMESH EDIT FOR GRADING FACTOR 0.2


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

convertToMeters 1;

vertices
(
    (0 0 0)  //0
    (0.08 0 0) //1 
    (0.08 0.005 0) //2
    (0 0.005 0) //3
    (0.08 0.01 0) //4
    (0 0.01 0) //5
    (0.2 0.01 0) //6
    (0.2 0.005 0) //7
    (0.2 0 0)  //8
    (0.2 -0.01 0) //9
    (0.08 -0.01 0)  //10

    (0 0 0.001)  //11
    (0.08 0 0.001)  //12
    (0.08 0.005 0.001)   //13
    (0 0.005 0.001)  //14
    (0.08 0.01 0.001) //15
    (0 0.01 0.001)  //16
    (0.2 0.01 0.001)  //17
    (0.2 0.005 0.001)  //18
    (0.2 0 0.001)  //19
    (0.2 -0.01 0.001) //20
    (0.08 -0.01 0.001)  //21
);

blocks
(
    hex (0 1 2 3 11 12 13 14) (80 5 1) simpleGrading (1 1 1)

    hex (3 2 4 5 14 13 15 16) (80 5 1) simpleGrading (1 1 1)

    hex (1 8 7 2 12 19 18 13) (120 5 1) simpleGrading (1 1 1)

    hex (2 7 6 4 13 18 17 15) (120 5 1) simpleGrading (1 1 1)

    hex (10 9 8 1 21 20 19 12) (120 10 1) simpleGrading (1 1 1)
);

edges
(
);

boundary
(
    inlet
    {
        type patch;
        faces
        (
            (0 11 14 3)
            (3 14 16 5)
        );
    }
    upperwall
    {
        type wall;
        faces
        (
            (5 16 15 4)
            (4 15 17 6)
        );
    }
    lowerwall
    {
        type wall;
        faces
        (
            (0 1 12 11)
            (10 9 20 21)
            (10 21 12 1)
        );
    }
    FrontandBack
    {
        type empty;
        faces
        (
            (0 3 2 1)
            (3 5 4 2)
            (10 1 8 9)
            (1 2 7 8)
            (2 4 6 7)
            (11 12 13 14)
            (14 13 15 16)
            (15 13 18 17)
            (13 12 19 18)
            (12 21 20 19)
        );
    }

    outlet
    {
        type patch;
        faces
        (
            (7 6 17 18)
            (8 7 18 19)
            (9 8 19 20)
        );
    }
);

mergePatchPairs
(
);

conclusion:

thus simulation was done in openFoam for different garding factors 1 and 0.2.

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.