You are on page 1of 49

CFD LAB REPORT

Name : Sandipan Roy

Roll : 2021amm019

Subject : Programme in Fluid Dynamics

Code : AM 5176

Students ID. : 2021amm019.sandipan@students.iiests.ac.in

Semester. : 1st

Professor. : Dr. Prince Raj Lawrence

University. : IIEST Shibpur

IIEST












1. Basic C program
· Addition, Multiplication, Maxima & Minima
· Ascending & Descending order
· Output in txt file and input in txt file
· Matrix Multiplication
2. 1D Program
· Diffusion problem
· Convection- Diffusion problem (Central differencing
scheme)
· Convection- Diffusion problem (Upwind scheme)
· SIMPLE algorithm

Basic C Programme :

Caption

START

Address
variable

Input the
Numbers Input the Numbers

Set the condition for


sum multiplication
maxima minima

Print the result

STOP

Flow Chart :

Start

Address variable

Set the condition for sum


multiplication maxima
minima

Print the result

STOP

CODE :

Caption


OUTPUT :
CODE :

Caption

OUTPUT :

Caption

OUTPUT IN TXT FILE AND INPUT IN .TXT FILE

Caption

Caption

CODE:

Caption

OUTPUT:

Caption

Matrix Multiplication:

Caption

Flow Chart :

Caption

Caption

Output:

Caption

1D Problems :

Caption

Flow Chart :

Caption

