Example 2.2: Heat Equation in 2-D

We consider the linear heat equation in two spatial dimensions

The natural splitting method for this equation is to solve it dimension by dimension, that is, use the splitting

To compute the solution of each of the 1-D problems, we will use a spectral method.

Initial setup

N     = 128;  % Number of grid points. NB, N must be even!
T     = 0.25; % Final time
dt    = T/6;  % Time step in splitting
x     = linspace(-pi,pi,N); y=x;
[X,Y] = meshgrid(x,y);
r1    = sqrt((X-1).^2+(Y-1).^2);
r2    = abs(X+1.5)+abs(Y+1.5);
u0    = max(0.0,1-0.5*r1) + 1.5*(r2<0.8);

surf(x,y,u0), axis([-pi pi -pi pi 0 1.5]),
shading interp; light, view(-12,24), title('Inital data')


Solving the equation by splitting

Nt=ceil(T/dt); dt=T/Nt;
u=zeros(length(x),length(y),Nt+1);
u(:,:,1)=u0;
for i=1:Nt,
u1         = heat(u(:,:,i),dt,1);   % Diffusing in the x-direction
u(:,:,i+1) = heat(u1,dt,2);         % Diffusing in the y-direction
end;


Plot final solution

surf(x,y,u(:,:,Nt+1)); axis([-pi pi -pi pi 0 1.5])