%PDEDEMO6 Animation demo for wave propagation problem.

%       Copyright (c) 1994-98 by The MathWorks, Inc.
%       $Revision: 1.7 $  $Date: 1997/11/25 17:05:27 $

echo on

% Animation demo for wave propagation problem.
clc

%       We solve the standard wave equation
%        d2u/dt2-div(grad(u))=0
%       on a square.
pause % Strike any key to continue.
clc

%       Problem definition
g='squareg'; % The unit square
b='squareb3'; % 0 on the left and right boundaries and
%               0 normal derivative on the top and bottom boundaries.
c=1;
a=0;
f=0;
d=1;

%       Mesh
[p,e,t]=initmesh('squareg');
pause % Strike any key to continue.
clc

%       The initial conditions:
%       u(0)=atan(cos(pi/2*x)) and
%       dudt(0)=3*sin(pi*x).*exp(sin(pi/2*y))
%       are chosen to avoid putting a lot of energy into
%       the higher vibration modes, thus permitting a reasonable
%       time step size.
x=p(1,:)';
y=p(2,:)';

u0=atan(cos(pi/2*x));
ut0=3*sin(pi*x).*exp(sin(pi/2*y));
pause % Strike any key to continue.
clc

%       We want the solution at 31 points in time between 0 and 5.
n=31;
tlist=linspace(0,5,n);

%       Solve hyperbolic problem
uu=hyperbolic(u0,ut0,tlist,b,p,e,t,c,a,f,d);
pause % Strike any key to continue.
clc

%       To speed up the plotting, we interpolate to a rectangular grid.
delta=-1:0.1:1;
[uxy,tn,a2,a3]=tri2grid(p,t,uu(:,1),delta,delta);
gp=[tn;a2;a3];

%       Make the animation
newplot;
M=moviein(n);
umax=max(max(uu));
umin=min(min(uu));
for i=1:n,...
  if rem(i,10)==0,...
    fprintf('%d ',i);...
  end,...
  pdeplot(p,e,t,'xydata',uu(:,i),'zdata',uu(:,i),'zstyle','continuous',...
          'mesh','off','xygrid','on','gridparam',gp,'colorbar','off');...
  axis([-1 1 -1 1 umin umax]); caxis([umin umax]);...
  M(:,i)=getframe;...
  if i==n,...
    fprintf('done\n');...
  end,...
end

% Show movie
nfps=5;
movie(M,10,nfps);
pause % Strike any key to end.

echo off

