Sei sulla pagina 1di 2

28/04/17 04:39 C:\Users\Fernando\Docume...\tentativa_3.

m 1 of 2

clear all
clc
%-----------------------------------------------------------------

tic %Incio da contagem do tempo

%-----------------------------------------------------------------

x = 1; %dimenso x tijolo
y = 1; %dimenso y tijolo

m = 125; %nmero de ns i
n = 125; %nmero de ns j
mn = m*n; %nmero total de ns da malha

dx = x/(m-1); %distncia entre ns em x


dy = y/(n-1); %distncia entre ns em y

x_vec = 0:dx:x; %vetor do espao em x


y_vec = 0:dy:y; %vetor do espao em y

%-----------------------------------------------------------------

%Valores para conveco


h = 10; %w/(m^2*K)
k = 1; %w/(m*K)
Tinf = 300; %K
bi = (h*dy)/k; %nmero de biot

%-----------------------------------------------------------------

%Valores para critrio de parada

itermax = 1000000; %nmero mximo de iteraes


tol = 0.0001; %tolerncia

%-----------------------------------------------------------------

%Construo da malha
T = zeros(m,n);

%Condies de contorno
T(1,:)=500; %temp. na borda superior
T(:,1)=500; %temp. na borda esquerda
T(:,n)=500; %temp. na borda da direita

%-----------------------------------------------------------------

%Laos para iteraes

for iter = 1:itermax %Para quando o erro for menor que a toler. ou quando
%atingir valor max. definido de iteraes

Tantiga = T; %armazena cada iterao em uma matriz Tantiga


28/04/17 04:39 C:\Users\Fernando\Docume...\tentativa_3.m 2 of 2

%conduo (ns internos)


for j = 2:n-1
for i = 2:m-1
T(i,j) = 0.25*(T(i+1,j)+T(i-1,j)+T(i,j+1)+T(i,j-1));
end
%conveco (borda)
for i = m
T(i,j)=((2*T(i-1,j)+T(i,j+1)+T(i,j-1))+2*bi*Tinf)/(2*(bi+2));
end
end
dif = max(max(abs(T - Tantiga))); %calcula a maior diferena entre cada
%iterao

%fprintf('Iter = %8.0f - Dif. = %10.6f deg. C\n', iter, dif);

if dif < tol %condio de parada


break
end
end

%-----------------------------------------------------------------

%Plot do grfico da distribuio de temperatura


figure
contourf(x_vec, -y_vec, T,'LineStyle', 'none')
colorbar

%Plota os valores para y = 0.5


p = round(0.5/dy); %arredonda para o inteiro mais prximo

figure
plot(x_vec,T(p,:))
ylabel('Temperatura em y = 0.5');
xlabel('x');

%-----------------------------------------------------------------

save 125por125.mat %salva o workspace em um arquivo .mat


save('Tmatrix.txt','T')

%-----------------------------------------------------------------
toc %Fim da contagem do tempo

Potrebbero piacerti anche