Week 11 - Simulation of Flow through a pipe in OpenFoam
Simulation of Flow through a pipe:
Assume that water at temperature 303K, flowing through a pipe of 10mm diameter with a laminar flow of Re=2000. we need to find the entrance lenght(le), lenght of pipe(l), average velocity(Vavg) and pressure drop using Hagen poiseuille's equation.
Entrance lenght(le) = 0.06*Re*D
Entrance lenght(le) = 1.2 m.
therefore, lenght of the pipe = le + tolerance
asuuming tolerance = 0.05m
lenght of the pipe = 1.25m.
With the lenght and diamter, the geometry file for 4degree wedge is made using the matlab program.
matlab Program:
clear all
close all
clc
f1 = fopen('blockMeshDict.txt','w')
L1 = ('/*--------------------------------*- C++ -*----------------------------------*\')
L2 = (' ========= |')
L3 = (' \\ / F ield | OpenFOAM: The Open Source CFD Toolbox')
L4 = (' \\ / O peration | Website: https://openfoam.org')
L5 = (' \\ / A nd | Version: 7')
L6 = (' \\/ M anipulation |')
L7 = ('\*---------------------------------------------------------------------------*/')
L8 = ('FoamFile')
L9 = ('{')
L10 = (' version 2.0;')
L11 = (' format ascii;')
L12 = (' class dictionary;')
L13 = (' object blockMeshDict;')
L14 = ('}')
L15 = ('// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //')
L16 = ('convertToMeters 0.001;')
L17 = ('vertices')
L18 = ('(')
L19 = (' (0 0 0) //0')
L20 = (' (0.17 4.996 0) //1')
L21 = (' (-0.17 4.996 0) //2')
L22 = (' (0 0 1250) //3 ')
L23 = (' (0.17 4.996 1250) //4')
L24 = (' (-0.17 4.996 1250) //5')
L25 = (');')
L26 = ('blocks')
L27 = ('(')
L28 = (' hex (0 1 2 0 3 4 5 3) (10 1 300) simpleGrading (1 1 1)')
L29 = (');')
L30 = ('edges')
L31 = ('(')
L32 = (' arc 2 1 (0 5 0)')
L33 = (' arc 5 4 (0 5 1250)')
L34 = (');')
L35 = ('boundary')
L36 = ('(')
L37 = (' inlet')
L38 = (' {')
L39 = (' type patch;')
L40 = (' faces')
L41 = (' (')
L42 = (' (0 1 2 0)')
L43 = (' );')
L44 = (' }')
L45 = (' outlet')
L46 = (' {')
L47 = (' type patch;')
L48 = (' faces')
L49 = (' (')
L50 = (' (3 5 4 3)')
L51 = (' );')
L52 = (' }')
L53 = (' pipeWall')
L54 = (' {')
L55 = (' type wall;')
L56 = (' faces')
L57 = (' (')
L58 = (' (2 1 4 5)')
L59 = (' );')
L60 = (' }')
L61 = (' leftsides')
L62 = (' {')
L63 = (' type wedge;')
L64 = (' faces')
L65 = (' (')
L66 = (' (3 0 2 5)')
L67 = (' );')
L68 = (' }')
L69 = (' rightsides')
L70 = (' {')
L71 = (' type wedge;')
L72 = (' faces')
L73 = (' (')
L74 = (' (0 3 4 1)')
L75 = (' );')
L76 = (' }')
L77 = (' axis')
L78 = (' {')
L79 = (' type empty;')
L80 = (' faces')
L81 = (' (')
L82 = (' (0 3 3 0)')
L83 = (' );')
L84 = (' }')
L85 = (');')
L86 = ('mergePatchPairs')
L87 = ('(')
L88 = (');')
L89 = ('// ************************************************************************* //')
fprintf(f1, '%s',L1)
fprintf(f1,'\n')
fprintf(f1, '%s',L2)
fprintf(f1,'\n')
fprintf(f1, '%s',L3)
fprintf(f1,'\n')
fprintf(f1, '%s',L4)
fprintf(f1,'\n')
fprintf(f1, '%s',L5)
fprintf(f1,'\n')
fprintf(f1, '%s',L6)
fprintf(f1,'\n')
fprintf(f1, '%s',L7)
fprintf(f1,'\n')
fprintf(f1, '%s',L8)
fprintf(f1,'\n')
fprintf(f1, '%s',L9)
fprintf(f1,'\n')
fprintf(f1, '%s',L10)
fprintf(f1,'\n')
fprintf(f1, '%s',L11)
fprintf(f1,'\n')
fprintf(f1, '%s',L12)
fprintf(f1,'\n')
fprintf(f1, '%s',L13)
fprintf(f1,'\n')
fprintf(f1, '%s',L14)
fprintf(f1,'\n')
fprintf(f1, '%s',L15)
fprintf(f1,'\n \n')
fprintf(f1, '%s',L16)
fprintf(f1,'\n \n')
fprintf(f1, '%s',L17)
fprintf(f1,'\n')
fprintf(f1, '%s',L18)
fprintf(f1,'\n')
fprintf(f1, '%s',L19)
fprintf(f1,'\n')
fprintf(f1, '%s',L20)
fprintf(f1,'\n')
fprintf(f1, '%s',L21)
fprintf(f1,'\n')
fprintf(f1, '%s',L22)
fprintf(f1,'\n')
fprintf(f1, '%s',L23)
fprintf(f1,'\n')
fprintf(f1, '%s',L24)
fprintf(f1,'\n')
fprintf(f1, '%s',L25)
fprintf(f1,'\n \n')
fprintf(f1, '%s',L26)
fprintf(f1,'\n')
fprintf(f1, '%s',L27)
fprintf(f1,'\n')
fprintf(f1, '%s',L28)
fprintf(f1,'\n')
fprintf(f1, '%s',L29)
fprintf(f1,'\n \n')
fprintf(f1, '%s',L30)
fprintf(f1,'\n')
fprintf(f1, '%s',L31)
fprintf(f1,'\n')
fprintf(f1, '%s',L32)
fprintf(f1,'\n')
fprintf(f1, '%s',L33)
fprintf(f1,'\n')
fprintf(f1, '%s',L34)
fprintf(f1,'\n \n')
fprintf(f1, '%s',L35)
fprintf(f1,'\n')
fprintf(f1, '%s',L36)
fprintf(f1,'\n')
fprintf(f1, '%s',L37)
fprintf(f1,'\n')
fprintf(f1, '%s',L38)
fprintf(f1,'\n')
fprintf(f1, '%s',L39)
fprintf(f1,'\n')
fprintf(f1, '%s',L40)
fprintf(f1,'\n')
fprintf(f1, '%s',L41)
fprintf(f1,'\n')
fprintf(f1, '%s',L42)
fprintf(f1,'\n')
fprintf(f1, '%s',L43)
fprintf(f1,'\n')
fprintf(f1, '%s',L44)
fprintf(f1,'\n')
fprintf(f1, '%s',L45)
fprintf(f1,'\n')
fprintf(f1, '%s',L46)
fprintf(f1,'\n')
fprintf(f1, '%s',L47)
fprintf(f1,'\n')
fprintf(f1, '%s',L48)
fprintf(f1,'\n')
fprintf(f1, '%s',L49)
fprintf(f1,'\n')
fprintf(f1, '%s',L50)
fprintf(f1,'\n')
fprintf(f1, '%s',L51)
fprintf(f1,'\n')
fprintf(f1, '%s',L52)
fprintf(f1,'\n')
fprintf(f1, '%s',L53)
fprintf(f1,'\n')
fprintf(f1, '%s',L54)
fprintf(f1,'\n')
fprintf(f1, '%s',L55)
fprintf(f1,'\n')
fprintf(f1, '%s',L56)
fprintf(f1,'\n')
fprintf(f1, '%s',L57)
fprintf(f1,'\n')
fprintf(f1, '%s',L58)
fprintf(f1,'\n')
fprintf(f1, '%s',L59)
fprintf(f1,'\n')
fprintf(f1, '%s',L60)
fprintf(f1,'\n')
fprintf(f1, '%s',L61)
fprintf(f1,'\n')
fprintf(f1, '%s',L62)
fprintf(f1,'\n')
fprintf(f1, '%s',L63)
fprintf(f1,'\n')
fprintf(f1, '%s',L64)
fprintf(f1,'\n')
fprintf(f1, '%s',L65)
fprintf(f1,'\n')
fprintf(f1, '%s',L66)
fprintf(f1,'\n')
fprintf(f1, '%s',L67)
fprintf(f1,'\n')
fprintf(f1, '%s',L68)
fprintf(f1,'\n')
fprintf(f1, '%s',L69)
fprintf(f1,'\n')
fprintf(f1, '%s',L70)
fprintf(f1,'\n')
fprintf(f1, '%s',L71)
fprintf(f1,'\n')
fprintf(f1, '%s',L72)
fprintf(f1,'\n')
fprintf(f1, '%s',L73)
fprintf(f1,'\n')
fprintf(f1, '%s',L74)
fprintf(f1,'\n')
fprintf(f1, '%s',L75)
fprintf(f1,'\n')
fprintf(f1, '%s',L76)
fprintf(f1,'\n')
fprintf(f1, '%s',L77)
fprintf(f1,'\n')
fprintf(f1, '%s',L78)
fprintf(f1,'\n')
fprintf(f1, '%s',L79)
fprintf(f1,'\n')
fprintf(f1, '%s',L80)
fprintf(f1,'\n')
fprintf(f1, '%s',L81)
fprintf(f1,'\n')
fprintf(f1, '%s',L82)
fprintf(f1,'\n')
fprintf(f1, '%s',L83)
fprintf(f1,'\n')
fprintf(f1, '%s',L84)
fprintf(f1,'\n')
fprintf(f1, '%s',L85)
fprintf(f1,'\n \n')
fprintf(f1, '%s',L86)
fprintf(f1,'\n')
fprintf(f1, '%s',L87)
fprintf(f1,'\n')
fprintf(f1, '%s',L88)
fprintf(f1,'\n \n')
fprintf(f1, '%s',L89)
fclose(f1)
viscosity of water at 303K
kinematic viscosity(ν) = 0.801e-6 (m^2)/s
dynamic viscosity(μ) = 0.798e-3Ns/(m^2)
density = 995kg/(m^3)
Vavg = v*Re/D
Vavg = 0.1602 m/s
Vmax = 2*Vavg
Vmax = 0.3204
Hagen poiseuille's equation:
ΔP = 32*μ*Vavg*L/(D^2) or ΔP = 0.5*ρ*Vmax^2
ΔP = 51013 N/m^2.
blockMeshDict program:
/*--------------------------------*- 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 dictionary;
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
convertToMeters 0.001;
vertices
(
(0 0 0) //0
(0.17 4.996 0) //1
(-0.17 4.996 0) //2
(0 0 1250) //3
(0.17 4.996 1250) //4
(-0.17 4.996 1250) //5
);
blocks
(
hex (0 1 2 0 3 4 5 3) (10 1 300) simpleGrading (1 1 1)
);
edges
(
arc 2 1 (0 5 0)
arc 5 4 (0 5 1250)
);
boundary
(
inlet
{
type patch;
faces
(
(0 1 2 0)
);
}
outlet
{
type patch;
faces
(
(3 5 4 3)
);
}
pipeWall
{
type wall;
faces
(
(2 1 4 5)
);
}
leftsides
{
type wedge;
faces
(
(3 0 2 5)
);
}
rightsides
{
type wedge;
faces
(
(0 3 4 1)
);
}
axis
{
type empty;
faces
(
(0 3 3 0)
);
}
);
mergePatchPairs
(
);
// ************************************************************************* //
Velocity pragram:
/*--------------------------------*- 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
{
inlet
{
type fixedValue;
value uniform (0.1602 0 0);
}
outlet
{
type zeroGradient;
}
pipeWall
{
type noSlip;
}
leftsides
{
type wedge;
}
rightsides
{
type wedge;
}
axis
{
type empty;
}
}
// ************************************************************************* //
pressure program:
/*--------------------------------*- 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
{
inlet
{
type zeroGradient;
}
outlet
{
type fixedValue;
value uniform 0;
}
pipeWall
{
type zeroGradient;
}
leftsides
{
type wedge;
}
rightsides
{
type wedge;
}
axis
{
type empty;
}
}
// ************************************************************************* //
controlDict program:
/*--------------------------------*- 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 dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application icoFoam;
startFrom startTime;
startTime 0;
stopAt endTime;
endTime 0.5;
deltaT 0.0001;
writeControl timeStep;
writeInterval 20;
purgeWrite 0;
writeFormat ascii;
writePrecision 6;
writeCompression off;
timeFormat general;
timePrecision 6;
runTimeModifiable true;
// ************************************************************************* //
Result:
The velocity and pressure of the geometry in front view.
velocity:
pressure:
velocity graph along y axis:
pressure graph along Y axis:
tau graph along Y axis:
Therefore, The results are found for the flow of water through a pipe in asymentric method using the wedge as geometry instead of whole pipe. thus the velocity profile is shown along with shear stress.