Você está na página 1de 3

PROGRAMA DE CANAL CON APORTANTE

clear all
close all
q1=1; % caudal aguas arriba
q2=0.5; % caudal que entra por el aportante
q3=q1+q2; % caudal que sale (eq. continuidad)
L=60; W=20; W1=10; % L: largo W: ancho, W1: ancho del
aportante
dx=1; nx=L/dx+1;
dy=1; ny=W/dy+1;
alpha=(dx/dy)^2;

for j=1:ny
for i=1:nx
x(i,j)=(i-1)*dx;
y(i,j)=(j-1)*dy;
A(i,j,1)=0; % valor inicial del proceso iterativo de la
funcion corriente
end
end
% definiendo el numero de iteraciones:
km=1000;
% inicio del proceso iterativo
for k=1:km

for j=2:ny-1
for i=2:nx-1
A(i,j,k+1)=(A(i-1,j,k)+A(i+1,j,k)+alpha*A(i,j-
1,k)+alpha*A(i,j+1,k))/(2*(1+alpha));

end
end

% definir las condiciones de frontera:

A(1:nx,ny,k+1)=q1; % en la frontera superior


ir1=31; % nodo de inicio de aportante
ir2=41; % nodo final de aportante
A(1:ir1,1,k+1)=0;
A(ir2:nx,1,k+1)=-q2;

% condicion de frontera en el aportante


for i=ir1:ir2
A(i,1,k+1)=-(q2/(ir2-ir1-1))*(i-ir1);
end
% condiciones de frontera de gradiente cero dA/dx=0
A(1,1:ny,k+1)=A(2,1:ny,k+1);
A(nx,1:ny,k+1)=A(nx-1,1:ny,k+1);
% ---
end
% calculando el vector velocidad:
% recordar que:
% u=dA/dy, v=-dA/dx;

for j=2:ny
for i=2:nx
u(i,j)=(A(i,j,k)-A(i,j-1,k))/dy;
v(i,j)=-(A(i,j,k)-A(i-1,j,k))/dx;
end
end

figure

subplot(2,1,1)
contour(x,y,A(:,:,k),15)
title('Gráfica 1:Función Corriente')
axis equal
hold on
grid on
subplot(2,1,2)
quiver(x,y,u,v,1)
title('Gráfica 2:Potencial de Velocidades')
axis equal
hold on
grid on

Você também pode gostar