Challenge

Validation studies of Symmetry BC vs Wedge BC in OpenFOAM vs Analytical Hagen Poiseuille equation

AIM:

  1. The main aim of this project is to simulate the laminar flow through a pipe. The wedge portion is taken as the whole circular section(cylinder) may take time to simulate or it may be costly if your computer does not have many resources.
  2. The other aim is to write the Matlab code for the BlockMeshDict file for different wedge angles, lengths, and radius and for symmetry boundary conditions. The angles to be tested are 10,25 and 45 degrees.
  3. The final objective is to post-process the result of velocity at different length of the pipe and shear stress at the fully developed portion and to compare it with the analytical solution ie by the Hagen poiseuille equation and with wedge boundary conditions.

Matlab code for blockMeshDict file for symmetry boundary condition with the symmetry of 10 degrees

clear all
close all
clc

% input

theta =input('enter the angle');  % angle of wedge
Re=2100;
D=0.02;
Le = 0.06*Re*D;
L = Le+0.3;
R=D/2;
mu =8.9e-4;  %viscosity of water
rho =1000;  % density of water in kg/m^3
nu = mu/rho;  %kinematic viscosity


% Calculation of pressure and velocity;

v_avg = (Re*mu)/(D*rho);  %average velocity
v_max = 2*v_avg;  %max velocity
deltap = (8*mu*v_avg*L)/(R^2);  % pressure drop

% Vertices of the wedge

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)];

grading=0.2;
b1=50;
b2=1;
b3=200;


%printing the file
text1='/*------------------------------------*- C++ -*---------------------------===--------*';
text2='|  ========                   |                                                      |';
text3='|        /  F ield           | OpenFoam:  The Open Source CFD Toolbox               |';
text4='|       /   O peration       | Version:   8.1                                       |';
text5='|      /    A nd             | Web:       www.https://openfoam.org                  |';
text6='|     /     M anipulation    |                                                      |';
text7='*-----------------------------------------------------------------------------------*/';

text8='//**********************************************************************************//';


%Creating file
f1 =fopen('blockMeshDict','w');

fprintf(f1,'%sn',text1);
fprintf(f1,'%sn',text2);
fprintf(f1,'%sn',text3);
fprintf(f1,'%sn',text4);
fprintf(f1,'%sn',text5);
fprintf(f1,'%sn',text6);
fprintf(f1,'%snn',text7);

fprintf(f1,'FoamFile n{n');
fprintf(f1,'%16s %10sn','version','2.0;');
fprintf(f1,'%16s %12sn','format','ascii;');
fprintf(f1,'%16s %17sn','class','dictionary;');
fprintf(f1,'%16s %20sn','object','blockMeshDict;');
fprintf(f1,'%2sn','}');

fprintf(f1,'%2snn','//*************************************//');
fprintf(f1,'%2snn','convertToMeters 1;');
fprintf(f1,'vertices n (n');
fprintf(f1,'t(%d %d %d)n',v0);
fprintf(f1,'t(%d %d %d)n',v1);
fprintf(f1,'t(%d %d %d)n',v2);
fprintf(f1,'t(%d %d %d)n',v3);
fprintf(f1,'t(%d %d %d)n',v4);
fprintf(f1,'t(%d %d %d)n',v5);
fprintf(f1,' %2snn',');');

fprintf(f1,'blocks n(n');
fprintf(f1,'t %s (%d %d %d) %s (%d 1 1) n','hex (0 1 2 0 3 4 5 3)',b1,b2,b3,'simpleGrading',grading);
fprintf(f1,' %2snn',');');

fprintf(f1, 'edges n(n');
fprintf(f1,' t %s (0 %d 0)n','arc 1 2',R);
fprintf(f1,'t %s (%d %d 0)n','arc 4 5',L,R);
fprintf(f1,'%2snn', ');');


fprintf(f1,'boundary n(n');
fprintf(f1,'t %5s n','axis','{');
fprintf(f1,'t %13s %sn','type','empty;');
fprintf(f1,'t %14sn %18sn','faces','(');
fprintf(f1,'t t %15sn %19snn %14snn','(0 3 3 0)',');','}');

fprintf(f1,' t %5s n','top','{');
fprintf(f1,'t %13s %sn','type','wall;');
fprintf(f1,'t %14sn %18sn','faces','(');
fprintf(f1,'t t %15sn %19snn %14snn','(2 5 4 1)',');','}');

fprintf(f1,' t %5s n','inlet','{');
fprintf(f1,'t %13s %sn','type','patch;');
fprintf(f1,'t %14sn %18sn','faces','(');
fprintf(f1,'t t %15sn %19snn %14snn','(0 0 2 1)',');','}');

fprintf(f1,' t %5s n','outlet','{');
fprintf(f1,'t %13s %sn','type','patch;');
fprintf(f1,'t %14sn %18sn','faces','(');
fprintf(f1,'t t %15sn %19snn %14snn','(3 4 5 3)',');','}');

