Challenge

Week 11 - Simulation of Flow through a pipe in OpenFoam

imulation of Flow through a pipe in OpenFoam.

In nonideal fluid dynamics, the Hagen–Poiseuille equation, also known as the Hagen–Poiseuille law, is a physical law that gives the pressure drop in an incompressible and Newtonian fluid in laminar flow flowing through a long cylindrical pipe of constant cross section.

EQUATION:

In standard fluid-kinetics notation.

where:

Δp is the pressure difference between the two ends,
L is the length of pipe,
μ is the dynamic viscosity,
Q is the volumetric flow rate,
R is the pipe radius,
A is the cross section of pipe.

The equation does not hold close to the pipe entrance.

Given parameters.

  1. Wedge angle less than 5 degrees,
  2. Flow is axi symetrical.
  3. Fluid is incompressible and the flow is laminar.

 

Expected Velocity Profile.

Assuming the following:

  1. The distance the fluid has to travel to become fully developed is given by the Entry Length formula.
  2. Given Reynolds number is 2100. This implies flow is laminar.
  3. Hence Entry length formula for Laminar is given by: Ld=0.06.Re</math>">Ld=0.06.Re��=0.06.��
  4. where L is effective length; d is dia of pipe and Re is reyonolds number.
  5. Assuming the dia of pipe as 10mm; substituting the values, we get L = 1.2m;

 

