Challenge

Week 8 - Simulation of a backward facing step in OpenFOAM

                                               Simulation of a backward facing step in OpenFOAM

Aim: To simulate backward faing step in openfoam.

Objective:

1. Simulate an incompressible-laminar-viscous flow through the backward facing step geometry and perform a transient simulation.

2. Perform 2 case studies as described below and compare the results.

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).

3. Measure the velocity profile at 0.085 m from the inlet of the geometry for both case studies and compare. You can use the plot over line tool for this

Solution:

Transient incompressible laminar flow is considered throughout.

 Transient flow : The flow in which pressure and velocity changes with respect to time.

Incompressble flow in which density is constant throughout the flow.

Laminar flow, Reynold's number is less than 2000.

Geometry mentioned below is considered:

Procedure to simulate the flow:

a. To select solver adn copy folder

1. Open terminal command in ubuntu.

2. open tutorials, code: tut

3. And open incompressible folder and select icofoam, then cavity. (code: icoFoam)

4. Copy cavity folder to run folder. using code: 'cp -r block_test/$FOAM_RUN'

5. Type  run command  to open run folder.

6. Open block_test. (code: cd block_test)

7. Open system file.

8. Open blockMesh code file. (code: gedit blockMeshDict)

b. Creating geomrtry in blockmesh

Vertices and faces are considered as mentioned below:

case1- Grading factor =1.

blockmesh edit code:

