Week 11 - Simulation of Flow through a pipe in OpenFoam
Aim:
To simulate an axi-symmetric flow by applying the wedge boundary condition. The flow is laminar and flows through a constant cross-section pipe at an inlet Reynold's number of 2100. You can do a transient or steady state simulation and you will validate your results with the Hagen- Poiseuille's equations for the fully developed flow.
Objective:
- Validate Hydro-dynamic length with the numerical result
- Validate the fully developed flow velocity profile with its analytical profile
- Validate maximum velocity and pressured drop for fully developed flow
- Post-process Shear stress and validate wall shear stress for fully developed flow
Blockmesh:
-
/*--------------------------------*- 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; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // blockMesh parameterization /* Geometrical Info */ D 0.004; // Diameter r #calc "0.5*$D"; // Radius angle 5; // Angle in degrees theta #calc "degToRad($angle)"; // Angle in radians Re 100; // Reynolds Number Le #calc "0.06*$Re*$D"; // Entrance Length L #calc "0.2 + $Le"; // Total length of pipe /* Vertices Info */ xmin 0; xmax $L; ymax #calc "$r*cos($theta)"; zmax #calc "$r*sin($theta)"; zmin #calc "-$r*sin($theta)"; /* Mesh Info */ nx 10; // Cells along local X ny 1; // Cells along local Y nz 50; // Cells along local Z gx 0.2; // SG along local X gy 1; // SG along local Y gz 1; // SG along local Z convertToMeters 1; vertices ( ($xmin 0 0) //0 ($xmin $ymax $zmax) //1 ($xmin $ymax $zmin) //2 ($xmax 0 0) //3 ($xmax $ymax $zmax) //4 ($xmax $ymax $zmin) //5 ); blocks ( hex (0 2 1 0 3 5 4 3) ($nx $ny $nz) simpleGrading ($gx $gy $gz) ); edges ( ); boundary ( inlet { type patch; faces ( (0 1 2 0) ); } outlet { type patch; faces ( (3 5 4 3) ); } front { type wedge; faces ( (0 3 4 1) ); } back { type wedge; // symmetry faces ( (0 2 5 3) ); } wall { type wall; // symmetry faces ( (2 1 4 5) ); } axis { type empty; faces ( (0 3 3 0) ); } ); mergePatchPairs ( ); // ************************************************************************* //
Controldict:
/*--------------------------------*- 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 500;
purgeWrite 0;
writeFormat ascii;
writePrecision 6;
writeCompression off;
timeFormat general;
timePrecision 6;
runTimeModifiable true;
// ************************************************************************* //
pressure:
/*--------------------------------*- 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;
}
front
{
type wedge; // symmetry
}
back
{
type wedge; // symmetry
}
wall
{
type zeroGradient;
}
axis
{
type empty;
}
}
// ************************************************************************* //
Velocity:
/*--------------------------------*- 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 (0.0223169508525577 0 0);
}
outlet
{
type zeroGradient;
}
front
{
type wedge; // symmetry
}
back
{
type wedge; // symmetry
}
wall
{
type noSlip;
}
axis
{
type empty;
}
}
// ************************************************************************* //
Pressure :

Velocity at entrance length:
Calculate the tau analytical and tau magnitude:

Shear stress plot:

Boundary layer formation:

Conclution:
Finally we canclude the Validate Hydro-dynamic length with the numerical result and find the fully developed flow velocity profile with its analytical profile then Validate maximum velocity and pressured drop for fully developed flow then Post-process Shear stress and validate wall shear stress for fully developed flow.