Challenge

Week 8 - Simulation of a backward facing step in OpenFOAM

Objective:

To simulate an incompressibe-laminar-viscous flow through the backwards-facing step geometry and perform a transient simulation.

Cas1- To simulate the flow without using any grading factor (i.e GF=1)

Case2- To Simulate the flow with a grading factor of 0.2. The cells should be finer near the walls.

Incompressibe-Laminar-Viscous Flow

Incompressible Flow:

The flow in which there is no change in the density is called the incompressible flow. Mathematiclly an incompressible flow can be expressed as

`Re=(rho.v.L)/mu`

Laminar Flow:

A laminar flow is one where the fluid motion is regular and there is no mixing, it can be visualized by the pathlines that do not intersect each other.

In fluid dynamics, laminar flow is characterized by fluid particles following smooth paths in layer, with each layer moving smoothly past the adjacent layeers with little or no mixing.

At low velocities, the fluid tends to flow without lateral mixing and adjacent layers slide past one another like playing cards. There are no cross-currents perpendicular to the direction of flow, nor eddies or swirls of fluids

In laminar flow, the motion of the particles of the fluid is very orderly with partivles close to a solid surface moving in straight lines paralley to that surface. Laminar flow is a flow regime characterized by high momentum diffusion and low momentum convection.

Reynolds number is the parameter to differentiate a flow as laminar or turbulent.

Whenever the reynolds number is less than about 2000 a flow in a pipe is generally laminar whereas at values greater than 2000 flow is usually turbulent.

Mathematically, Reynolds number is the ratio of intertial force to the viscous force

where

p is the density (kg/m^3)

u is the flow speed (m/s)

L is a characterisitic linear dimension (m)

Mu is the dynamic viscosity of the fluid (Pa.S)

v is the kinematic viscosity of the fluid (m^2/s)

Viscous Flow

A type of fluid flow in which there is a continous steady motion of the particles, the motion at a fixed point always remains constant. Also called streamline flow,laminar flow, steady flow.

The fluid flow in form of a layer. The layer which stickes with the wall has zero velocty which is called no-slip condition and it develops the frictional effect at the wall. Frictional effects are also present between two layers of fluid and slower layer tries to slow down the faster layer which can measured by using viscosity.

Effects of viscosity are maximum near the boundary so laminar sublayer exists near the boundary that is shown in the below figure.

Mesh grading

Mesh grading is a factor that is

Grading Factor = Size of the last cell/ Size of the first cell

Procedure:

First, we are creating the run folder in OpenFOAM in which we will be running our simulations

And then need to copy the caivty folder to the run folder so that we can make changes in the blockMeshDict, controlDict, and pressure and velocity files as to run our required simulations, we copuing the folder because we are not supposed to make any changes in the original folders in the OpenFOAM.

Then will make the required changes in the blockMeshDict file that is naming the vertices for and then creating the blocks, we also need to specify the numner of mesh points needed along the x,y and z-direction and also the simple grading should be done along the boundaries.

Then we, need to assign the boundary conditions here, we need to deine all the faces in OpenFOAM refers to patches and giving them type that is the inelt and outlet will be the faces, for front and back type will be empty faces, for top and bottom which are the boundary conditions in this case type will be wall type and setting yp these will constitute a particular boundary, then will save these changes in the blockMeshDict.

Then, in the velocty and pressure files, we have to give the value of the velociry at the inlet type will be fixed value here we should assign some value as initial velocity and pressure will be type fixed value that value will be unifrm 0, then at front and back velocity type empty and pressure, as well as type empty at the no slip boundaries that is top and bottom velocity, will be type noslip and pressure type empty. And in the transportProperties we can change the value in order to obtain the lower courant number.

And in the controlDict file the simulation time and the time step need to be assigned in the way that the courant number should be less than 0.5.

And then creating the block mesh and then run the simulation using the respective solver after the completion of simulation open the paraview in the paraFoam and plot the velocity profile for the given value.

CODE:

BLOCKMESHDICT

For without applying Grading Factor

