All Courses
All Courses
Courses by Software
Courses by Semester
Courses by Domain
Tool-focused Courses
Machine learning
POPULAR COURSES
Success Stories
In this assignment, unsteady flow through the 1-D convergent-divergent nozzle is explored using MacCormak's technique. The transient flow is solved using finite difference methods on the non-dimensionalized governing equation's conservative and non-conservative forms. Separate functions are created for conservative and…
Jaswanth Kalyan Kumar Alapati
updated on 21 Sep 2021
In this assignment, unsteady flow through the 1-D convergent-divergent nozzle is explored using MacCormak's technique.
The transient flow is solved using finite difference methods on the non-dimensionalized governing equation's conservative and non-conservative forms.
Separate functions are created for conservative and non-conservative methods, and they are called in the primary function to evaluate respective quantities.
close all
clear all
clc
L=3; % Length of the nozzle
n=31; % no of grid points
gamma=1.4; % gamma of the fluid
C=0.5; % Courant number
nt=1400; % number of time steps
[rho_SNC,T_SNC,V_SNC,rho_throatNC,T_throatNC,V_throatNC]=nonconservative_flow(L,n,gamma,C,nt);
[rho_SC,T_SC,V_SC,rho_throatC,T_throatC,V_throatC]=conservative_flow(L,n,gamma,C,nt);
mass_throatNC=(rho_throatNC.*V_throatNC.*T_throatNC);
mass_throatC=(rho_throatC.*V_throatC.*T_throatC);
x=linspace(0,L,n);
plot(1:nt,mass_throatNC,1:nt,mass_throatC);
xlabel(' distance along the nozzle ');
ylabel(' dimensionless massflow rate ');
title(' transient throat massflow rate distribution for both methods ');
legend(' Non-conservative ', ' Conservative ');
The function for evaluating the properties using the non-conservative method is as follows.
function [rho_SNC,T_SNC,V_SNC,rho_throatNC,T_throatNC,V_throatNC]=nonconservative_flow(L,n,gamma,C,nt)
% rho_SC is the steady-state density after nt time steps
% T_SC is the steady-state temperature after nt time steps
% V_SC is the steady-state velocity after nt time steps
%n is no of grid points
x=linspace(0,L,n); % domain discretization
dx=x(2)-x(1); % grid length
%C is Courant number
%nt is the number of time steps
% Initial conditions for dimensionless quantities using nonconservative
rho=1-0.3146*x; % density
T=1-0.2314*x; % temperature
V=(0.1+1.09*x).*sqrt(T); % velocity
A=1+2.2*(x-1.5).^2; % area
for j=1:nt % time marching
rho_old=rho;
V_old=V;
T_old=T;
for i=2:n-1
deltat(i-1)=C*(dx/(sqrt(T(i))+V(i)));
end
dt=min(deltat); % finding the minimum timestep dt
% Predictor step
for i=2:n-1
dVdx=(V(i+1)-V(i))/dx;
dlogAdx=(log(A(i+1))-log(A(i)))/dx;
drhodx=(rho(i+1)-rho(i))/dx;
dTdx=(T(i+1)-T(i))/dx;
drhodt_p(i)=-rho(i)*dVdx-rho(i)*V(i)*dlogAdx-V(i)*drhodx;
dVdt_p(i)=-V(i)*dVdx-(1/gamma)*(dTdx+(T(i)/rho(i))*drhodx);
dTdt_p(i)=-V(i)*dTdx-(gamma-1)*T(i)*(dVdx+V(i)*dlogAdx);
end
for i=2:n-1
rho(i)=rho(i)+drhodt_p(i)*dt;
V(i)=V(i)+dVdt_p(i)*dt;
T(i)=T(i)+dTdt_p(i)*dt;
end
% Corrector step
for i=2:n-1
dVdx=(V(i)-V(i-1))/dx;
dlogAdx=(log(A(i))-log(A(i-1)))/dx;
drhodx=(rho(i)-rho(i-1))/dx;
dTdx=(T(i)-T(i-1))/dx;
drhodt_c(i)=-rho(i)*dVdx-rho(i)*V(i)*dlogAdx-V(i)*drhodx;
dVdt_c(i)=-V(i)*dVdx-(1/gamma)*(dTdx+(T(i)/rho(i))*drhodx);
dTdt_c(i)=-V(i)*dTdx-(gamma-1)*T(i)*(dVdx+V(i)*dlogAdx);
end
for i=2:n-1
% evaluating the properties at the next time step
rho(i)=rho_old(i)+0.5*(drhodt_p(i)+drhodt_c(i))*dt;
V(i)=V_old(i)+0.5*(dVdt_p(i)+dVdt_c(i))*dt;
T(i)=T_old(i)+0.5*(dTdt_p(i)+dTdt_c(i))*dt;
end
% Boundary conditions for the first and last node
V(1)=2*V(2)-V(3);
rho(1)=1;
T(1)=1;
V(n)=2*V(n-1)-V(n-2);
rho(n)=2*rho(n-1)-rho(n-2);
T(n)=2*T(n-1)-T(n-2);
% transient throat properties
rho_throatNC(j)=rho((n+1)/2);
T_throatNC(j)=T((n+1)/2);
V_throatNC(j)=V((n+1)/2);
rho_SNC=rho;
V_SNC=V;
T_SNC=T;
end
end
The function for evaluating the properties using the conservative method is as follows.
function [rho_SC,T_SC,V_SC,rho_throatC,T_throatC,V_throatC]=conservative_flow(L,n,gamma,C,nt)
% rho_SNC is the steady-state density after nt time steps
% T_SNC is the steady-state temperature after nt time steps
% V_SNC is the steady-state velocity after nt time steps
%n is no of grid points
x=linspace(0,L,n); % domain discretization
dx=x(2)-x(1); % grid length
%C is Courant number
%nt is the number of time steps
% Initial conditions and dimensionless quantities
A=1+2.2*(x-1.5).^2; % area
for i=1:n
% Initial conditions
if (x(i)<=0.5)
rho(i)=1;
T(i)=1;
elseif((x(i)>=0.5)&&(x(i)<=1.5))
rho(i)=1-0.366*(x(i)-0.5);
T(i)=1-0.167*(x(i)-0.5);
elseif (x(i)>=1.5)
rho(i)=0.634-0.3879*(x(i)-1.5);
T(i)=0.833-0.3507*(x(i)-1.5);
end
end
% Initial values
for i=1:n
V(i)=0.59/(rho(i)*A(i));
U1(i)=rho(i)*A(i);
U2(i)=rho(i)*A(i)*V(i);
U3(i)=rho(i)*A(i)*((T(i)/(gamma-1))+(gamma/2)*V(i)^2);
end
for j=1:nt
U1_old=U1;
U2_old=U2;
U3_old=U3;
for i=2:n-1
deltat(i-1)=C*(dx/(sqrt(T(i))+V(i)));
end
dt=min(deltat);
for i=1:n
F1(i)=U2(i);
F2(i)=(U2(i)^2/U1(i))+(gamma-1)*(U3(i)-(gamma/2)*U2(i)^2/U1(i))/gamma;
F3(i)=gamma*(U2(i)*U3(i)/U1(i))-((gamma*(gamma-1)*U2(i)^3)/(2*U1(i)^2));
end
% Predictor step
for i=2:n-1
dF1dx=(F1(i+1)-F1(i))/dx;
dF2dx=(F2(i+1)-F2(i))/dx;
dF3dx=(F3(i+1)-F3(i))/dx;
J2=rho(i)*T(i)*(A(i+1)-A(i))/(gamma*dx);
dU1dt_p(i)=-dF1dx;
dU2dt_p(i)=-dF2dx+J2;
dU3dt_p(i)=-dF3dx;
end
for i=2:n-1
U1(i)=U1(i)+dU1dt_p(i)*dt;
U2(i)=U2(i)+dU2dt_p(i)*dt;
U3(i)=U3(i)+dU3dt_p(i)*dt;
end
for i=1:n
rho(i)=U1(i)/A(i);
V(i)=U2(i)/U1(i);
T(i)=(gamma-1)*((U3(i)/U1(i))-(gamma/2)*V(i)^2);
end
for i=1:n
F1(i)=U2(i);
F2(i)=(U2(i)^2/U1(i))+(gamma-1)*(U3(i)-(gamma/2)*U2(i)^2/U1(i))/gamma;
F3(i)=gamma*(U2(i)*U3(i)/U1(i))-((gamma*(gamma-1)*U2(i)^3)/(2*U1(i)^2));
end
% Corrector step
for i=2:n-1
dF1dx=(F1(i)-F1(i-1))/dx;
dF2dx=(F2(i)-F2(i-1))/dx;
dF3dx=(F3(i)-F3(i-1))/dx;
J2=rho(i)*T(i)*(A(i)-A(i-1))/(gamma*dx);
dU1dt_c(i)=-dF1dx;
dU2dt_c(i)=-dF2dx+J2;
dU3dt_c(i)=-dF3dx;
end
for i=2:n-1
U1(i)=U1_old(i)+0.5*(dU1dt_p(i)+dU1dt_c(i))*dt;
U2(i)=U2_old(i)+0.5*(dU2dt_p(i)+dU2dt_c(i))*dt;
U3(i)=U3_old(i)+0.5*(dU3dt_p(i)+dU3dt_c(i))*dt;
end
U1(1)=rho(1)*A(1);
U2(1)=2*U2(2)-U2(3);
U3(1)=U1(1)*((T(1)/(gamma-1))+(gamma/2)*V(1)^2);
U1(n)=2*U1(n-1)-U1(n-2);
U2(n)=2*U2(n-1)-U2(n-2);
U3(n)=2*U3(n-1)-U3(n-2);
for i=1:n
rho(i)=U1(i)/A(i);
V(i)=U2(i)/U1(i);
T(i)=(gamma-1)*((U3(i)/U1(i))-(gamma/2)*V(i)^2);
end
% Transient throat values
rho_throatC(j)=rho((n+1)/2);
T_throatC(j)=T((n+1)/2);
V_throatC(j)=V((n+1)/2);
rho_SC=rho;
T_SC=T;
V_SC=V;
end
end
The corresponding plots for n=31 obtained are as follows.
Both methods evaluate the steady-state results correctly to a good approximation. The non-conservative method shows more oscillations than the conservative method in determining the steady-state values.
Grid independence test results are as follows.
Dimensionless quantities at the throat | |||
no of grids | Density | Temperature | velocity |
31 - Conservative | 0.6503 | 0.84 | 0.9 |
31 - Nonconservative | 0.6387 | 0.8365 | 0.9140 |
61 - Conservative | 0.6382 | 0.8352 | 0.9133 |
61 - Nonconservative | 0.6376 | 0.8354 | 0.9137 |
Leave a comment
Thanks for choosing to leave a comment. Please keep in mind that all the comments are moderated as per our comment policy, and your email will not be published for privacy reasons. Please leave a personal & meaningful conversation.
Other comments...
Week 1- Mixing Tee
This assignment aims to evaluate the mixing effectiveness of a Tee joint with two different outlet pipe lengths, namely small and long. The required Tee geometry is provided, and the interior volume for CFD analysis is extracted as shown below. Tee geometry with shorter outlet pipe: Extracted…
03 Sep 2022 08:13 PM IST
Week 12 - Validation studies of Symmetry BC vs Wedge BC in OpenFOAM vs Analytical H.P equation
Unlike in the previous assignment, where the simulation is performed using a transient solver icoFoam, the simulation is carried out using a steady-state solver simpleFoam since the emphasis is on the steady-state flow field. This assignment aims to compare the boundary conditions of Wedge and Symmetry…
11 Jan 2022 11:09 AM IST
Week 11 - Simulation of Flow through a pipe in OpenFoam
The following is the simulation of a laminar flow of an incompressible fluid through the pipe in OpenFoam. The following figure depicts the physical situation of the flow. For a laminar flow, the hydrodynamic length, Lh=0.06⋅D⋅ReD, where D is pipe diameter, and ReD is Reynolds number…
07 Jan 2022 10:13 AM IST
Week 9 - FVM Literature Review
Finite Volume Method (FVM) is a numerical technique for solving partial differential equations governing the phenomena. The method involves discretizing the domain into smaller volumes. These control volumes are connected by common faces. The governing equation in integral form is applied for all the control volumes followed…
26 Dec 2021 07:15 AM IST
Related Courses
0 Hours of Content
Skill-Lync offers industry relevant advanced engineering courses for engineering students by partnering with industry experts.
© 2025 Skill-Lync Inc. All Rights Reserved.