Code:
#include<stdio.h>
int main()
{
float l,grid,k,area,q; float dx,F,Ta, Tb,factor;
int i,n;

printf("Length of domain in m: "); scanf("%f",&l);


printf("Number of grids : "); scanf("%f", &grid);

n = (int)grid;
float aw[n], ap[n], ae[n], Su[n], Sp[n];
float sup[n], diag[n], sub[n], source[n], temp[n];

printf("\narea in m2 = ");
scanf("%f",&area);
printf("\nthermal conductivity k in W/m.K = ");
scanf("%f",&k);
printf("\nheat generation in W/m3 = ");
scanf("%f",&q);

dx = l/grid;
printf("\nTemperature at the left boundary = ");
scanf("%f",&Ta);
printf("\nTemperature at the right boundary = ");
scanf("%f",&Tb);

for(i=0; i<n; i++) {


if(i==0)
{
aw[i] = 0;

} else {
aw[i]= (F/dx);
}
}
printf("\n\n"); for(i=0; i<n; i++) {
printf("aw[%d]= %f", i,aw[i]); printf("\n");
}
for(i=0; i<n; i++)
{
if(i==(n-1))
{
ae[i]=0;
} else {
ae[i]= (F/dx);
}
}
printf("\n\n"); for(i=0; i<n; i++) {
printf("ae[%d]= %f", i,ae[i]);
printf("\n");
}

for(i=0; i<n; i++) {


if(i==0)
{
Sp[i]= -2*(F/dx);
}
else if(i==(n-1))
{
Sp[i]= -2*(F/dx);
} else {
Sp[i]=0;
}
}
printf("\n\n"); for(i=0; i<n; i++) {
printf("Sp[%d]= %f", i,Sp[i]);
printf("\n");
}

for(i=0; i<n; i++)


{
ap[i]=(aw[i]+ae[i]-Sp[i]);
}
printf("\n\n"); for(i=0; i<n; i++) {
printf("ap[%d]= %f",i,ap[i]);
printf("\n");
}
for(i=0; i<n; i++)
{
if(i==0)
{
printf("\n\n"); for(i=0; i<n; i++) {
printf("Su[%d]= %f",i,Su[i]); printf("\n");
}

for(i=0; i<n; i++)


{
sub[i]= -aw[i];
}
for(i=0; i<n; i++) {
diag[i]= ap[i];
}
for(i=0; i<n; i++)
{
sup[i]= -ae[i];
}
for(i=0; i<n; i++)
{
source[i]= Su[i];
} for(i=1;i<=n;i++) {
factor = sub[i]/diag[i-1];
diag[i] = diag[i] - factor*sup[i-1]; source[i] =
source[i] - factor*source[i-1];
}
temp[n-1] = source[n-1]/diag[n-1];

for(i=(n-2); i>=0; i--) {


temp[i] = (source[i] - sup[i]*temp[i+1])/diag[i];
}
printf("\n\n TEMPERATURE PROFILE \n"); for(i=0;
i<n; i++)
{
printf("temperature at node%d = %f",i+1,temp[i]);
printf("\n");
}

return 0;
}

Output:

Caption

Central diffusion problem:

Caption

Flow Chart :

Caption

Code :

#include<stdio.h>
#include<stdlib.h>
int main()
{
float l,grid,k,density,u;
float dx,F,D, Ta, Tb,factor; int i,n;
printf("Length of domain in m: "); scanf("%f",&l);
printf("Number of grids : ");
scanf("%f", &grid); n = (int)grid;
float aw[n], ap[n], ae[n], Su[n], Sp[n];
float sup[n], diag[n], sub[n], source[n], temp[n];
printf("\ndensity of the fluid in kg/cubic-meter =
"); scanf("%f",&density);
printf("\nVelocity along axial direction 'u' in m/
s = ");
scanf("%f",&u);
printf("\nthermal conductivity k in W/m.K = ");
scanf("%f",&k);
dx = l/grid; D = k/dx;
F = density*u;
printf("\nTemperature at the left boundary = ");
scanf("%f",&Ta);
printf("\nTemperature at the right boundary = ");
scanf("%f",&Tb);
for(i=0; i<n; i++) {
if(i==0)
{
aw[i] = 0;
} else {
aw[i]= (D+(F/2));
}
}
for(i=0; i<n; i++)
{
if(i==(n-1)) {

ae[i]=0;
} else {
ae[i]= (D-(F/2));
}
}
for(i=0; i<n; i++) {
if(i==0)
{
Sp[i]= -(F+(2*D));
}
else if(i==(n-1))
{
Sp[i]= -(-F+(2*D));
} else {
Sp[i]=0;
}
for(i=0; i<n; i++)
{
ap[i]=(aw[i]+ae[i]-Sp[i]);
}

for(i=0; i<n; i++) {


if(i==0)
{
Su[i]= ((2*D)+F)*Ta;
}
else if(i== n-1) {
Su[i]= ((2*D)-F)*Tb;
} else {
Su[i]= 0;
}
}
for(i=0; i<n; i++) {
sub[i]= -aw[i];
}
for(i=0; i<n; i++)
{
diag[i]= ap[i];

}
for(i=0; i<n; i++) {
sup[i]= -ae[i];
}
for(i=0; i<n; i++) {
source[i]= Su[i];
} for(i=1;i<=n;i++) {
factor = sub[i]/diag[i-1];
diag[i] = diag[i] - factor*sup[i-1];
source[i] = source[i] - factor*source[i-1];
}
temp[n-1] = source[n-1]/diag[n-1]; for(i=(n-2);
i>=0; i--)
{
temp[i] = (source[i] - sup[i]*temp[i+1])/diag[i];
}
printf("\n\n TEMPERATURE PROFILE \n"); for(i=0;
i<n; i++)
{
printf("temperature at node%d = %f",i+1,temp[i]);
printf("\n");
}
return 0;
}

Output :

Caption

Upwind Scheme :

Caption

Flow Chart:

Caption

#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp;
int nc,i,j,k;
float
del_x,length,density,T,u,Ta,Tb,fac,D,F;
printf("\n enter the value of velocity,u in
m/s :\n "); scanf("%f",&u);
printf("\nenter the value of density:\n");
scanf("%f",&density);
printf("\nenter the value of thermal
conductivity:\n"); scanf("%f",&T);
printf("\nenter the length of the domain (in
m)\n"); scanf("%f",&length);
printf("\nenter the number of cells the
domain has to be split into:\n");
scanf("%d",&nc);
del_x=length/nc;
printf("\nlength of each cell =%f m
\n",del_x); printf("\nTemperature at the
left boundary : \n"); scanf("%f",&Ta);
printf("\nTemperature at the right
boundary : \n"); scanf("%f",&Tb);
F = density*u; printf("F=%f\n",F) ; D = T/
del_x; printf("D=%f\n",D) ;

float aw[nc],ap[nc],ae[nc],Su[nc],Sp[nc];
float sup[nc], diag[nc], sub[nc],
source[nc], temp[nc];

for(i=0; i<nc; i++)


{ if(i==0) {

aw[i] = 0;
} else {
aw[i]= (D+(F));
}
}
printf("\n"); for(i=0; i<nc; i++)

for(i=0; i<=nc; i++) {


if(i==(nc-1))
{
ae[i]=0;
} else {
ae[i]= (D);
}
}
printf("\n"); for(i=0; i<nc; i++)
{
printf("ae[%d]= %f",
i,ae[i]); printf("\n");
}

for(i=0; i<nc; i++)


{
if(i==0)
{
Su[i]= ((2*D)+F)*Ta;
}
else if(i== nc-1)
{
Su[i]= (2*D)*Tb;
} else {
Su[i]= 0;
}

} printf("\n\n"); for(i=0; i<nc; i++)


{
printf("Su[%d]=
%f",i,Su[i]); printf("\n");
}

for(i=0; i<nc; i++) {


if(i==0)
{
Sp[i]= -(F+(2*D));
}
else if(i==(nc-1))
{
Sp[i]= -(2*D);
} else {
Sp[i]=0;
}
printf("\n"); for(i=0; i<nc; i++)
{
printf("Sp[%d]= %f",
i,Sp[i]); printf("\n");
}

for(i=0; i<nc; i++)


{
ap[i]=(aw[i]+ae[i]-Sp[i]);
}
printf("\n"); for(i=0; i<nc; i++)
{
printf("ap[%d]=
%f",i,ap[i]) ; printf("\n");
}
printf("ap[%d]=
%f",i,ap[i]) ; printf("\n");

}
for(i=0; i<nc; i++)
{
sub[i]= -aw[i];
}
for(i=0; i<nc; i++) {
diag[i]= ap[i];
}
for(i=0; i<nc; i++) {
sup[i]= -ae[i];
}
for(i=0; i<nc; i++) {
source[i]= Su[i];
}
return o;
}

Output :

U= 0.1

Caption

Caption

Caption

Simple Method :

Caption

Flow Chart :

Caption


Code Simple Algorithm :

Caption

Caption

Caption

Caption

Caption

RESULTS:

Caption

Caption

Caption

CONVERGENCE:

Caption

You might also like