FoamFile
{
version 2.0;
format  ascii;  
class dictionary;
object  blockMeshDict;
}
convertToMeters 0.01;
vertices
(
(0 0 0)
(8 0 0)
(8 0.5 0)
(0 0.5 0)
(8 1 0)
(0 1 0)
(20 1 0)
(20 0.5 0)
(20 0 0)
(8 -1 0)

(0 0 0.6)
(8 0 0.6)
(8 0.5 0.6)
(0 0.5 0.6)
(8 1 0.6)
(0 1 0.6)
(20 1 0.6)
(20 0.5 0.6)
(20 0 0.6)
(20 -1 0.6)
(8 -1 0.6)
);
blocks
(
hex (0 1 2 3 11 12 13 14) (80 10 1) simpleGrading (1 1 1)
hex (3 2 4 5 14 13 15 16) (80 10 1) simpleGrading (1 1 1)
hex (2 7 6 4 13 18 17 15) (120 10 1) simpleGrading (1 1 1)
hex (1 8 7 2 12 19 18 13) (120 10 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
    (
      (9 8 19 20)
      (8 7 18 19)
    );
   }
  frontAndBack
  {
      type empty;
      faces
      (
          (0 3 2 1)
          (11 12 13 14)
          (3 5 4 2)
          (13 15 16 14)
          (2 4 6 7)
          (13 18 17 15)
          (1 2 7 8)
          (12 19 18 13)
          (10 1 8 9)
          (21 20 19 12)
       );
   }   
  noslipwall
 {
    type wall;
    faces 
    (
        (4 5 16 15)
        (4 15 17 6)
        (0 1 12 11)
        (9 20 21 10)
        (1 10 21 12)
     );
 }
);
mergePatchPairs
(
); 

With the Applied Grading Factor 0.2

FoamFile
{
  version 2.0;
  format ascii;
  class dictionary;
  object blockMeshDict;
 }
convertToMeters 0.01;
vertices
(
(0 0 0)
(8 0 0)
(8 0.5 0)
(0 0.5 0)
(8 1 0)
(0 1 0)
(20 1 0)
(20 0.5 0)
(20 0 0)
(8 -1 0)

(0 0 0.6)
(8 0 0.6)
(8 0.5 0.6)
(0 0.5 0.6)
(8 1 0.6)
(0 1 0.6)
(20 1 0.6)
(20 0.5 0.6)
(20 0 0.6)
(20 -1 0.6)
(8 -1 0.6)
);
blocks
(
hex (0 1 2 3 11 12 13 14) (80 10 1) simpleGrading (0.2 5 1)
hex (3 2 4 5 14 13 15 16) (80 10 1) simpleGrading (0.2 0.2 1)
hex (2 7 6 4 13 18 17 15) (120 10 1) simpleGrading (5 0.2 1)
hex (1 8 7 2 12 19 18 13) (120 10 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
    (
      (9 8 19 20)
      (8 7 18 19)
      (7 6 17 18)
    );
   }
  frontAndBack
  {
      type empty;
      faces
      (
          (0 3 2 1)
          (11 12 13 14)
          (3 5 4 2)
          (13 15 16 14)
          (2 4 6 7)
          (13 18 17 15)
          (1 2 7 8)
          (12 19 18 13)
          (10 1 8 9)
          (21 20 19 12)
       );
   }   
  noslipwall
 {
    type wall;
    faces 
    (
        (4 5 16 15)
        (4 15 17 6)
        (0 1 12 11)
        (9 20 21 10)
        (1 10 21 12)
     );
 }
);
mergePatchPairs
(
); 

CONTROLDICT

FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
application icoFoam;
startFrom startTime;
startTime 0;
stopAt  endTime;
endTime3;
deltaT  1e-3;
writeControl  timeStep;
writeInterval 20;
purgeWrite 0;
writeFormat ascii;
writePrecision 6;
writeCompression off;
timeFormat general;
timePrecision 6;
runTimeModifiable true;

PRESSURE FILE

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;
  }
  frontAndBack
  {
    type empty;
  }
  noslipwall
  {
   type zeroGradient;
  }
}
  

VELOCITY FILE

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.066 0 0);
  }
  outlet
  {
    type  zeroGradient;
  }
  frontAndBack
  {
    type empty;
  }
  noslipwall
  {
  type noslip;
  }
}

TRANSPORT PROPERTIES

FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object transportProperties;
}
nu [0 2 -1 0 0 0 0] 1e-6;

OUTPUT

Without assigning any grading factor the block mesh is as shown below

For the given grading factor 0.2 the results are as follows

The velocity flow diagram without applying grading factor

The velocity flow diagram for the grading factor 0.2

The pressure flow diagram without applying grading factor

The pressure flow diagram for the given grading factor 0.2

The plot for the velocity at 0.085 without applying grading factor

The plot for the velocity at 0.085 for the given grading factor 0.2 is as follows

CONCLUSION:

By changing the simple grading factor from the value of 0.2 to 1 the mesh becomes finer and the solution becomes very accurante.

Overaell the change in the size of simple grading factor (mesh size) the results remains the same as approximately

The execution time is lower for lower meshing grading factor.

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.