Program For Problem-4
Program For Problem-4
clear all
close all
clc
%% GRID GENERATION %5
%% INITIAL CONDITION %%
for i=1:N
if x(i)<0
rho(i)=1;
u(i)=0;
p(i)=100000;
else
rho(i)=0.125;
u(i)=0;
p(i)=10000;
end
end
plot(x,rho);
xlabel('x')
ylabel('rho')
figure(2)
plot(x,u);
xlabel('x')
ylabel('u')
figure(3)
plot(x,p);
xlabel('x')
ylabel('p')
dx=20/N;
dt=(dx*0.25)/(374.17);
k=round(0.01/dt);
%% MAIN ITERATION LOOP %5
iter=1;
while iter<=k
for i=1:N
a(i)=sqrt(gamma*p(i)/rho(i));
%% SPECTRAL RADIUS %%
alpha(i)=max((u(i)+a(i)),(u(i)-a(i)));
E(i)=(p(i)/(rho(i)*(gamma-1)))+0.5*u(i)^2;
%% FLUXES %5
G1(i)=rho(i)*u(i);
G2(i)=p(i)+rho(i)*u(i)^2;
G3(i)=(rho(i)*u(i)*E(i))+p(i)*u(i);
U1(i)=rho(i);
U2(i)=rho(i)*u(i);
U3(i)=rho(i)*E(i);
G1plus(i)=(G1(i)+alpha(i)*U1(i))/2;
G1minus(i)=(G1(i)-alpha(i)*U1(i))/2;
G2plus(i)=(G2(i)+alpha(i)*U2(i))/2;
G2minus(i)=(G2(i)-alpha(i)*U2(i))/2;
G3plus(i)=(G3(i)+alpha(i)*U3(i))/2;
G3minus(i)=(G3(i)-alpha(i)*U3(i))/2;
end
for i=2:N-1
G1jplushalf(i)=G1plus(i)+G1minus(i+1);
G1jminushalf(i)=G1plus(i-1)+G1minus(i);
G2jplushalf(i)=G2plus(i)+G2minus(i+1);
G2jminushalf(i)=G2plus(i-1)+G2minus(i);
G3jplushalf(i)=G3plus(i)+G3minus(i+1);
G3jminushalf(i)=G3plus(i-1)+G3minus(i);
U1(i)=U1(i)-(dt/dx)*( G1jplushalf(i)-G1jminushalf(i));
U2(i)=U2(i)-(dt/dx)*( G2jplushalf(i)-G2jminushalf(i));
U3(i)=U3(i)-(dt/dx)*( G3jplushalf(i)-G3jminushalf(i));
%% UPDATED VALUES %5
rho(i)=U1(i);
u(i)=U2(i)/U1(i);
E(i)=U3(i)/U1(i);
p(i)=(E(i)-0.5*u(i)^2)*rho(i)*0.4;
a(i)=sqrt(gamma*p(i))/rho(i);
end
iter=iter+1;
end
%% PLOTS %%
figure(4)
plot(x,p);
xlabel('x')
ylabel('p')
figure(5)
plot(x,u)
xlabel('x')
ylabel('u')
figure(6)
plot(x,rho)
xlabel('x')
ylabel('rho')