Week 12 - Validation studies of Symmetry BC vs Wedge BC in OpenFOAM vs Analytical H.P equation
Aim:
- employing the symmetry boundary condition to simulate an axis-symmetric laminar flow through the pipe's constant cross-section.
- Using both symmetry and wedge boundary conditions, simulate the aforementioned angles—10, 25, and 45 degrees—and evaluate your results using HP equations.
Introduction:
Hagen-Poiseuille's law:
The Hagen-Poiseuille equation, commonly referred to as the Hagen-Poiseuille law, is a physical law that determines the pressure drop in an incompressible and Newtonian fluid moving through a long cylindrical pipe with a constant cross-section in nonideal fluid dynamics. Pressure is reduced as a result of:
`DeltaP=frac{32muLV}{D^2}`
ΔP=pressure drop
μ=dynamic viscociry
L=length of the pipe
V=velocity

It is claimed that the flow is in the hydrodynamic entrance zone at the entrance when the velocity profile progressively transforms from a straight line to a parabola. The flow is regarded to be in its fully evolved condition once the parabolic velocity profile stabilises. Hagen Poiseuille's Equation, which enables us to determine the pressure loss, typically applies for a fully developed flow.
Assumptions made:
Geometry: Axisymmetric.
Reynolds number: 2100.
Working fluid: Water.
Diameter of the pipe: 0.02 m.
μ=.89x10^-3
v=0.8927x10^-6 m^2/s
theta=10, 25, 45
Procedure
- Will begin by moving the tutorial's cavity file into the FOAM RUN folder.
- We will only simulate in the run folder, and we will make any modifications we wish to the blockMeshDict file, pressure and velocity files, and controlDict files here.
- After making the necessary adjustments to the blockMeshDict file to check the geometry, run the blockMesh command to create the block in OpenFoam.
- Following the creation of the wedge, assign the boundary conditions, as well as setting the simulation's end time and time-step so that the courant number should be smaller than 0.5 and adding the kinematic viscosity to the transportProperties.
- After figuring out how long it will take the fluid to flow from the inlet to the outlet, run the simulation using the icoFoam solver.
- To analyse the fluid's fully developed region after the simulation, use paraFoam to see the flow inside the wedge and the plot over line command to plot the changes in velocity and shear stress at a point after the hydrodynamic entrance region.
- In order to use the same file for any wedge values, parse the blockMeshDict using Matlab.
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: 8';
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,' %s\n','outlet');
fprintf(f1,' {\n');
fprintf(f1,' %s\n','type patch;');
fprintf(f1,' %s\n','faces');
fprintf(f1,' (\n');
fprintf(f1,' (%d %d %d %d)\n',3, 4, 5, 3);
fprintf(f1,' );\n');
fprintf(f1,' }\n');
fprintf(f1,' %s\n','wedge_front');
fprintf(f1,' {\n');
fprintf(f1,' %s\n','type wedge;');
fprintf(f1,' %s\n','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,' %s\n','wedge_Back');
fprintf(f1,' {\n');
fprintf(f1,'%s\n',' type wedge;');
fprintf(f1,'%s\n',' 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,' %s\n','top');
fprintf(f1,' {\n');
fprintf(f1,' %s\n','type wall;');
fprintf(f1,' %s\n','faces');
fprintf(f1,' (\n');
fprintf(f1,' (%d %d %d %d)\n',1, 4, 5, 2);
fprintf(f1,' );\n');
fprintf(f1,' }\n');
fprintf(f1,' %s\n','axis');
fprintf(f1,' {\n');
fprintf(f1,' %s\n','type empty;');
fprintf(f1,' %s\n','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,' %s\n','mergePatchPairs');
fprintf(f1,'(\n');
fprintf(f1,' );\n');
fprintf(f1,'\n');
fprintf(f1,' // ************************************************************************* //\n');
fclose(f1);
Matlab code to generate blockMeshdict file (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: 8';
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,' %s\n','outlet');
fprintf(f1,' {\n');
fprintf(f1,' %s\n','type patch;');
fprintf(f1,' %s\n','faces');
fprintf(f1,' (\n');
fprintf(f1,' (%d %d %d %d)\n',3, 4, 5, 3);
fprintf(f1,' );\n');
fprintf(f1,' }\n');
fprintf(f1,' %s\n','wedge_front');
fprintf(f1,' {\n');
fprintf(f1,' %s\n','type symmetry;');
fprintf(f1,' %s\n','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,' %s\n','wedge_back');
fprintf(f1,' {\n');
fprintf(f1,'%s\n',' type symmetry;');
fprintf(f1,'%s\n',' 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,' %s\n','top');
fprintf(f1,' {\n');
fprintf(f1,' %s\n','type wall;');
fprintf(f1,' %s\n','faces');
fprintf(f1,' (\n');
fprintf(f1,' (%d %d %d %d)\n',1, 4, 5, 2);
fprintf(f1,' );\n');
fprintf(f1,' }\n');
fprintf(f1,' %s\n','axis');
fprintf(f1,' {\n');
fprintf(f1,' %s\n','type empty;');
fprintf(f1,' %s\n','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,' %s\n','mergePatchPairs');
fprintf(f1,'(\n');
fprintf(f1,' );\n');
fprintf(f1,'\n');
fprintf(f1,' // ************************************************************************* //\n');
fclose(f1);
for 25 Degree angle blockMeshDict file
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 8
\\/ 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
(
);
// ************************************************************************* //
control Dict file
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2006 |
| \\ / 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: v2006 |
| \\ / 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: v2006 |
| \\ / 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
a_block mesh

b_velocity


c_pressure

Plot for velocity and pressure

shear stress

symmetry boundary conditions for 10 degrees
a)blockMeshdict file
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 8
\\/ 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:
mesh

velocity inlet

velocity outlet

pressure inlet

pressure outlet

pressure and velocity plots

symmetry boundary conditions for 45 degree angle
blockMeshdict file
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 8
\\/ 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
(
);
// ************************************************************************* //
mesh

pressure contour

velocity contour

velocity contour

shear stress

For wedge BC at 10 degrees
blockMeshdict file
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 8
\\/ 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: v2006 |
| \\ / 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: v2006 |
| \\ / 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: v2006 |
| \\ / 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
mesh

velocity contour

pressure contour

velocity plot

shear stress

wedge BC for 25 degree
blockMeshdict file
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 8
\\/ 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
(
);
// ************************************************************************* //
block mesh

velocity

pressure

velocity plot

shear stress

wedge BC at 45 degrees
blockMeshdict file
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 8
\\/ 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
(
);
// ************************************************************************* //
mesh

velocity contour

pressure contour

velocity plot

shear stress

Conclusion:
We can see that the maximum velocities have not changed significantly. Only a slightly longer execution time than type-wedge was noticed as a difference. The error in the highest velocity decreases as the angle grows. The Courant number is somewhat rising even if there isn't much of a difference between analytical and numerical results or when the wedge's angle is increased. We might claim that the symmetric boundary condition is crucial for the accuracy of the outcome.