Malha

De WikiLICC
Ir para: navegação, pesquisa

Uma malha (no contexto de métodos numéricos) é um conjunto de pontos que cobrem um domínio espacial de tal forma a subdividi-lo em células menores.

Malha não uniforme

Exemplo de geração de malha não uniforme em Matlab.

% malha retangular com espaçamento não-uniforme e
% concentração de pontos em (Xc, Yc).

clear
Ymax  = 1        % comprimento y
Xmax  = 20       % comprimento x

N     = 65       % Nós em X
fator = 0.10;    % fator de redução/ampliação
r     = 1+fator

Xc    = 3;       % Centro de concentração de pontos (Xc,Yc)
Yc    = Ymax/2;

Nhalf = (N+1)/2  ;
a1    = (Ymax/2)*(1 - r)/(1-r^(Nhalf-1)) ;

Nesq  = floor( log( 1-Xc*(1-r)/a1)/log(r) )+1
Ndir  = floor( log( 1-(Xmax-Xc)*(1-r)/a1)/log(r) )+1

M     = Nesq + Ndir;

co =1 
y(co) = 0;
for j=2:Nhalf;
  co=co+1;
  dy = a1*(1+fator)^(Nhalf-j);
  y(co)=y(co-1) + dy;
end 
for j= 2:Nhalf
  co=co+1;
  dy = a1*(1+fator)^(j-2);
  y(co)=y(co-1) + dy;
end 

co=1;
x(co) = 0;
for i=2:Nesq;
  co=co+1;
  dx = a1*(1+fator)^(Nesq-i);
  x(co)=x(co-1) + dx;
end 

for i= 2:Ndir+1
  co=co+1;
  dx = a1*(1+fator)^(i-2);
  x(co)=x(co-1) + dx;
end 

NovoXc = x(Nesq);

x=x-NovoXc;    %translação para (0,0)
y=y-(Ymax/2);

[X,Y]=meshgrid(x,y);
mesh(X,Y,ones(size(X)))
view(0,90)
axis equal