⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sp_convdiff.m

📁 五点差分型多重网格方法:各种插值算子的比较)
💻 M
字号:
%SP_CONVDIFF Set up a convection-diffusion problem.
%
%       [A,N] = SP_CONVDIFF(NX,NY,LAM,SIGMA) sets up the following discretized
%       PDE on an NX by NY grid.  The domain is the unit square and u=0 on 
%       the boundary.
%
%	     - u_xx - u_yy + lam u_x + sigma u = f
%

% James Bordner and Faisal Saied
% Department of Computer Science
% University of Illinois at Urbana-Champaign
% 10 April 1995

function [A,N] = sp_convdiff(nx,ny,lam,sigma)
N = nx * ny;  N5 = 5 * N;
irow = zeros(N5, 1); icol = irow; NZA = irow;

h = 1/(nx+1);  h2 = h*h;

index = 0;
ii = 0;
for j = 1:ny
   for k = 1:nx
      ii = ii + 1;

      if j ~= 1
         index = index + 1;
         NZA (index) = -1.0;
         irow(index) = ii;
         icol(index) = ii - nx;   % S
      end

      if k ~= 1
         index = index + 1;
         NZA (index) = -1.0 - lam * h;
         irow(index) = ii;
         icol(index) = ii - 1;    % W
      end

      index = index + 1;
      NZA (index) = 4.0  + lam * h + sigma * h2;
      irow(index) = ii;
      icol(index) = ii;           % P (self)

      if k ~= nx
         index = index + 1;
         NZA (index) = -1.0;
         irow(index) = ii;
         icol(index) = ii + 1;    % E
      end

      if j ~= ny 
         index = index + 1;
         NZA (index) = -1.0;
         irow(index) = ii;
         icol(index) = ii + nx;   % N
      end
   end
end            

icol = icol(1:index); irow = irow(1:index);
NZA = NZA(1:index);

A = sparse (irow, icol, NZA, N, N);


      

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -