• Remix
  • Share
  • New Entry

on 8 Nov 2023
  • 11
  • 25
  • 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
Animation
Remix Tree