function Ondes2D(tinit,tfin,dt,K,cl,f,g,h,m,c)
% tinit le temps de depart de la representation
% tfin le temps final de la representation
% dt l'increment de temps
% Domaine en espace : (x1,x2) dans [0,1]^2.
% K la frequence de coupure
% 
% Les cl possibles sont 'dd' ou 'nd' (tensoriel)
% Pas de c (ondes standard).
% f et g sont 2 options de fonctions dans celles de FourIntegrand.m
% Les conditions initiale sont u0(x1,x2) = f(x1)g(x2) et u1 = 0.
% L'opŽrateur en espace est Au = - u" + c*pi^2 .
% Voir la doc pour les autres parametres dans FourIntegrand.m

% Preparation des proprietes de la figure 1
figure(1)
WHITEBG(1,'k')
set(1,'Renderer','zbuffer')

% Calcul des coefficients de Fourier de la condition initiale u0
% dans chaque direction
for j = 1:K
	FC(j) = quad8('FourIntegrand',max(0,m-h),min(1,m+h),[],[],j,cl,f,h,m) ;
	GC(j) = quad8('FourIntegrand',max(0,m-h),min(1,m+h),[],[],j,cl,g,h,m) ;
end

% Grille en espace pour la representation
x = [0:0.025:1] ;
y = [0:0.025:1] ;
L = length(x) ;
for tt = tinit:dt:tfin
	z = zeros(L) ;
	if cl == 'dd'
		for j = 1:K
			for k = 1:sqrt(K^2-j^2)
				z = z + 2* FC(j) * GC(k) * sin(pi*j*x)' * sin(pi*k*y) *...
					       		 			cos(pi*sqrt(j*j+k*k+c)*tt) ;
			end
		end
	elseif cl == 'nd'
		for j = 1:K
			for k = 1:sqrt(K^2-j^2)
				z = z + 2* FC(j) * GC(k) * cos(pi*(j-1/2)*x)' *...
					cos(pi*(k-1/2)*y) * cos(pi*sqrt((j-1/2)^2+(k-1/2)^2+c)*tt) ;
			end
		end
	end
	zmax = max( max(abs(z)) ) ;
	contourf(x,y,z,[-zmax:zmax/5:-zmax/5 -zmax/15 zmax/15 zmax/5:zmax/5:zmax]) ;
	caxis([-zmax zmax])
	colorbar
	title (['t  =  ',num2str(tt),'    &    zmax  =  ',num2str(zmax,'%1.3e')])
	pause(0.05)
end

% Apres des experiences avec c=0, on pourra essayer
% Ondes2D(2,4,0.1,50,'dd','f','f',0.1,0.5,-2.5)
% Ondes2D(0,4,0.1,50,'nd','f','f',0.1,0.5,-0.8)

