Week 12 - Validation studies of Symmetry BC vs Wedge BC in OpenFOAM vs Analytical H.P equation
AIM:-
- To simulate an axis-symmetric laminar flow through the constant cross-sectional of the pipe by applying the symmetry boundary condition.
- To simulating for the mentioned angles i.e for 10, 25, 45 degrees using both symmetry and wedge boundary conditions and validate them with HP equations.
Hagen-Poiseuille's law:-
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. The pressure drop is given by:
`DeltaP=(32muLV)/D^2`
where,
`DeltaP` is the pressure drop.
`mu` is the dynamic viscosity.
L is the length of the pipe.
V is the velocity.

At the entrance, the flow is said to be in the hydrodynamic entrance region where the velocity profile gradually takes the shape of a parabola from a straight line. As soon as the parabolic velocity profile becomes steady the flow is said to be in its fully developed state. Normally Hagen Poiseuille's Equation is applicable for a fully developed flow which helps us to calculate the pressure loss.
Given:-
- Reynlods number :2100
- Working fluid :water .
- Fluid temperature:25`overset(circ)C`
- Diameter of the pipe =0.02m
- Dynamic viscosity(`nu`)=`0.89times10^-3`pa.s
- Kinematic Viscosity =`0.89times10^-6``m^2s^-1`
- Also `DeltaP= (32*mu*L*V_("avg"))/(D^2)`
- `theta=4^o`
- L=2.52m
- theta=10, 25, 45
Formulae:-
Average velocity
`V_(avg)=(R_emu)/(rhoD)` m/s
Maximum velocity
`V_max=2*V_(avg)` m/s
Pressure drop
`DeltaP=(32muLV)/D^2` pa
kinematic pressure drop=`(DeltaP)/rho`
PROCEDURE:-
- Will start with copying the cavity file from the tutorial to the FOAM_RUN folder.
- In the run folder only we are going to simulate and whatever we want to do the changes in the blockMeshDict file and pressure and velocity files and controlDict files we will be doing here.
- creating the block in the OpenFoam here we are creating the wedge after making the required changes in the blockMeshDict file to check the geometry run the blockMesh command.
- After creating the wedge assign the boundary conditions, and also sitting the simulation end time and time-step in such a way that the courant number should be less than 0.5 and also in the transportProperties enter the kinematic viscosity.
-
Run the simulation using the icoFoam solver after calculating the time needed for the fluid to travel from inlet to outlet
-
After the simulation, use paraFoam to view the flow inside the wedge and use plot over line command to plot the velocity and shear stress changes at a point after the hydrodynamical entry region so that we analyse the fully developed region of the fluid.
-
Use Matlab to parse the blockMeshDict so that the same file can be used for any wedge values.
MATLAB CODE TO GENERATE blockMeshDict FILE for wedge boundary condition:-
clear all
close all
clc
% INPUT VALUE
% fluid is assumed as water
Re=2100; % given reynolds number
rho=997; % density of the water
D=0.02; % diameter of the pipe
r=D/2; % radius of the pipe
mu=0.89*10^-3; % dynamic viscosity of the water at 25 degree celcius
v=0.88927*10^-6; % kinematic viscosity of the water at 25 degree celcius
theta=input('Enter the value of the wedge angle= ')
L_h=0.06*Re*D; % hydrodynamic lenght
L=L_h+0.5;
% Analytical solutions
V_avg=(Re*mu)/(rho*D); % average velocity
V_max=2*V_avg; % maximum velocity
P_drop=(32*mu*L*V_avg)/D^2; % pressure drop
P_kinematic=(P_drop)/rho; % kinematic pressure drop
% vertices
v0=[0 0 0]
v1=[0 r*cosd(theta/2) r*sind(theta/2)]
v2=[0 r*cosd(theta/2) -r*sind(theta/2)]
v3=[L 0 0]
v4=[L r*cosd(theta/2) r*sind(theta/2)]
v5=[L r*cosd(theta/2) -r*sind(theta/2)]
% PRINTING THE blockMeshDict FILE
H1='/*--------------------------------*- C++ -*----------------------------------*';
H2=' ========= |';
H3=' \ / F ield | OpenFOAM: The Open Source CFD Toolbox';
H4=' \ / O peration | Website: https://openfoam.org';
H5=' \ / A nd | Version: 9';
H6=' \/ M anipulation |';
H7='*---------------------------------------------------------------------------*/';
H8='FoamFile';
H9='{'
H10=' version 2.0;';
H11=' format ascii;';
H12=' class dictionary;';
H13=' object blockMeshDict;';
H14='}'
H15='// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //';
% opening the file
f1=fopen('blockMeshDict_parsedNEW.txt','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','convertToMeters 1;');
fprintf(f1,'%s n','vertices');
fprintf(f1,'%s n','(');
fprintf(f1,'%s (%f %f %f) n',blanks(5),v0(1),v0(2),v0(3));
fprintf(f1,'%s (%f %f %f) n',blanks(5),v1(1),v1(2),v1(3));
fprintf(f1,'%s (%f %f %f) n',blanks(5),v2(1),v2(2),v2(3));
fprintf(f1,'%s (%f %f %f) n',blanks(5),v3(1),v3(2),v3(3));
fprintf(f1,'%s (%f %f %f) n',blanks(5),v4(1),v4(2),v4(3));
fprintf(f1,'%s (%f %f %f) n',blanks(5),v5(1),v5(2),v5(3));
fprintf(f1,'%s n',');');
fprintf(f1,'%s n','blocks');
fprintf(f1,'%s n','(');
fprintf(f1,'%s %s n',blanks(5),'hex (0 2 1 0 3 5 4 3) (20 1 200) simpleGrading (1 1 1)');
fprintf(f1,'%s n',');');
fprintf(f1,'%s n','edges');
fprintf(f1,'%s n','(');
fprintf(f1,'arc 1 2 (%f %f %f) n',0,r,0);
fprintf(f1,'arc 4 5 (%f %f %f) n',L,r,0);
fprintf(f1,'%s n',');');
fprintf(f1,'%s n','boundary');
fprintf(f1,'( n');
fprintf(f1,'%s %s n',blanks(5),'inlet');
fprintf(f1,'%s %s n',blanks(5),'{');
fprintf(f1,'%s %s n',blanks(10),'type patch;');
fprintf(f1,' %s n','faces');
fprintf(f1,' %s n','(');
fprintf(f1,' (%d %d %d %d)n',0, 1, 2, 0);
fprintf(f1,' );n');
fprintf(f1,' }n');
fprintf(f1,' %sn','outlet');
fprintf(f1,' {n');
fprintf(f1,' %sn','type patch;');
fprintf(f1,' %sn','faces');
fprintf(f1,' (n');
fprintf(f1,' (%d %d %d %d)n',3, 4, 5, 3);
fprintf(f1,' );n');
fprintf(f1,' }n');
fprintf(f1,' %sn','wedge_front');
fprintf(f1,' {n');
fprintf(f1,' %sn','type wedge;');
fprintf(f1,' %sn','faces');
fprintf(f1,' (n');
fprintf(f1,' (%d %d %d %d)n',2, 5, 3, 0);
fprintf(f1,'n');
fprintf(f1,' );n');
fprintf(f1,' }n');
fprintf(f1,' %sn','wedge_Back');
fprintf(f1,' {n');
fprintf(f1,'%sn',' type wedge;');
fprintf(f1,'%sn',' faces');
fprintf(f1,' (n');
fprintf(f1,'n');
fprintf(f1,' (%d %d %d %d)n',0, 3, 4, 1);
fprintf(f1,' );n');
fprintf(f1,' }n');
fprintf(f1,' %sn','top');
fprintf(f1,' {n');
fprintf(f1,' %sn','type wall;');
fprintf(f1,' %sn','faces');
fprintf(f1,' (n');
fprintf(f1,' (%d %d %d %d)n',1, 4, 5, 2);
fprintf(f1,' );n');
fprintf(f1,' }n');
fprintf(f1,' %sn','axis');
fprintf(f1,' {n');
fprintf(f1,' %sn','type empty;');
fprintf(f1,' %sn','faces');
fprintf(f1,' (n');
fprintf(f1,' (%d %d %d %d)n',0, 3, 3, 0);
fprintf(f1,' );n');
fprintf(f1,' }n');
fprintf(f1,' );n');
fprintf(f1,'n');
fprintf(f1,' %sn','mergePatchPairs');
fprintf(f1,'(n');
fprintf(f1,' );n');
fprintf(f1,'n');
fprintf(f1,' // ************************************************************************* //n');
fclose(f1);
MATLAB CODE TO GENERATE blockMeshDict FILE for symmetry boundary condition:-
clear all
close all
clc
% inputs
% assumptions made the fluid is assumed as water
Re=2100; % given reynolds number
rho=997; % density of the water
D=0.02; % diiameter of the pipe
r=D/2; % radius of the pipe
mu=0.89*10^-3; % dynamic viscosity of the water at 25 degree celcius
v=0.88927*10^-6; % kinematic viscosity of the water at 25 degree celcius
theta=input('Enter the value of the wedge angle= ')
L_h=0.06*Re*D; % hydrodynamic lenght
L=L_h+0.5;
% Analytical solutions
V_avg=(Re*mu)/(rho*D); % average velocity
V_max=2*V_avg; % maximum velocity
P_drop=(32*mu*L*V_avg)/D^2; % pressure drop
P_kinematic=(P_drop)/rho; % kinematic pressure drop
% vertices
v0=[0 0 0]
v1=[0 r*cosd(theta/2) r*sind(theta/2)]
v2=[0 r*cosd(theta/2) -r*sind(theta/2)]
v3=[L 0 0]
v4=[L r*cosd(theta/2) r*sind(theta/2)]
v5=[L r*cosd(theta/2) -r*sind(theta/2)]
% PRINTING THE blockMeshDict FILE
H1='/*--------------------------------*- C++ -*----------------------------------*';
H2=' ========= |';
H3=' \ / F ield | OpenFOAM: The Open Source CFD Toolbox';
H4=' \ / O peration | Website: https://openfoam.org';
H5=' \ / A nd | Version: 9';
H6=' \/ M anipulation |';
H7='*---------------------------------------------------------------------------*/';
H8='FoamFile';
H9='{'
H10=' version 2.0;';
H11=' format ascii;';
H12=' class dictionary;';
H13=' object blockMeshDict;';
H14='}'
H15='// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //';
% opening the file
f1=fopen('blockMeshDict_parsedNEW.txt','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','convertToMeters 1;');
fprintf(f1,'%s n','vertices');
fprintf(f1,'%s n','(');
fprintf(f1,'%s (%f %f %f) n',blanks(5),v0(1),v0(2),v0(3));
fprintf(f1,'%s (%f %f %f) n',blanks(5),v1(1),v1(2),v1(3));
fprintf(f1,'%s (%f %f %f) n',blanks(5),v2(1),v2(2),v2(3));
fprintf(f1,'%s (%f %f %f) n',blanks(5),v3(1),v3(2),v3(3));
fprintf(f1,'%s (%f %f %f) n',blanks(5),v4(1),v4(2),v4(3));
fprintf(f1,'%s (%f %f %f) n',blanks(5),v5(1),v5(2),v5(3));
fprintf(f1,'%s n',');');
fprintf(f1,'%s n','blocks');
fprintf(f1,'%s n','(');
fprintf(f1,'%s %s n',blanks(5),'hex (0 2 1 0 3 5 4 3) (40 1 500) simpleGrading (1 1 1)');
fprintf(f1,'%s n',');');
fprintf(f1,'%s n','edges');
fprintf(f1,'%s n','(');
fprintf(f1,'arc 1 2 (%f %f %f) n',0,r,0);
fprintf(f1,'arc 4 5 (%f %f %f) n',L,r,0);
fprintf(f1,'%s n',');');
fprintf(f1,'%s n','boundary');
fprintf(f1,'( n');
fprintf(f1,'%s %s n',blanks(5),'inlet');
fprintf(f1,'%s %s n',blanks(5),'{');
fprintf(f1,'%s %s n',blanks(10),'type patch;');
fprintf(f1,' %s n','faces');
fprintf(f1,' %s n','(');
fprintf(f1,' (%d %d %d %d)n',0, 1, 2, 0);
fprintf(f1,' );n');
fprintf(f1,' }n');
fprintf(f1,' %sn','outlet');
fprintf(f1,' {n');
fprintf(f1,' %sn','type patch;');
fprintf(f1,' %sn','faces');
fprintf(f1,' (n');
fprintf(f1,' (%d %d %d %d)n',3, 4, 5, 3);
fprintf(f1,' );n');
fprintf(f1,' }n');
fprintf(f1,' %sn','wedge_front');
fprintf(f1,' {n');
fprintf(f1,' %sn','type symmetry;');
fprintf(f1,' %sn','faces');
fprintf(f1,' (n');
fprintf(f1,' (%d %d %d %d)n',2, 5, 3, 0);
fprintf(f1,'n');
fprintf(f1,' );n');
fprintf(f1,' }n');
fprintf(f1,' %sn','wedge_back');
fprintf(f1,' {n');
fprintf(f1,'%sn',' type symmetry;');
fprintf(f1,'%sn',' faces');
fprintf(f1,' (n');
fprintf(f1,'n');
fprintf(f1,' (%d %d %d %d)n',0, 3, 4, 1);
fprintf(f1,' );n');
fprintf(f1,' }n');
fprintf(f1,' %sn','top');
fprintf(f1,' {n');
fprintf(f1,' %sn','type wall;');
fprintf(f1,' %sn','faces');
fprintf(f1,' (n');
fprintf(f1,' (%d %d %d %d)n',1, 4, 5, 2);
fprintf(f1,' );n');
fprintf(f1,' }n');
fprintf(f1,' %sn','axis');
fprintf(f1,' {n');
fprintf(f1,' %sn','type empty;');
fprintf(f1,' %sn','faces');
fprintf(f1,' (n');
fprintf(f1,' (%d %d %d %d)n',0, 3, 3, 0);
fprintf(f1,' );n');
fprintf(f1,' }n');
fprintf(f1,' );n');
fprintf(f1,'n');
fprintf(f1,' %sn','mergePatchPairs');
fprintf(f1,'(n');
fprintf(f1,' );n');
fprintf(f1,'n');
fprintf(f1,' // ************************************************************************* //n');
fclose(f1);
For symmetry boundary conditions:-
For angle 25 degrees the blockMeshDict file:-
/*--------------------------------*- C++ -*----------------------------------*
========= |
\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\ / O peration | Website: https://openfoam.org
\ / A nd | Version: 9
\/ 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 2 1 0 3 5 4 3) (40 1 500) 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)
);
}
wedge_front
{
type symmetry;
faces
(
(2 5 3 0)
);
}
wedge_back
{
type symmetry;
faces
(
(0 3 4 1)
);
}
top
{
type wall;
faces
(
(1 4 5 2)
);
}
axis
{
type empty;
faces
(
(0 3 3 0)
);
}
);
mergePatchPairs
(
);
// ************************************************************************* //
controlDict file:-
/*--------------------------------*- C++ -*----------------------------------*
| ========= | |
| \ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \ / O peration | Version: 9 |
| \ / A nd | Website: www.openfoam.com |
| \/ M anipulation | |
*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application icoFoam;
startFrom latestTime;
startTime 0;
stopAt endTime;
endTime 30;
deltaT 0.005;
writeControl timeStep;
writeInterval 20;
purgeWrite 0;
writeFormat ascii;
writePrecision 6;
writeCompression off;
timeFormat general;
timePrecision 6;
runTimeModifiable true;
// ************************************************************************* //
Pressure file:-
/*--------------------------------*- C++ -*----------------------------------*
| ========= | |
| \ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \ / O peration | Version: 9 |
| \ / A nd | Website: www.openfoam.com |
| \/ 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;
}
wedge_front
{
type symmetry;
}
wedge_back
{
type symmetry;
}
top
{
type zeroGradient;
}
axis
{
type empty;
}
}
// ************************************************************************* //
Velocity file:-
/*--------------------------------*- C++ -*----------------------------------*
| ========= | |
| \ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \ / O peration | Version: 9 |
| \ / A nd | Website: www.openfoam.com |
| \/ 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.09373 0 0);
}
outlet
{
type zeroGradient;
}
top
{
type noSlip;
}
wedge_front
{
type symmetry;
}
wedge_back
{
type symmetry;
}
axis
{
type empty;
}
}
// ************************************************************************* //
Results:-
Blockmesh:-

Velocity profile:-

Pressure profile:-



For symmetry boundary conditions:-
For angle 10 degrees the blockMeshDict file:-
/*--------------------------------*- C++ -*----------------------------------*
========= |
\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\ / O peration | Website: https://openfoam.org
\ / A nd | Version: 9
\/ 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 2 1 0 3 5 4 3) (40 1 500) 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)
);
}
wedge_front
{
type symmetry;
faces
(
(2 5 3 0)
);
}
wedge_back
{
type symmetry;
faces
(
(0 3 4 1)
);
}
top
{
type wall;
faces
(
(1 4 5 2)
);
}
axis
{
type empty;
faces
(
(0 3 3 0)
);
}
);
mergePatchPairs
(
);
// ************************************************************************* //
Results:-
Blockmesh:-

Velocity profile:-

Pressure profile:-


For symmetry boundary conditions:-
For angle 45 degrees the blockMeshDict file:-
/*--------------------------------*- C++ -*----------------------------------*
========= |
\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\ / O peration | Website: https://openfoam.org
\ / A nd | Version: 9
\/ 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 2 1 0 3 5 4 3) (40 1 500) 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)
);
}
wedge_front
{
type symmetry;
faces
(
(2 5 3 0)
);
}
wedge_back
{
type symmetry;
faces
(
(0 3 4 1)
);
}
top
{
type wall;
faces
(
(1 4 5 2)
);
}
axis
{
type empty;
faces
(
(0 3 3 0)
);
}
);
mergePatchPairs
(
);
// ************************************************************************* //
Results:-
Blockmesh:-

Velocity profile:-

Pressure profile:-



For wedge boundary conditions:-
For the wedge angle 10 degrees the blockMeshDict file:-
/*--------------------------------*- C++ -*----------------------------------*
========= |
\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\ / O peration | Website: https://openfoam.org
\ / A nd | Version: 9
\/ 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 2 1 0 3 5 4 3) (40 1 500) 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)
);
}
wedge_front
{
type wedge;
faces
(
(2 5 3 0)
);
}
wedge_back
{
type wedge;
faces
(
(0 3 4 1)
);
}
top
{
type wall;
faces
(
(1 4 5 2)
);
}
axis
{
type empty;
faces
(
(0 3 3 0)
);
}
);
mergePatchPairs
(
);
// ************************************************************************* //
controlDict file:-
/*--------------------------------*- C++ -*----------------------------------*
| ========= | |
| \ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \ / O peration | Version: 9 |
| \ / A nd | Website: www.openfoam.com |
| \/ M anipulation | |
*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application icoFoam;
startFrom latestTime;
startTime 0;
stopAt endTime;
endTime 10;
deltaT 0.005;
writeControl timeStep;
writeInterval 20;
purgeWrite 0;
writeFormat ascii;
writePrecision 6;
writeCompression off;
timeFormat general;
timePrecision 6;
runTimeModifiable true;
// ************************************************************************* //
Pressure file:-
/*--------------------------------*- C++ -*----------------------------------*
| ========= | |
| \ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \ / O peration | Version: 9 |
| \ / A nd | Website: www.openfoam.com |
| \/ 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;
}
wedge_front
{
type wedge;
}
wedge_back
{
type wedge;
}
top
{
type zeroGradient;
}
axis
{
type empty;
}
}
// ************************************************************************* //
Velocity file:-
/*--------------------------------*- C++ -*----------------------------------*
| ========= | |
| \ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \ / O peration | Version: 9
| \ / A nd | Website: www.openfoam.com |
| \/ 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.09373 0 0);
}
outlet
{
type zeroGradient;
}
top
{
type noSlip;
}
wedge_front
{
type wedge;
}
wedge_back
{
type wedge;
}
axis
{
type empty;
}
}
// ************************************************************************* //
Results:-
Blockmesh:-

Pressure profile:-

Velocity porfile:-



For wedge boundary conditions:-
For the angle 25 degrees the blockMeshDict file:-
/*--------------------------------*- C++ -*----------------------------------*
========= |
\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\ / O peration | Website: https://openfoam.org
\ / A nd | Version: 9
\/ 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 2 1 0 3 5 4 3) (40 1 500) 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)
);
}
wedge_front
{
type wedge;
faces
(
(2 5 3 0)
);
}
wedge_back
{
type wedge;
faces
(
(0 3 4 1)
);
}
top
{
type wall;
faces
(
(1 4 5 2)
);
}
axis
{
type empty;
faces
(
(0 3 3 0)
);
}
);
mergePatchPairs
(
);
// ************************************************************************* //
Results:-
Blockmesh:-

Pressure profile:-

Velocity profile:-



For wedge boundary conditions:-
For the angle 45 degrees the blockMeshDict file:-
/*--------------------------------*- C++ -*----------------------------------*
========= |
\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\ / O peration | Website: https://openfoam.org
\ / A nd | Version: 9
\/ 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 2 1 0 3 5 4 3) (40 1 500) 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)
);
}
wedge_front
{
type wedge;
faces
(
(2 5 3 0)
);
}
wedge_back
{
type wedge;
faces
(
(0 3 4 1)
);
}
top
{
type wall;
faces
(
(1 4 5 2)
);
}
axis
{
type empty;
faces
(
(0 3 3 0)
);
}
);
mergePatchPairs
(
);
// ************************************************************************* //
Results:-
Blockmesh:-

Pressure profile:-

Velocity profile:-



Observations:-
1. As wedge angle increases CFL number also increases.
2. Symmetry boundary condition requires less time as compared to wedge boundary condtion for solving.
3. Higher the wedge angle more accurate are the results of simulation.
4. Here we could see that as the wedge angle increases the velocity becomes more accurate to the true value.
5. Also we observe that the symmetric BC is more accurate in terms of velocity where it is very close to the true value.It means its accuarcyt is high.
6. As observed we could sy that the symmetric BC becuaseb of its fine meshing takes more time for computiing or running the simulation.
7. Also we could observe that at a distance of 1.15 and 2.52 the plots of velocity appears to be same that means distance 1.15 is closer to that of that of fully developed region.
8. Due to the noSlip boundry conditions ,the velocity is dipped to zero at the edge near the pipe walls for all cases.
9. Also maximum shear stress is found in the walls of the pipe itself.and straight away falls to zero at the center.
10. As the wedge angle increasee the courant number increases,this could be explained by increase in element size of the mesh,now as the number of elements remain same in the analysis .The courant number is directly proprtional to element size.
Conclusion:-
As we can observe that there is slight difference in the values obtained through simulation for different angles with symmetry and wedge boundary condition, among which symmetry boundary condition with higher angle value gives more accurate results and there is no much change in the maximum velocities. The only difference observed is execution time a little high than type-wedge. While the angle increases the error in the maximum velocity is decreased. Though there is not much difference between analytical and numerical results and also with increasing the angle of the wedge, The Courant number is slightly increasing. we can say that the symmetric boundary condition plays an important role in terms of accuracy in the result