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]) shading interp; light, view(-12,24), title('Solution')
