one i made recently for finite element
% ______ __ ___ ___ ____ ___ __
% | | | \ \ / | | | | | | |\ |
% |____| | \ \ / |__ | | | | | | \ |
% | | | / \ / | | | | | | | \ | /\./\
% | | |_/ \/ |__ |__ | _|_ |__| | \| . | | |
%
% Rev.1 09:00 09-Feb-07
% Rev.2 09:00 23-Feb-07
%------------------------------- Variables -------------------------------%
% u =
% f =
% dx =
% L =
% T =
% Cr =
% A =
% t =
% x =
% --------------------------------- setup ------------------------------- %
clear;clc
u = 5;
f = 0.01;
dx = 1;
L = 20;
T = 20;
Cr = 0.8;
% Courant number
dt = (dx*Cr)/u;
t = [1:dt:T];
x = [1:dx:L];
A = 5;
c=5;
g=9.81;
% -------------------------------- PERIODIC ----------------------------- %
% ------------------------------ Lax scheme ----------------------------- %
HLAX = zeros(1,length(x));
VLAX = zeros(1,length(x));
for i = 1:length(t)
HLAX(i,1) = A*sin(2*pi*f*(t(i)));
VLAX(i,1) = A*sin(2*pi*f*(t(i)));
end
for i = 2:length(t)
for j = 2:length(x)-1
HLAX(i,j) = 0.5*(HLAX(i-1,j+1) + HLAX(i-1,j-1)) - ...
(((c^2)*dt)/(2*g*dx))*(VLAX(i-1,j+1) - VLAX(i-1,j-1));
VLAX(i,j) = 0.5*(VLAX(i-1,j+1) + VLAX(i-1,j-1)) - ...
(((c^2)*dt)/(2*g*dx))*(HLAX(i-1,j+1) - HLAX(i-1,j-1));
end
HLAX(i,length(x)) = 0.5*(HLAX(i-1,length(x)) + HLAX(i-1,length(x)-1)) - ...
(((c^2)*dt)/(2*g*dx))*(VLAX(i-1,length(x)) - VLAX(i-1,length(x)-1));
VLAX(i,j) = 0.5*(VLAX(i-1,length(x)) + VLAX(i-1,length(x)-1)) - ...
(((c^2)*dt)/(2*g*dx))*(HLAX(i-1,length(x)) - HLAX(i-1,length(x)-1));
end
figure(1)
surf(x,t,VLAX)
% -------------------------------DISCONTINUOS --------------------------- %
% ------------------------------ Lax scheme ----------------------------- %
HLAX = zeros(1,length(x));
VLAX = zeros(1,length(x));
for i = 1:length(t);
if i < 6;
HLAX(i,1) = 0;
VLAX(i,1) = 0;
elseif i >= 6;
HLAX(i,1) = 5;
VLAX(i,1) = 0;
end
end
for i = 2:length(t)
for j = 2:length(x)-1
HLAX(i,j) = 0.5*(HLAX(i-1,j+1) + HLAX(i-1,j-1)) - ...
(((c^2)*dt)/(2*g*dx))*(VLAX(i-1,j+1) - VLAX(i-1,j-1));
VLAX(i,j) = 0.5*(VLAX(i-1,j+1) + VLAX(i-1,j-1)) - ...
(((c^2)*dt)/(2*g*dx))*(HLAX(i-1,j+1) - HLAX(i-1,j-1));
end
HLAX(i,length(x)) = 0.5*(HLAX(i-1,length(x)) + HLAX(i-1,length(x)-1)) - ...
(((c^2)*dt)/(2*g*dx))*(VLAX(i-1,length(x)) - VLAX(i-1,length(x)-1));
VLAX(i,j) = 0.5*(VLAX(i-1,length(x)) + VLAX(i-1,length(x)-1)) - ...
(((c^2)*dt)/(2*g*dx))*(HLAX(i-1,length(x)) - HLAX(i-1,length(x)-1));
end
figure(2)
surf(x,t,VLAX)
great a legitimate excuse for matlab on UCP