- /
 - 
        
2D traveling Bars
 
        on 8 Nov 2023
        
        
 
    - 11
 - 36
 - 0
 - 0
 - 638
 
drawframe(1);
 Write your drawframe function below
function drawframe(f)
% Grid setup
N = 31;
L = 4*pi;
x = linspace(0,L,N);
y = linspace(0,L,N);
[X,Y] = meshgrid(x,y);
persistent u
if isempty(u)
    u = zeros(N,N,3);
    % Initial Condition
    % It has three data set; 1: past, 2: current, 3: future.
    % Gaussian Pulse
    init_u = 2*exp(-2*(X-L/4).^2-2*(Y-L/3).^2);
    u(:,:,1) = init_u;
    u(:,:,2) = init_u;
end
s = 0.5;
% Dirichet Boundary conditions
u(1,:,:) = 0;
u(end,:,:) = 0;
u(:,1,:) = 0;
u(:,end,:) = 0;
% Time progress (8 times at a time)
% Finite difference
for ii=1:1
    u(2:end-1,2:end-1,3) = s*(u(2:end-1,3:end,2)+u(2:end-1,1:end-2,2)) ...
        + s*(u(3:end,2:end-1,2)+u(1:end-2,2:end-1,2)) ...
        + 2*(1-2*s)*u(2:end-1,2:end-1,2) ...
        - u(2:end-1,2:end-1,1);
    u(:,:,1) = u(:,:,2);
    u(:,:,2) = u(:,:,3);
end
% Plot the velocity field
hb = bar3(u(:,:,1));
set(gca,'ZLim',[-0.4,0.4])
for ii=1:length(hb)
    zdata = hb(ii).ZData;
    hb(ii).CData = zdata;
    hb(ii).FaceColor = 'interp';
    clim([-0.4,0.4]);
end
axis off
end


