Challenge

Week 12 - Validation studies of Symmetry BC vs Wedge BC in OpenFOAM vs Analytical H.P equation

Objective:

  • Validate Hydro dunamic length with the numerical results.
  • Validate the fully developed flow velocity profile with its analytical profile.
  • Validate maximum velocity and pressure drop for fully developed flow.
  • Post-process and shear stress and wall shear stress for fully developed flow.
  • Highlight the difference in both boundary conditions in terms of thier usage and application.

Angles to test:

  • 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 crosssection.

The pressure drop is given by:

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.

Assumptions made:

Geometry: Axisymmetric.

Reynolds number: 2100.

Working fluid: Water.

Diameter of the pipe: 0.02 m.

Dynamic viscosity(μ )=0.89x10^-3 Pas

Kinematic viscosity(ν )=0.8927x10^-6 m^2/s

theta=10, 25, 45

Procedure:

  • To 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

% 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,'    %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: 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,'   %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: 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
(
);

// ************************************************************************* //

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           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:

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: 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:

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: 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
(
);

// ************************************************************************* //

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: 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:

/*--------------------------------*- 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:

Blockmesh:

Pressure profile:

Velocity profile:

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: 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

(
);

// ************************************************************************* //

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: 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
(
);

// ************************************************************************* //

Results:

Pressure profile:

Velocity profile:

Conclusion:

We can observe 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.

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.