Steps to follow

  1. First, the geometry is created in the blockmesh Dict file, this is done by creating the file through the matlab code.
  2. The mesh is generated according to requirement.
  3. The velocity and preassure bc are applied
  4. The controlDict file is edited for Simulation run time and timestep;
  5. After the geometry is input, the simulation can be started by calling 'icoFoam' command in the terminal.
  6. 'paraFoam' command helps to open paraView
  7. The shear stress diagram is obtained by post-processing the velocity results obtained from Openfoam.
  8. Matlab Code :
  9. clc
     clear all
     close all
     
     % variable values
     D = 0.01;
     r = D/2;
     L = 1.2;
     theta = input(' input the value of wedge angle=');
     
     % String for header,
     h1 =' /*---------------------------------*- C++ -*-------------------------------------------------*\ ';
     h2 =' | ==========      |                                                                           |'; 
     h3 =' | \\        /  F ield        | OpenFOAM: The Open Source CFD Toolbox                          |';
     h4 =' |  \\      /   O peration    | Version:  7                                                    |';
     h5 =' |   \\    /    A nd          | Web:      www.OpenFOAM.org                                     |';
     h6 =' |    \\  /     M anipulation |                                                                |';
     h7 ='  \*------------------------------------------------------------------------------------------*/ ';
     h8 =' FoamFile';
     h9 ='{';
     h10 ='     version        2.0;';
     h11 ='     format         ascii;';
     h12 ='     class          dictionary;';
     h13 ='     object         blockMeshDict;';
     h14 ='}';
     h15 =' // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  \\';
     
     conv ='convertToMeters 1;';
      
     sp1 = blanks(5);   %sp = space
     sp2 = blanks(10);
     sp3 = blanks(15);
     
     v_0 = [0 0 0];
     v_1 = [r*sind(theta/2) r*cosd(theta/2) 0];
     v_2 = [-r*sind(theta/2) r*cosd(theta/2) 0];
     v_3 = [0 0 L];
     v_4 = [r*sind(theta/2) r*cosd(theta/2) L];
     v_5 = [-r*sind(theta/2) r*cosd(theta/2) L];
     
     block ='hex (0 0 1 2 3 3 4 5) (1 50 200) simpleGrading (1 0.5 1)';
     edge1 ='arc 1 2';
     edge2 ='arc 4 5';
     
     e1 = [0 r 0];
     e2 = [0 r L];
     
     inlet = '(0 0 2 1)';
     outlet = '(3 4 5 3)';
     wedge1 = '(0 1 4 3)';
     wedge2 = '(3 5 2 0)';
     wall =' (4 1 2 5)';
     axis =' (0 3 3 0)';
     
     final = '// ************************************************************************************************************************************************** //';
     
     
     
     f1 = fopen('blockMeshDict','wt');
     
     fprintf(f1,'%s\n',h1);
     fprintf(f1,'%s\n',h2);
     fprintf(f1,'%s\n',h3);
     fprintf(f1,'%s\n',h4);
     fprintf(f1,'%s\n',h5);
     fprintf(f1,'%s\n',h6);
     fprintf(f1,'%s\n',h7);
     fprintf(f1,'%s\n',h8);
     fprintf(f1,'%s\n',h9);
     fprintf(f1,'%s\n',h10);
     fprintf(f1,'%s\n',h11);
     fprintf(f1,'%s\n',h12);
     fprintf(f1,'%s\n',h13);
     fprintf(f1,'%s\n',h14);
     fprintf(f1,'%s\n',h15);
     fprintf(f1,'\n');
     
     fprintf(f1,'%s\n',conv);
     fprintf(f1,'\n');
     
     
     fprintf(f1,'%s\n','vertices');
     fprintf(f1,'%s\n','(');
     fprintf(f1,'%s (%f %f %f) \n',sp1,v_0(1),v_0(2),v_0(3));
     fprintf(f1,'%s (%f %f %f) \n',sp1,v_1(1),v_1(2),v_1(3));
     fprintf(f1,'%s (%f %f %f) \n',sp1,v_2(1),v_2(2),v_2(3));
     fprintf(f1,'%s (%f %f %f) \n',sp1,v_3(1),v_3(2),v_3(3));
     fprintf(f1,'%s (%f %f %f) \n',sp1,v_4(1),v_4(2),v_4(3));
     fprintf(f1,'%s (%f %f %f) \n',sp1,v_5(1),v_5(2),v_5(3));
     fprintf(f1,'%s \n',');');
     fprintf(f1,'\n');
     
     
     
     fprintf(f1,'%s\n','blocks');
     fprintf(f1,'%s\n','(');
     fprintf(f1,'%s %s \n',sp1,block);
     fprintf(f1,'%s \n',');');
     fprintf(f1,'\n');
      
      fprintf(f1,'%s \n','edges');
      fprintf(f1,'%s \n','(');
      fprintf(f1,'%s %s (%f %f %f) \n',sp1,edge1,e1(1),e1(2),e1(3));
      fprintf(f1,'%s %s (%f %f %f) \n',sp1,edge2,e2(1),e2(2),e2(3));
      fprintf(f1,'%s \n',');');
      fprintf(f1,'\n');
      
       fprintf(f1,'%s \n','boundary');
       fprintf(f1,'%s \n','(');
      
      fprintf(f1,'%s %s \n',sp1,'inflow');
      fprintf(f1,'%s %s \n',sp1,'{');
      fprintf(f1,'%s %s \n',sp2,'type patch;');
      fprintf(f1,'%s %s \n',sp2,'faces');
      fprintf(f1,'%s %s \n',sp2,'(');
      fprintf(f1,'%s %s \n',sp3,inlet);
      fprintf(f1,'%s %s \n',sp2,');');
      fprintf(f1,'%s %s \n',sp1,'}');
      
       fprintf(f1,'%s %s \n',sp1,'outflow');
      fprintf(f1,'%s %s \n',sp1,'{');
      fprintf(f1,'%s %s \n',sp2,'type patch;');
      fprintf(f1,'%s %s \n',sp2,'faces');
      fprintf(f1,'%s %s \n',sp2,'(');
      fprintf(f1,'%s %s \n',sp3,outlet);
      fprintf(f1,'%s %s \n',sp2,');');
      fprintf(f1,'%s %s \n',sp1,'}');
      
       fprintf(f1,'%s %s \n',sp1,'front');
      fprintf(f1,'%s %s \n',sp1,'{');
      fprintf(f1,'%s %s \n',sp2,'type wedge;');
      fprintf(f1,'%s %s \n',sp2,'faces');
      fprintf(f1,'%s %s \n',sp2,'(');
      fprintf(f1,'%s %s \n',sp3,wedge1);
      fprintf(f1,'%s %s \n',sp2,');');
      fprintf(f1,'%s %s \n',sp1,'}');
      
       fprintf(f1,'%s %s \n',sp1,'back');
      fprintf(f1,'%s %s \n',sp1,'{');
      fprintf(f1,'%s %s \n',sp2,'type wedge;');
      fprintf(f1,'%s %s \n',sp2,'faces');
      fprintf(f1,'%s %s \n',sp2,'(');
      fprintf(f1,'%s %s \n',sp3,wedge2);
      fprintf(f1,'%s %s \n',sp2,');');
      fprintf(f1,'%s %s \n',sp1,'}');
      
       fprintf(f1,'%s %s \n',sp1,'wall');
      fprintf(f1,'%s %s \n',sp1,'{');
      fprintf(f1,'%s %s \n',sp2,'type wall;');
      fprintf(f1,'%s %s \n',sp2,'faces');
      fprintf(f1,'%s %s \n',sp2,'(');
      fprintf(f1,'%s %s \n',sp3,wall);
      fprintf(f1,'%s %s \n',sp2,');');
      fprintf(f1,'%s %s \n',sp1,'}');
      
       fprintf(f1,'%s %s \n',sp1,'axis');
      fprintf(f1,'%s %s \n',sp1,'{');
      fprintf(f1,'%s %s \n',sp2,'type empty;');
      fprintf(f1,'%s %s \n',sp2,'faces');
      fprintf(f1,'%s %s \n',sp2,'(');
      fprintf(f1,'%s %s \n',sp3,axis);
      fprintf(f1,'%s %s \n',sp2,');');
      fprintf(f1,'%s %s \n',sp1,'}');
      
      fprintf(f1,'%s \n',');');
      fprintf(f1,'\n');
      
      fprintf(f1,'%s \n','mergePatchPairs');
      fprintf(f1,'%s \n','(');
      fprintf(f1,'%s \n',');');
      fprintf(f1,'\n');
      fprintf(f1,'%s \n',final);
       
      fclose(f1);
     
     
     
    
    VELOCITY BOUNDARY CONDITIONS.
    /*--------------------------------*- C++ -*----------------------------------*\
      =========                 |
      \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
       \\    /   O peration     | Website:  https://openfoam.org
        \\  /    A nd           | Version:  7
         \\/     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
    {
        inflow
        {
            type            fixedValue;
            value           uniform (0 0 0.1869);
        }
    
        outflow
       {
            type            zeroGradient;
       }
    
        wall
        {
            type            noSlip;
        }
    
        front
        {
            type            wedge;
        }
    
        back
        {
            type            wedge;
        }
    
        axis
        {
            type            empty;
        }
    
    
    }
    
    // ************************************************************************* 
  10. VELOCITY BOUNDARY CONDITIONS.
  11. /*--------------------------------*- C++ -*----------------------------------*\
      =========                 |
      \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
       \\    /   O peration     | Website:  https://openfoam.org
        \\  /    A nd           | Version:  7
         \\/     M anipulation  |
    \*---------------------------------------------------------------------------*/
    FoamFile
    {
        version     2.0;
        format      ascii;
        class       volScalarField;
        object      p;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    
    dimensions      [0 2 -2 0 0 0 0];
    
    internalField   uniform 0;
    
    boundaryField
    {
        inflow
        {
            type            zeroGradient;
        }
    
        outflow
        {
            type            fixedValue;
            value           uniform 0.0638749;
        }
    
       wall
        {
            type          zeroGradient;
        }
    
       front
        {
            type            wedge;
        }
    
       back
        {
            type            wedge;
        }
    
       axis
        {
            type            empty;
        }
    }
    
    // ************************************************************************* //
  12. PRESSURE BOUNDARY CONDITIONS.
  13. ------------------------------*- C++ -*----------------------------------*\
      =========                 |
      \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
       \\    /   O peration     | Website:  https://openfoam.org
        \\  /    A nd           | Version:  7
         \\/     M anipulation  |
    \*---------------------------------------------------------------------------*/
    FoamFile
    {
        version     2.0;
        format      ascii;
        class       volScalarField;
        object      p;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    
    dimensions      [0 2 -2 0 0 0 0];
    
    internalField   uniform 0;
    
    boundaryField
    {
        inflow
        {
            type            zeroGradient;
        }
    
        outflow
        {
            type            fixedValue;
            value           uniform 0.0638749;
        }
    
       wall
        {
            type          zeroGradient;
        }
    
       front
        {
            type            wedge;
        }
    
       back
        {
            type            wedge;
        }
    
       axis
        {
            type            empty;
        }
  14. Velocity profiles:

     

     

    Shear Stress :-

    shear stress = (dynamic Viscosity)*(du/dy)

                               

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.