Burgersolvers
Burgersolvers
%uux+vvy=0
%FTCS,FTBCS,Dufort-Frankel,Mac-cormack Explicit,BTCS Implicit,BTBCS Implicit
clc
clear all
while(1)
fprintf("1:FTCS Explicit scheme:\n")
fprintf("2:FTBCS Explicit scheme:\n")
fprintf("3:Dufort-Frankel scheme:\n")
fprintf("4:Mac-cormack Explicit scheme:\n")
fprintf("5:BTCS Implicit scheme:\n")
fprintf("6:BTBCS Implicit scheme:\n")
z=input("Enter the choice of scheme:")
switch(z)
case 1
disp("FTCS Explicit Scheme")
case 2
disp("FTBCS Explicit scheme")
case 3
disp("Dufort-Frankel scheme")
case 4
disp("Mac-cormack Explicit scheme")
case 5
disp("BTCS Implict Scheme")
case 6
disp("BTBCS Implicit scheme")
otherwise
disp("invalid number")
return;
end
x=-9:0.2:9;
length=18;
dx=0.2;
nx=length/dx+1;
dt=0.001;
time=0.1;%0.4,0.7,1
n=time/dt;
for i=1:nx
u(i)=-2*sinh(x(i))/(cosh(x(i))-exp(-0.1));
end
un=u;
uold=u;
c=dt/dx;
d=dt/(dx*dx);
plot(u)
for iterations=1:n %n is the no of iterations
switch(z)
case 1
for i=2:nx-1
1
un(i)=u(i)-0.5*c*(u(i+1)-u(i-1))+d*(u(i+1)-2*u(i)
+u(i-1));
end
case 2
for i=2:nx-1
un(i)=u(i)-c*(u(i)-u(i-1))+d*(u(i+1)-2*u(i)+u(i+1));
end
case 3
if(iterations==1)
for i=2:nx-1
u(i)=uold(i)-0.5*c*(uold(i+1)-uold(i-1))
+d*(uold(i+1)-2*u(i)+uold(i-1));
end
else
for i=2:nx-1
un(i)=((1-2*d)/(1+2*d))*uold(i)+((c+2*d)/
(1+2*d))*u(i-1)-((c+2*d)/(1+2*d))*u(i+1);
end
uold=u;
end
case 4
for i=2:nx-1
u(i)=uold(i)-c*(uold(i)-uold(i-1))
+d*(uold(i+1)-2*uold(i)+uold(i-1));
end
for i=2:nx-1
un(i)=0.5*(u(i)+uold(i))-0.5*c*(u(i+1)-u(i-1))
+0.5*c*(u(i-1)-2*u(i)+u(i+1));
end
uold=u;
case 5
e(1:nx-3)=-0.5*c-d;
f(1:nx-2)=1+2*d;
g(1:nx-3)=0.5*c-d;
r(1:nx-2)=u(2:nx-1);
r(1)=r(1)+(0.5*c+d)*u(1);
r(nx-2)=r(nx-2)+(d-0.5*c)*u(nx);
un(2:nx-1)=tridiagonal(e,f,g,r);
case 6
e(1:nx-3)=-0.5*c-d;
f(1:nx-2)=1+2*d;
g(1:nx-3)=0.5*c-d;
r(1:nx-2)=u(2:nx-1);
r(1)=r(1)+(c+d)*u(1);
r(nx-2)=r(nx-2)+d*u(nx);
un(2:nx-1)=tridiagonal(e,f,g,r);
otherwise
return;
2
end
u=un;
if rem(iterations,10)==1
plot(un);
xlabel("x");
ylabel("u");
hold on;
end
end
end