Challenge

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

Aim:

The aim of this study is to compare the results obtained from Symmetry Boundary Condition (Symmetry BC) and Wedge Boundary Condition (Wedge BC) in OpenFOAM with the analytical solution obtained from the Hagen-Poiseuille (H.P) equation. The simulation will be performed for different angles (10°, 25°, and 45°) to validate the accuracy of the numerical models and to determine the appropriate boundary condition for each angle.

Theory:

The Hagen-Poiseuille equation describes the laminar flow of an incompressible fluid through a cylindrical pipe of radius R and length L, and is given by:

Q = (π R^4 ΔP)/(8 μ L)

where Q is the volumetric flow rate, ΔP is the pressure drop, μ is the dynamic viscosity of the fluid.

The Symmetry BC assumes that the flow is symmetric about the axis of the pipe, so that there is no flow perpendicular to the axis, and the velocity component normal to the wall is zero. The Wedge BC, on the other hand, models the curved surface of the pipe as a series of straight lines, and the velocity component normal to the wall is non-zero.

Procedure:

The following procedure will be followed to validate the Symmetry BC and Wedge BC in OpenFOAM against the H.P equation:

    1. Will start with copying the cavity file from the tutorial to the FOAM_RUN folder.
    2. 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.
    3. 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.
    4. 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.
  1. Simulation runs: The simulation will be run for each angle (10°, 25°, and 45°) using both Symmetry BC and Wedge BC. The flow rate and pressure drop will be recorded for each simulation run.

  2. Validation: The results obtained from the simulation will be compared with the analytical solution obtained from the H.P equation. The accuracy of the numerical models will be evaluated by comparing the flow rate and pressure drop obtained from the simulation with the analytical solution.

  3. Results analysis: The results will be analyzed to determine the appropriate boundary condition for each angle. The results obtained from Symmetry BC and Wedge BC will be compared to determine which boundary condition provides a better match with the analytical solution.

In conclusion, this study aims to validate the accuracy of Symmetry BC and Wedge BC in OpenFOAM for different angles by comparing the simulation results with the analytical solution obtained from the Hagen-Poiseuille equation. The results obtained from this study will help to determine the appropriate boundary condition for each angle, and provide insights into the accuracy of the numerical models in OpenFOAM.

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

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

Blockmesh

Pressure profile

Velocity profile

CONCLUSION.

In summary, the results of the analysis show that the maximum velocities do not differ significantly between the two types of wedges considered, namely, the type-wedge and the general wedge. However, there is a slight increase in execution time with the general wedge due to its more complex geometry. As the angle of the wedge increases, the error in the maximum velocity decreases, indicating that the accuracy of the numerical solution improves.

Moreover, the comparison between analytical and numerical results shows that there is not much difference, indicating that the numerical solution is reliable. However, it is important to note that the Courant number increases slightly with increasing wedge angle, which may affect the stability of the numerical solution.

Finally, it is evident that the symmetric boundary condition is essential for achieving accurate results. Overall, the analysis provides valuable insights into the flow behavior over different types of wedges and highlights the importance of considering various factors, such as geometry, boundary conditions, and numerical stability, in the simulation of fluid flow.

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.