All Courses
All Courses
Courses by Software
Courses by Semester
Courses by Domain
Tool-focused Courses
Machine learning
POPULAR COURSES
Success Stories
This project is a part of the course- Introduction to CFD using MATLAB and OpenFOAM This is a continuation of the previous theoretical project where we studied the Hagen-Poiseuille's equation, simulated laminar flow of an incompressible fluid through wedge-shaped pipe section and compared the analytical and observed…
Ashutosh Kulkarni
updated on 14 Jan 2021
This project is a part of the course- Introduction to CFD using MATLAB and OpenFOAM
This is a continuation of the previous theoretical project where we studied the Hagen-Poiseuille's equation, simulated laminar flow of an incompressible fluid through wedge-shaped pipe section and compared the analytical and observed values. In this part of the project, we will use the symmetry boundary conditions instead of wedge boundary conditions.
Procedure:
Like in the previous case, blockMeshDict file was generated using MATLAB for angles of 10, 25 and 45 degrees. The cavity file under the incompressible and laminar flows was used and the slover used was icoFoam, like in the previous project.
The test conditions and input parameters have been mentioned in the previous section of the project along with analytical calculations.
MATLAB Code:
clear all
close all
clc
%Data for flow analysis%
RN = 2100; %Reynold's number value%
rho = input('Enter density: \t'); %Taking user input for density%
mu = input('Enter dynamic viscosity: \t'); %Taking user input for dynamic viscosity%
d = input('Enter pipe diameter (m): \t'); %Taking user input for diameter%
theta = input('Enter wedge angle: \t'); %Taking user input for wedge angle%
l_entry = d*(0.06*RN); %Entry length of the pipe%
l = 0.5+l_entry; %Actual length of the pipe%
%Boundary Conditions%
v_avg = (RN*mu)/(rho*l); %Average velocity calculation%
v_max = 2*v_avg; %Maximum value of velocity%
dp = (32*v_avg*mu*l)/(d)^2;
nu = mu/rho; %Kinematic viscosity%
%Wedge Geometry%
v_0 = [0 0 0];
v_1 = [0 d/2*cosd(theta/2) -d/2*sind(theta/2)];
v_2 = [0 d/2*cosd(theta/2) d/2*sind(theta/2)];
v_3 = [l 0 0];
v_4 = [l d/2*cosd(theta/2) -d/2*sind(theta/2)];
v_5 = [l d/2*cosd(theta/2) d/2*sind(theta/2)];
%Format of blockMeshDict file%
line1='|/*----------------------------------------c++----------------------------------------*\|';
line2='| ========= \|';
line3='| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \|';
line4='| \\ / O peration | Website: https://openfoam.org \|';
line5='| \\ / A nd | Version: 7 \|';
line6='| \\/ M anipulation | \|';
line7='|\*-----------------------------------------------------------------------------------*/|';
line8='FoamFile ';
line9=' { ';
%Using Parsing technique to create blockMeshDict file%
f1=fopen('blockMeshDict_SymmVSwedge_45.txt','w')
fprintf(f1,'%s\n',line1);
fprintf(f1,'%s\n',line2);
fprintf(f1,'%s\n',line3);
fprintf(f1,'%s\n',line4);
fprintf(f1,'%s\n',line5);
fprintf(f1,'%s\n',line6);
fprintf(f1,'%s\n',line7);
fprintf(f1,'\n');
fprintf(f1,'%s\n',line8);
fprintf(f1,'%s\n\n',line9);
fprintf(f1,'%16s %10s \n','version','2.0; ');
fprintf(f1,'%16s %10s \n','format' ,'ascii; ');
fprintf(f1,'%16s %10s \n','class' ,'dictionary; ');
fprintf(f1,'%16s %10s \n','object' ,'blockMeshDict; ');
fprintf(f1,'\n } \n\n');
fprintf(f1,'// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *//\n');
fprintf(f1,' convertToMeters 1\n\n');
%Defining Geometry%
fprintf(f1,'\t\tvertices \n');
fprintf(f1,'\t\t(\n');
fprintf(f1,'\t\t\t(%f %f %f)\n',v_0);
fprintf(f1,'\t\t\t(%f %f %f)\n',v_1);
fprintf(f1,'\t\t\t(%f %f %f)\n',v_2);
fprintf(f1,'\t\t\t(%f %f %f)\n',v_3);
fprintf(f1,'\t\t\t(%f %f %f)\n',v_4);
fprintf(f1,'\t\t\t(%f %f %f)\n',v_5);
fprintf(f1,'\t\t);\n\n');
fprintf(f1,'\t\tblocks \n');
fprintf(f1,'\t\t( \n');
fprintf(f1,'\t\t\t hex (0 1 2 0 3 4 5 3) (100 1 50) simpleGrading (1 1 1)\n\t\t); \n \n');
%Defining Sides of Geometry%
%Edge of Pipe%
fprintf(f1,'\t\tedges \n');
fprintf(f1,'\t\t( \n ');
fprintf(f1,'\t\t\tarc 1 2 (%f %f %f) \n',0,d/2,0);
fprintf(f1,'\t\t\tarc 4 5 (%f %f %f) \n',l,d/2,0);
fprintf(f1,' \t\t); \n\n');
%Defining Boundary of pipe%
fprintf(f1,' \t\tboundary\n\t\t(\n');
%Inlet Section%
fprintf(f1,'%16s\n','inlet');
fprintf(f1,'%10s\n','{');
fprintf(f1,'%25s\n','type patch;');
fprintf(f1,'%19s\n','faces');
fprintf(f1,'%15s\n','(');
fprintf(f1,'%28s\n','(0 1 2 0)');
fprintf(f1,'%16s\n',');');
fprintf(f1,'%10s\n','}');
fprintf(f1,'\n');
%Outlet Section%
fprintf(f1,'%15s\n','outlet');
fprintf(f1,'%10s\n','{');
fprintf(f1,'%25s\n','type patch;');
fprintf(f1,'%19s\n','faces');
fprintf(f1,'%15s\n','(');
fprintf(f1,'%28s\n','(3 4 5 3)');
fprintf(f1,'%16s\n',');');
fprintf(f1,'%10s\n','}');
fprintf(f1,'\n');
%Front Side of Pipe%
fprintf(f1,'%13s\n','front');
fprintf(f1,'%10s\n','{');
fprintf(f1,'%25s\n','type symmetry;');
fprintf(f1,'%19s\n','faces');
fprintf(f1,'%15s\n','(');
fprintf(f1,'%28s\n','(0 2 5 3)');
fprintf(f1,'%16s\n',');');
fprintf(f1,'%10s\n','}');
fprintf(f1,'\n');
%Back Side of Pipe%
fprintf(f1,'%13s\n','back');
fprintf(f1,'%10s\n','{');
fprintf(f1,'%25s\n','type symmetry;');
fprintf(f1,'%19s\n','faces');
fprintf(f1,'%15s\n','(');
fprintf(f1,'%28s\n','(0 3 4 1)');
fprintf(f1,'%16s\n',');');
fprintf(f1,'%10s\n','}');
fprintf(f1,'\n');
%Top Side of Pipe%
fprintf(f1,'%12s\n','top');
fprintf(f1,'%10s\n','{');
fprintf(f1,'%24s\n','type wall;');
fprintf(f1,'%19s\n','faces');
fprintf(f1,'%15s\n','(');
fprintf(f1,'%28s\n','(1 2 5 4)');
fprintf(f1,'%16s\n',');');
fprintf(f1,'%10s\n','}');
fprintf(f1,'\n');
%Axis of Pipe%
fprintf(f1,'%13s\n','axis');
fprintf(f1,'%10s\n','{');
fprintf(f1,'%25s\n','type empty;');
fprintf(f1,'%19s\n','faces');
fprintf(f1,'%15s\n','(');
fprintf(f1,'%28s\n','(0 3 3 0)');
fprintf(f1,'%16s\n',');');
fprintf(f1,'%10s\n','}');
fprintf(f1,'%5s\n',');');
fprintf(f1,'\n');
fprintf(f1,'%20s\n','mergePatchPairs');
fprintf(f1,'%6s\n','(');
fprintf(f1,'%7s\n',');');
fclose(f1)
The blockMeshDict files for 3 different cases are different since the co-ordinates for each case will be different.
blockMeshDict (for 10 degrees):
/*--------------------------------*- 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 1;
vertices
(
(0.000000 0.000000 0.000000)
(0.000000 0.009962 -0.000872)
(0.000000 0.009962 0.000872)
(3.020000 0.000000 0.000000)
(3.020000 0.009962 -0.000872)
(3.020000 0.009962 0.000872)
);
blocks
(
hex (0 1 2 0 3 4 5 3) (100 1 50) simpleGrading (1 1 1)
);
edges
(
arc 1 2 (0.000000 0.010000 0.000000)
arc 4 5 (3.020000 0.010000 0.000000)
);
boundary
(
inlet
{
type patch;
faces
(
(0 1 2 0)
);
}
outlet
{
type patch;
faces
(
(3 4 5 3)
);
}
front
{
type symmetry;
faces
(
(0 2 5 3)
);
}
back
{
type symmetry;
faces
(
(0 3 4 1)
);
}
top
{
type wall;
faces
(
(1 2 5 4)
);
}
axis
{
type empty;
faces
(
(0 3 3 0)
);
}
):
mergePatchPairs
(
);
// ************************************************************************* //
blockMeshDict (for 25 degrees):
/*--------------------------------*- 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 1;
vertices
(
(0.000000 0.000000 0.000000)
(0.000000 0.009763 -0.002164)
(0.000000 0.009763 0.002164)
(3.020000 0.000000 0.000000)
(3.020000 0.009763 -0.002164)
(3.020000 0.009763 0.002164)
);
blocks
(
hex (0 1 2 0 3 4 5 3) (100 1 50) simpleGrading (1 1 1)
);
edges
(
arc 1 2 (0.000000 0.010000 0.000000)
arc 4 5 (3.020000 0.010000 0.000000)
);
boundary
(
inlet
{
type patch;
faces
(
(0 1 2 0)
);
}
outlet
{
type patch;
faces
(
(3 4 5 3)
);
}
front
{
type symmetry;
faces
(
(0 2 5 3)
);
}
back
{
type symmetry;
faces
(
(0 3 4 1)
);
}
top
{
type wall;
faces
(
(1 2 5 4)
);
}
axis
{
type empty;
faces
(
(0 3 3 0)
);
}
);
mergePatchPairs
(
);
// ************************************************************************* //
blockMeshDict (for 45 degrees):
/*--------------------------------*- 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 1;
vertices
(
(0.000000 0.000000 0.000000)
(0.000000 0.009239 -0.003827)
(0.000000 0.009239 0.003827)
(3.020000 0.000000 0.000000)
(3.020000 0.009239 -0.003827)
(3.020000 0.009239 0.003827)
);
blocks
(
hex (0 1 2 0 3 4 5 3) (100 1 50) simpleGrading (1 1 1)
);
edges
(
arc 1 2 (0.000000 0.010000 0.000000)
arc 4 5 (3.020000 0.010000 0.000000)
);
boundary
(
inlet
{
type patch;
faces
(
(0 1 2 0)
);
}
outlet
{
type patch;
faces
(
(3 4 5 3)
);
}
front
{
type symmetry;
faces
(
(0 2 5 3)
);
}
back
{
type symmetry;
faces
(
(0 3 4 1)
);
}
top
{
type wall;
faces
(
(1 2 5 4)
);
}
axis
{
type empty;
faces
(
(0 3 3 0)
);
}
);
mergePatchPairs
(
);
// ************************************************************************* //
The other files such as the controlDict, U, p and transportProperties remain the same as we are using the same test conditions.
controlDict:
/*--------------------------------*- 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 10;
deltaT 0.001;
writeControl timeStep;
writeInterval 20;
purgeWrite 0;
writeFormat ascii;
writePrecision 6;
writeCompression off;
timeFormat general;
timePrecision 6;
runTimeModifiable true;
// ************************************************************************* //
p:
/*--------------------------------*- 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.0189;
}
front
{
type symmetry;
}
back
{
type symmetry;
}
top
{
type zeroGradient;
}
axis
{
type empty;
}
}
// ************************************************************************* //
U:
/*--------------------------------*- 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.0937 0 0);
boundaryField
{
inlet
{
type fixedValue;
value uniform (0.0937 0 0);
}
outlet
{
type zeroGradient;
}
front
{
type symmetry;
}
back
{
type symmetry;
}
top
{
type fixedValue;
value uniform (0 0 0);
}
axis
{
type empty;
}
}
// ************************************************************************* //
transportProperties:
/*--------------------------------*- 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 "constant";
object transportProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
nu [0 2 -1 0 0 0 0] 8.9256e-7;
// ************************************************************************* //
Results for 10 degree wedge angle:
Wedge Geometry (10 degrees)
Velocity distribution at mid-section of the Pipe
Velocity profile at various points along the flow-
at X=0.001m (Inlet):
at X=0.1m:
at X=0.3m:
at X=0.6m:
at X=1.5m:
at X=3m (outlet):
The variation of the velocity profile can be seen from the graphs. The profile changes till X=0.6m but remains constant thereafter, indicating the fully developed nature of the flow.
The velocity profile characteristics were same for all three cases of wedge angles, hence the detailed images were shown only for 10 degrees wedge angle. For the other two, only the significant images are shown. The pressure variation also remains fairly the same and is displayed at the end.
Results for 25 degree wedge angle:
Geometry (25 degrees)
Velocity Profiles:
at X=0.001m (Inlet):
at X=0.3m:
at X=0.6m:
The velocity profile after X=0.3m remains fairly constant.
Results for 45 degree wedge angle:
Geometry for wedge angle 45 degrees
Velocity profiles:
at X=0.001m (Inlet):
at X=0.3m:
at X=0.6m:
The velocity profile after X=0.3m remains fairly constant.
Pressure Distribution:
The graph of Pressure variation along the pipe length is similar for all the three cases with minor changes in pressure values. Since our main aim is to check the velocity profiles, we do not need to go into much details about pressure variation. The variation is as shown.
RESULTS:
Angle | Vmax Analytical (m/s) | Vmax Observed (m/s) | Mean Courant Number | Maximum Courant Number | Simulation Time (s) |
10 | 0.187462 | 0.179476 | 0.001954543 | 0.0146663 | 1166 |
25 | 0.187462 | 0.176925 | 0.00194753 | 0.0148481 | 1557 |
45 | 0.187462 | 0.175437 | 0.00195278 | 0.0153504 | 1395 |
CONCLUSION:
Also, using the symmetry boundary condition, we can go to geometries with large angles as compared to the 5 degrees restriction for the wedge boundary condition.
Thus, using a symmetry BC instead of a wedge BC will be advantageous.
Leave a comment
Thanks for choosing to leave a comment. Please keep in mind that all the comments are moderated as per our comment policy, and your email will not be published for privacy reasons. Please leave a personal & meaningful conversation.
Other comments...
Boundary Conditions for External Aerodynamics Simulations
This project was done as a part of the course - External Aerodynamics Simulations using STARCCM+ 1. BCs used in External Aerodynamics: Boundary Conditions are the set of constraints to boundary value problems in computational fluid dynamics. These boundary conditions include inlet boundary conditions, outlet boundary…
14 Jan 2021 07:00 PM IST
Turbulence Modeling in STARCCM+
Aim: In this project, we aim to study the turbulence modelling by simulating a flow over a backward step with varying Reynolds numbers in STARCCM+. The concept of Y+ was also studied. Calculations: The simulation was done for air at a temperature of 25 degree Celcius. Reynolds Number (Re) is given as: Re = (ρ…
14 Jan 2021 06:54 PM IST
Volume Meshing in STARCCM+
This project was done as a part of the course- External Aerodynamics using STARCCM+ A mesh is a representation of a larger geometric domain by smaller discrete cells. In CFD, meshes are used to compute solutions of partial differential equations. A mesh partitions space into elements over which the equations…
14 Jan 2021 06:52 PM IST
Symmetry vs Wedge vs HP equation
This project is a part of the course- Introduction to CFD using MATLAB and OpenFOAM This is a continuation of the previous theoretical project where we studied the Hagen-Poiseuille's equation, simulated laminar flow of an incompressible fluid through wedge-shaped pipe section and compared the analytical and observed…
14 Jan 2021 06:49 PM IST
Related Courses
Skill-Lync offers industry relevant advanced engineering courses for engineering students by partnering with industry experts.
© 2025 Skill-Lync Inc. All Rights Reserved.