> restart;

 > t:=0: u := (x,y) -> Sum( Sum(sin(2*sqrt(4*n*n + m*m)*t)/(n*m*sqrt(4*n*n+m*m)) * sin(2*n*x) * sin(m*y) , n=1..15), m=1..15); plot3d( u(x,y), x=0..0.5*Pi, y=0..Pi, labels =[`x`, `y`, `time = 1`], axes=FRAMED, style=patch);

 > g := (x,y) -> (Pi/2 -x)*(Pi-y); plot3d( g(x,y), x=0..0.5*Pi, y=0..Pi, labels =[`x`, `y`, `time = 1`], axes=FRAMED, style=patch);

 > t:=1: u := (x,y) -> Sum( Sum(sin(2*sqrt(4*n*n + m*m)*t)/(n*m*sqrt(4*n*n+m*m)) * sin(2*n*x) * sin(m*y) , n=1..15), m=1..15); plot3d( u(x,y), x=0..0.5*Pi, y=0..Pi, labels =[`x`, `y`, `time = 1`], axes=FRAMED, style=patch);

 > t:=5: u := (x,y) -> Sum( Sum(sin(2*sqrt(4*n*n + m*m)*t)/(n*m*sqrt(4*n*n+m*m)) * sin(2*n*x) * sin(m*y) , n=1..4), m=1..4); plot3d( u(x,y), x=0..0.5*Pi, y=0..Pi, labels =[`x`, `y`, `time = 1`], axes=FRAMED, style=patch);

 > t:=10: u := (x,y) -> Sum( Sum(sin(2*sqrt(4*n*n + m*m)*t)/(n*m*sqrt(4*n*n+m*m)) * sin(2*n*x) * sin(m*y) , n=1..4), m=1..4); plot3d( u(x,y), x=0..0.5*Pi, y=0..Pi, labels =[`x`, `y`, `time = 1`], axes=FRAMED, style=patch);

 > t:=12: u := (x,y) -> Sum( Sum(sin(2*sqrt(4*n*n + m*m)*t)/(n*m*sqrt(4*n*n+m*m)) * sin(2*n*x) * sin(m*y) , n=1..4), m=1..4); plot3d( u(x,y), x=0..0.5*Pi, y=0..Pi, labels =[`x`, `y`, `time = 1`], axes=FRAMED, style=patch);

 > t:=18: u := (x,y) -> Sum( Sum(sin(2*sqrt(4*n*n + m*m)*t)/(n*m*sqrt(4*n*n+m*m)) * sin(2*n*x) * sin(m*y) , n=1..4), m=1..4); plot3d( u(x,y), x=0..0.5*Pi, y=0..Pi, labels =[`x`, `y`, `time = 1`], axes=FRAMED, style=patch);

 >