// talle du domaine
L=10;
H=8;
//parametre de discretisation
Nx=70; 
Ny=80;
l=L/(Nx-1);
h=H/(Ny-1);
// construction de la liste des triangles reperes par les sommets 
S=zeros(2*(Nx-1)*(Ny-1),3);
k=0
for j=0:Ny-2
    for i=1:Nx-1
        k=k+1;
        S(k,1)=i+j*Nx
        S(k,2)=S(k,1)+1
        S(k,3)=S(k,1)+Nx
        k=k+1
        S(k,3)=i+1+j*Nx
        S(k,1)=S(k,3)+Nx
        S(k,2)=S(k,1)-1
    end
end
//fin de construction de la construction du maillage
taille=k;// on verifie que taille=2*(Nx-1)*(Ny-1)
//construction de la matrice elementaire
lsh=l/h;hsl=h/l;
el=0.5*[lsh+hsl,-hsl,-lsh;-hsl,hsl,0;-lsh,0,lsh]+h*l/3*diag(ones(3,1),0);
// initialisation de la matrice globale
mat=diag(sparse(zeros(Nx*Ny,1)),0);
//passage revue des elements
for k=1:taille
    for i=1:3
      for j=1:3
          mat(S(k,i),S(k,j))=mat(S(k,i),S(k,j))+el(i,j);
      end
  end
end
//construction du second membre par FQ trapeze
//definition de l evaluation de f aux sommets
x=[0:l:L];
y=[0:h:H];
ftab=sin(x')*cos(y);
f=matrix(ftab,Nx*Ny,1);
SM=zeros(Nx*Ny,1);
//passage en revue des elements
hls3=h*l/3;
for k=1:taille
    //passage en revue des ddl
    for i=1:3
        SM(S(k,i))=SM(S(k,i))+hls3*f(S(k,i),1);
    end
end
// fin d assemblage du second membre
//resolution du systeme
u=mat\SM;
//
utab=matrix(u,Nx,Ny);
plot3d(x,y,utab)

        
    
    