/*--------------------------------*- 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;
    object      blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

convertToMeters 0.01;

vertices
(
    (0 0 0) //0
    (8 0 0) //1
    (8 0.5 0) //2
    (0 0.5 0)  //3
    (8 1 0)  //4
    (0 1 0)  //5  
    (20 1 0)  //6
    (20 0.5 0) //7
    (20 0 0)  //8
    (20 -1 0)  //9
    (8 -1 0)  //10
    (0 0 0.1) //11
    (8 0 0.1) //12
    (8 0.5 0.1)  //13
    (0 0.5 0.1)  //14
    (8 1 0.1)  //15
    (0 1 0.1)  //16
    (20 1 0.1)  //17
    (20 0.5 0.1) //18
    (20 0 0.1)  //19
    (20 -1 0.1)  //20
    (8 -1 0.1)  //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 (2 7 6 4 13 18 17 15) (120 5 1) simpleGrading (1 1 1)
    hex (1 8 7 2 12 19 18 13) (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)
        );
    }
    outlet
    {
        type patch;
        faces
        (
            (7 6 17 18)
            (8 7 18 19)
            (9 8 19 20)
        );
    }
    frontAndBack
    {
        type empty;
        faces
        (
            (11 12 13 14)
            (14 13 15 16)
            (13 18 17 15)
            (12 19 18 13)
            (21 20 19 12)
            (0 3 2 1)
            (3 5 4 2)
            (2 4 6 7)
            (1 2 7 8)
            (10 1 8 9)
            
            
        );
    }
    fixedWalls
    {
    type wall;
    faces
    (
         (5 16 15 4)
         (4 15 17 6)
         (0 1 12 11)
         (10 9 20 21)
         (10 21 12 1)  //stepside
    );
    }

);
mergePatchPairs
(
);

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

case 2- grading factor= 0.2

blockmeshdict code:

/*--------------------------------*- 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;
    object      blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

convertToMeters 0.01;

vertices
(
    (0 0 0) //0
    (8 0 0) //1
    (8 0.5 0) //2
    (0 0.5 0)  //3
    (8 1 0)  //4
    (0 1 0)  //5  
    (20 1 0)  //6
    (20 0.5 0) //7
    (20 0 0)  //8
    (20 -1 0)  //9
    (8 -1 0)  //10
    (0 0 0.1) //11
    (8 0 0.1) //12
    (8 0.5 0.1)  //13
    (0 0.5 0.1)  //14
    (8 1 0.1)  //15
    (0 1 0.1)  //16
    (20 1 0.1)  //17
    (20 0.5 0.1) //18
    (20 0 0.1)  //19
    (20 -1 0.1)  //20
    (8 -1 0.1)  //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 (2 7 6 4 13 18 17 15) (120 5 1) simpleGrading (5 0.2 1)
    hex (1 8 7 2 12 19 18 13) (120 5 1) simpleGrading (5 5 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)
        );
    }
    outlet
    {
        type patch;
        faces
        (
            (7 6 17 18)
            (8 7 18 19)
            (9 8 19 20)
        );
    }
    frontAndBack
    {
        type empty;
        faces
        (
            (11 12 13 14)
            (14 13 15 16)
            (13 18 17 15)
            (12 19 18 13)
            (21 20 19 12)
            (0 3 2 1)
            (3 5 4 2)
            (2 4 6 7)
            (1 2 7 8)
            (10 1 8 9)
            
            
        );
    }
    fixedWalls
    {
    type wall;
    faces
    (
         (5 16 15 4)
         (4 15 17 6)
         (0 1 12 11)
         (10 9 20 21)
         (10 21 12 1)  //stepside
    );
    }

);
mergePatchPairs
(
);

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

Explaination:

1. Define the vertices as shown in the figure taking 0 as reference, with approppriate difference.

2. Defining hexagonal blocks, mesh size and grading of uniform difference.

3. Defining boundaries such as inlet and outlet patch, front and back faces empty, fixed walls.

Mesh generation:

Total number of cells along x-axis: 200

Total number of cells along y-axis: 20

4. In case 2 grading factor 0.2:

0.2 and (inverse of 0.2 is) 5 is taken , to make finer mesh at walls

c. Control dict file code:

1. open control dict file in system folder (code: gedit controlDict)

case 1:

code:

/*--------------------------------*- 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         0.5;

deltaT          0.001;

writeControl    runTime;

writeInterval   0.1;

purgeWrite      0;

writeFormat     ascii;

writePrecision  6;

writeCompression off;

timeFormat      general;

timePrecision   6;

runTimeModifiable true;


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

case2:

/*--------------------------------*- 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         0.5;

deltaT          0.0001;

writeControl    runTime;

writeInterval   0.1;

purgeWrite      0;

writeFormat     ascii;

writePrecision  6;

writeCompression off;

timeFormat      general;

timePrecision   6;

runTimeModifiable true;


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

Time step is taken as 0.0001 for grading factor 0.2 (for smaller courant number), and 0.001 for grading factor 1.

p,U and constatns are considered same for both the cases

d. p,U file:

1. Open 0 folder in block_test

(code: cd..

 code :cd 0)

2. Open files p file( code: gedit p)

code for p:

/*--------------------------------*- 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       volScalarField;
    object      p;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

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

internalField   uniform 0;

boundaryField
{
    inlet
    {
        type            zeroGradient;
    }
    outlet
    {    
         type          fixedValue;
         value          uniform 0;
    }

    fixedWalls
    {
        type            zeroGradient;
    }

    frontAndBack
    {
        type            empty;
    }
}

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

Explaination:

1. Assign inlet and fixedwalls as zero gradient.

2. Front and back as empty.

3. Outlet as uniform 0.

Open files U file( code: gedit U)

code for U:

/*--------------------------------*- 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       volVectorField;
    object      U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

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

internalField   uniform (0 0 0);

boundaryField
{
    inlet
    {
        type            fixedValue;
        value           uniform (1 0 0);
    }
    outlet
    {  
         type         zeroGradient;
         
         }
          

    fixedWalls
    {   
         type           noSlip;
         value          uniform (0 0 0);
         }

    frontAndBack
    {
        type            empty;
    }
}

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

Explaination:

1. Assign outlet and fixedwalls as zero gradient.

2. Front and back as empty.

3. Inlet as uniform (1 0 0) fixed value.

Open paraview:

1. Change directory to block_test

2. Run code: blockMesh

3. Run code:icoFoam

4. Run code: paraFoam

5. In paraview click apply.

Results and discussion:

Paraview:

Blockmesh:

Select options 'surface with edges' and 'solid color'

case 1: Grading factor=1

case 2: Grading factor=0.2 (fine mesh near walls)

velocity profile:

case 1: Grading factor=1

 case 2: Grading factor=0.2

Graph obtained for velocity profile at 0.085:

case1:

case 2:

Grading Factor (`delta`): It is defined as the ratio of length of end cell to length of first cell in that axis.

grading factor helps to make cells finer at one end than the other, to obtain more precise information at desired area.

Conclusion:

Velocity is gradually increasing case 1, in case 2 for finer mesh we can see small change at point 0.085.

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.