fprintf(f1,' t %5s n','wedgeFront','{');
fprintf(f1,'t %13s %sn','type','symmetry;');
fprintf(f1,'t %14sn %18sn','faces','(');
fprintf(f1,'t t %15sn %19snn %14snn','(0 3 5 2)',');','}');

fprintf(f1,' t %5s n','wedgeBack','{');
fprintf(f1,'t %13s %sn','type','symmetry;'); 
fprintf(f1,'t %14sn %18sn','faces','(');
fprintf(f1,'t t %15sn %19snn %14snn %snn','(0 1 4 3)',');','}',');');

fprintf(f1,'mergePatchPairs n (n);n');
fprintf(f1,'%2snn','//******************************************************//');
fclose(f1);

BlockMeshDict File:

/*------------------------------------*- C++ -*---------------------------===--------*
|  ========                   |                                                      |
|        /  F ield           | OpenFoam:  The Open Source CFD Toolbox               |
|       /   O peration       | Version:   8.1                                       |
|      /    A nd             | Web:       www.https://openfoam.org                  |
|     /     M anipulation    |                                                      |
*-----------------------------------------------------------------------------------*/

FoamFile 
{
         version       2.0;
          format       ascii;
           class       dictionary;
          object       blockMeshDict;
 }
//*************************************//

convertToMeters 1;

vertices 
 (
	(0 0 0)
	(0 9.961947e-03 -8.715574e-04)
	(0 9.961947e-03 8.715574e-04)
	(2.820000e+00 0 0)
	(2.820000e+00 9.961947e-03 -8.715574e-04)
	(2.820000e+00 9.961947e-03 8.715574e-04)
 );

blocks 
(
	 hex (0 1 2 0 3 4 5 3) (50 1 200) simpleGrading (2.000000e-01 1 1) 
 );

edges 
(
 	 arc 1 2 (0 1.000000e-02 0)
	 arc 4 5 (2.820000e+00 1.000000e-02 0)
);

boundary 
(
	  axis 
	     { 
	          type empty;
	          faces
                  (
	 	       (0 3 3 0)
                  );

              }

 	   top 
 	     { 
	          type wall;
	          faces
                  (
	 	       (2 5 4 1)
                  );

              }

 	 inlet 
 	     { 
	          type patch;
	          faces
                  (
	 	       (0 0 2 1)
                  );

              }

 	 outlet 
 	     { 
	          type patch;
	          faces
                  (
	 	       (3 4 5 3)
                  );

              }

 	 wedgeFront 
 	     { 
	          type symmetry;
	          faces
                  (
	 	       (0 3 5 2)
                  );

              }

 	 wedgeBack 
 	     { 
	          type symmetry;
	          faces
                  (
	 	       (0 1 4 3)
                  );

              }

 );

mergePatchPairs 
 (
);
//******************************************************//

All other files such as velocity, pressure, and contolDict will remain the same as part-1, the only difference will be that in p and U instead of type wedge it will be type symmetry.

Results:

For symmetry of `10^0`

Results:

Velocity profile for symmetry of 10 degree

As with the previous results i.e with wedge boundary conditions, the symmetry boundary configuration qualitatively gives almost similar velocity profiles. The entry length setup, in this case, is sufficient for the flow to be fully developed which is evident from the above figures. The wall shear stress for the fully developed flow is as follows.

As we can see that shear stress increases along the radius i.e shear stress is almost zero at the center of the pipe and it is maximum at the walls.

Simulations for wedge angle of 25 and 45 degrees are as follow.

Results:

For symmetry of `25^0`

Paraview with mesh

Results:

velocity profiles with `25^0`

For symmetry of `45^0`

Paraview with mesh:

Results:

Velocity Profile with `45^0`

Comparison of maximum velocity between Wedge, Symmetry & Hagen Poiseuille Equation.

config/deg Maximum Velocity obtained through simulation Hagen Poiseuille Error
wedge BC/3 0.1854 0.1869 0.0015
wedge BC/4 0.1857 0.1869 0.0012
symmetry BC/10 0.1864 0.1869 0.0005
symmetry BC/25 0.1865 0.1869 0.0004
symmetry BC/45 0.1866 0.1869 0.0003
config/deg Mean Courant Number Max Courant Number Execution time in second
wedge BC/3 0.0689128 0.34 389
wedge BC/4 0.0689128 0.34 275
symmetry BC/10 0.0689128 0.34 648
symmetry BC/25 0.0689128 0.3 589
symmetry BC/45 0.0689128 0.27 527

The error is lesser for the symmetry 45 configurations i.e the results are very well correlated with the Hagen poiseuille equations. Thus more the domain is closer to the actual representation, the lesser will be the error. Also, the execution time for it is comparatively less for symmetry 45 amongst other symmetry configurations.

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.