40 lines
818 B
Mathematica
40 lines
818 B
Mathematica
|
function L = laplacian(nu,dx1,dx2,N1,N2)
|
|||
|
%
|
|||
|
% Cette fonction construit la matrice de l'op<EFBFBD>rateur Laplacien 2D anisotrope
|
|||
|
%
|
|||
|
% Inputs
|
|||
|
% ------
|
|||
|
%
|
|||
|
% nu : nu=[nu1;nu2], coefficients de diffusivit<EFBFBD> dans les dierctions x1 et x2.
|
|||
|
%
|
|||
|
% dx1 : pas d'espace dans la direction x1.
|
|||
|
%
|
|||
|
% dx2 : pas d'espace dans la direction x2.
|
|||
|
%
|
|||
|
% N1 : nombre de points de grille dans la direction x1.
|
|||
|
%
|
|||
|
% N2 : nombre de points de grilles dans la direction x2.
|
|||
|
%
|
|||
|
% Outputs:
|
|||
|
% -------
|
|||
|
%
|
|||
|
% L : Matrice de l'op<EFBFBD>rateur Laplacien (dimension N1N2 x N1N2)
|
|||
|
%
|
|||
|
%
|
|||
|
|
|||
|
g1 = -nu(1)/dx1^2;
|
|||
|
g2 = -nu(2)/dx2^2;
|
|||
|
a = -2*(g1+g2);
|
|||
|
|
|||
|
e = ones(N1*N2, 1);
|
|||
|
|
|||
|
e_inf = e;
|
|||
|
e_inf([N1:N1:N1*N2-1]) = 0;
|
|||
|
|
|||
|
e_sup = e;
|
|||
|
e_sup([N1+1:N1:N1*N2-1]) = 0;
|
|||
|
|
|||
|
L = spdiags([g1*e g2*e_inf a*e g2*e_sup g1*e], [-N2 -1 0 1 N2], N1*N2, N1*N2);
|
|||
|
|
|||
|
end
|