Escolar Documentos
Profissional Documentos
Cultura Documentos
Uberlândia/MG
2013
Volumes Finitos em Transferência de Calor e
Escoamento de Fluidos
Prof. Dr. Francisco José de Souza
SUMÁRIO
LISTA DE FIGURAS
Parede Superior
L_subs
y_chip
x_chip
L_chip
Parede Esquerda
Parede Direita
H_subs
H_chip
Parede Superior
Figura 1 - Esquema da geometria do dispositivo constituído pelo conjunto chip-substrato.
Meio Sólido:
k_subs 5 W/m.K
Substrato
Δ𝑥 Δ𝑥 Δ𝑦 Δ𝑦
Onde: 𝐴𝑛 = 𝑘𝑛 Δ𝑦 ; 𝐴𝑠 = 𝑘𝑠 Δ𝑦 ; 𝐴𝑤 = 𝑘𝑤 Δ𝑥 ; 𝐴𝑒 = 𝑘𝑒 Δ𝑥 ;
Δ𝑦 Δ𝑥
𝐴𝑝 = (𝑘𝑤 + 𝑘𝑒 ) + (𝑘𝑛 + 𝑘𝑠 )
Δ𝑥 Δ𝑦
TN
TW TP TE
TS
𝑇𝑁 = 𝑇𝑃
Δ𝑦
𝑘𝑃 . 𝑇𝑃 + 𝑇𝑎𝑚𝑏 . ℎ. 2
𝑇𝑁 =
Δ𝑦
𝑘𝑃 + ℎ. 2
---------------------------------------------------------------------------
clear all; close all; clc;
disp('--------------------------------------------------------------');
disp('MFlab - Programa de Pós Graduação em Engenharia Mecânica - UFU')
disp('Volumes Finitos para Escoamentos - Out 2013')
disp('Renan Francisco Soares - Mestrando')
disp('--------------------------------------------------------------');
disp('Transferência de Calor 2D - Método dos Volumes Finitos');
disp('--------------------------------------------------------------
');disp(' ');disp(' ');
%-------------------------------------------%
% Coordenadas cartesianas para o problema: %
% %
% (i,j)=(y,x) i corresponde à y (1:n) %
% j corresponde à x (1:m) %
% %
% z---» x (1,1) (1,2) (1,3) ... %
% | (2,1) (2,2) (2,3) ... %
% y (3,1) (3,2) (3,3) ... %
% ... ... ... ... %
%-------------------------------------------%
Tamb = 20;
Ti = 60;
h = 500;
Q_chip = 1e7;
k_subs = 5;
k_chip = 50;
n = 4*10;
m = 9*10;
---------------------------------------------------------------------------
% Dados do problema Chip-Substrato
disp('Tamb = 20 [C]');
disp('Ti = 60 [C]');
disp('h = 500 [W/m².K]');
disp('Q_chip = 1e7 [W/m²]');
disp('k_subs = 5 [W/m.K]');
disp('k_chip = 50 [W/m.K]');
disp('Volumes = 90x40 (Eixo x * Eixo y)');disp(' ');disp(' ');
if question == 1
Tamb = input('Temperatura ambiente (Tamb) [C].....................:
');
Ti = input('Temperatura inicial do dispositivo (Ti) [C].........:
');
h = input('Coeficiente de convecção (h) [W/m².K]...............:
');
Q_chip = input('Geração de calor pelo Chip (Q_chip) [W/m²]..........:
');
k_subs = input('Condutividade térmica do Substrato (k_subs) [W/m.K].:
');
k_chip = input('Condutividade térmica do Chip (k_chip) [W/m.K]......:
');
m = input('Quantidade de elementos pertencente ao Eixo X (m)...:
');
n = input('Quantidade de elementos pertencente ao Eixo Y (n)...:
');disp(' ');
end
---------------------------------------------------------------------------
---------------------------------------------------------------------------
---------------------------------------------------------------------------
% Posição e Tamanho do Chip no Substrato
question = 0;
O código permite escolher entre duas condições de contorno para as faces: parede
adiabática e parede sob convecção. Assim, questiona-se qual condição de contorno térmica será
aplicada a cada uma das quatro paredes do dispositivo (Superior, Inferior, Esquerda e Direita).
Como resposta codificada, o valor um (1) corresponde a resposta “Parede sob
Convecção” (Convecção) e o valor dois (2) a resposta “Parede Adiabática” (Adiabática). Ainda,
para o caso de resposta inválida, a questão será refeita.
---------------------------------------------------------------------------
% Setup das Condições de Contorno (Parede Adiabática ou Parede sob
Convecção)
---------------------------------------------------------------------------
tic; % Início do contador de tempo
k(1:n,1:m) = k_subs;
Qp(1:n,1:m) = 0;
xmin = round( x_chip/dx ) + 2;
xmax = round((x_chip+L_chip)/dx) + 1;
ymin = round( y_chip/dy ) + 2;
ymax = round((y_chip+H_chip)/dy) + 1;
for i=ymin:ymax
for j=xmin:xmax
% Propriedades do Chip
k(i,j) = k_chip;
Qp(i,j) = Q_chip*(dx*dy);
end
end
---------------------------------------------------------------------------
---------------------------------------------------------------------------
---------------------------------------------------------------------------
% Cálculo Condição inicial Ti e coeficientes AS, AN, AW, AE e AP.
T(1:n,1:m) = Ti;
AW(1:n,1:m) = 0;
AE(1:n,1:m) = 0;
AS(1:n,1:m) = 0;
AN(1:n,1:m) = 0;
AP(1:n,1:m) = 0;
for i=2:n-1
for j=2:m-1
AW(i,j) = kw * (dy/dx);
AE(i,j) = ke * (dy/dx);
AS(i,j) = ks * (dx/dy);
AN(i,j) = kn * (dx/dy);
AP(i,j) = (ke+kw)*dy/dx + (ks+kn)*dx/dy;
end
end
---------------------------------------------------------------------------
---------------------------------------------------------------------------
---------------------------------------------------------------------------
% Modelo de Solução Iterativo
res = 1e6;
iter = 1;
res_AP = sum(sum(AP,1),2); % Soma dos coeficientes da matriz AP.
sum_erro = 0;
Told = T;
%------------------------------------------------------------------
%---------------------- Condições de Contorno ---------------------
%
if BC_up == 1
for r = 2:m-1
T(1,r) = ( k(2,r)*T(2,r) + (h*dy/2)*Tamb )/( k(2,r) + h*dy/2 );
end
else
T(1,:) = T(2,:);
end
%
if BC_down == 1
for r = 2:m-1
T(n,r) = ( k(n-1,r)*T(n-1,r) + (h*dy/2)*Tamb )/( k(n-1,r) +
h*dy/2 );
end
else
T(n,:) = T(n-1,:);
end
%
if BC_left == 1
for r = 1:n
T(r,1) = ( k(r,2)*T(r,2) + (h*dx/2)*Tamb )/( k(r,2) + h*dx/2 );
end
else
T(:,1) = T(:,2);
end
%
if BC_right == 1
for r = 1:n
T(r,m) = ( k(r,m-1)*T(r,m-1) + (h*dx/2)*Tamb )/( k(r,m-1) +
h*dx/2 );
end
else
T(:,m) = T(:,m-1);
end
%------------------------------------------------------------------
%------------------------------------------------------------------
%------------------ Núcleo do Processo de Solução -----------------
%
for i=2:n-1
for j=2:m-1
end
end
%------------------------------------------------------------------
% Histórico do Resíduo
Residuo(iter) = res;
iter = iter + 1;
eixoiter = 1:iter-1;
%----------------------------------------------------------------------
%--------------------- Interface com Usuário --------------------------
clc;
disp('--------------------------------------------------------------');
disp('MFlab - Programa de Pós Graduação em Engenharia Mecânica - UFU')
disp('Volumes Finitos - Out 2013')
disp('Renan Francisco Soares - Mestrando')
disp('--------------------------------------------------------------');
disp('Transferência de Calor 2D - Método dos Volumes Finitos');
disp('--------------------------------------------------------------
');disp(' ');disp(' ');
disp('---------------------------------------------------');
disp('O modelo iterativo está sendo executado.');
disp('---------------------------------------------------');disp(' ');
disp('Figura 1: Resultado instantâneo das iterações.');
disp('Figura 2: Histórico do Resíduo de Temperatura.');disp(' ');
disp('O resíduo atual é de: '); res
% Gráficos instantâneos
figure(1)
imagesc([1 m],[1 n],T);
title('Distribuição de Temperatura 2D')
xlabel('Volumes - Eixo x')
ylabel('Volumes - Eixo y')
colorbar('SouthOutside')
figure(2)
plot(eixoiter, Residuo,'go')
semilogy (Residuo,'go')
grid on
title('Resíduo (Temperatura)')
xlabel('Iterações')
ylabel('Resíduo')
%----------------------------------------------------------------------
end
---------------------------------------------------------------------------
---------------------------------------------------------------------------
---------------------------------------------------------------------------
% Temperatura Mínima e Máxima
Tmin = T(2,2);
Tmax = T(2,2);
for i=2:n-1
for j=2:m-1
if T(i,j) > Tmax
Tmax = T(i,j);
pos_y = (i-1)*dy;
pos_x = (j-1)*dx;
end
if T(i,j) < Tmin
Tmin = T(i,j);
end
end
end
---------------------------------------------------------------------------
---------------------------------------------------------------------------
---------------------------------------------------------------------------
% Mensagem de Resultado
t = toc;
disp('---------------------------------------------------');
disp('Processo concluído!');
disp('---------------------------------------------------');disp(' ');
disp('O ponto de máxima temperatura dista, em X e Y [mm]: ');
Pos_XY = [pos_x*1000 pos_y*1000]
disp('---------------------------------------------------');
Resultado = ['Duração da solução ....: ' num2str(t, 5) ' [s] ';
'Temperatura mínima ....: ' num2str(Tmin, 5) ' [ºC]'; 'Temperatura máxima
....: ' num2str(Tmax, 5) ' [ºC]']
disp('---------------------------------------------------');disp(' ');
---------------------------------------------------------------------------
---------------------------------------------------------------------------
3. SIMULAÇÃO NUMÉRICA
Este coeficiente pode ser usado tanto para o propósito de minimizar a velocidade
de avanço das informações dentro do domínio em estudo (0 < Ω < 1), ou para maximizar tal
avanço (Ω > 1). A vantagem de minimizar a velocidade é prover ao processo iterativo maior
estabilidade; entretanto, considerável custo computacional é faz-se necessário.
Assim, para fins de performance de solução, convém adotar valores que maximizam a
velocidade de propagação das informações; contudo, instabilidades aumentam ao passo que
incrementa-se o valor da constante.
Embasando-se no estudo pseudoempírico deste coeficiente, as soluções providas
com Ω > 2 adotam caráter divergente de solução. Portanto, conclui-se que o valor Ω = 2,0 é o
valor máximo aceitável pelo sistema para manter seu caráter convergente, e assim,
possibilitando obter resultados.
4. CONCLUSÃO
Figura 17 - Solução utilizando as propriedades físicas original, sob diferente configuração da geometria e
com fronteiras sob convecção.
%-------------------------------------------%
% Coordenadas cartesianas para o problema: %
% %
% (i,j)=(y,x) i corresponde à y (1:n) %
% j corresponde à x (1:m) %
% %
% z---» x (1,1) (1,2) (1,3) ... %
% | (2,1) (2,2) (2,3) ... %
% y (3,1) (3,2) (3,3) ... %
% ... ... ... ... %
%-------------------------------------------%
Tamb = 20;
Ti = 60;
h = 500;
Q_chip = 1e7;
k_subs = 5;
k_chip = 50;
n = 4*20;
m = 9*20;
disp('Tamb = 20 [C]');
disp('Ti = 60 [C]');
disp('h = 500 [W/m².K]');
disp('Q_chip = 1e7 [W/m²]');
disp('k_subs = 5 [W/m.K]');
disp('k_chip = 50 [W/m.K]');
disp('Volumes = 90x40 (Eixo x * Eixo y)');disp(' ');disp(' ');
if question == 1
Tamb = input('Temperatura ambiente (Tamb) [C].....................:
');
Ti = input('Temperatura inicial do dispositivo (Ti) [C].........:
');
h = input('Coeficiente de convecção (h) [W/m².K]...............:
');
Q_chip = input('Geração de calor pelo Chip (Q_chip) [W/m²]..........:
');
k_subs = input('Condutividade térmica do Substrato (k_subs) [W/m.K].:
');
k_chip = input('Condutividade térmica do Chip (k_chip) [W/m.K]......:
');
m = input('Quantidade de elementos pertencente ao Eixo X (m)...:
');
n = input('Quantidade de elementos pertencente ao Eixo Y (n)...:
');disp(' ');
end
L_subs = 27;
H_subs = 12;
x_chip = 9;
y_chip = 0;
L_chip = 9;
H_chip = 4;
question = 0;
x_chip = x_chip/1000;
y_chip = y_chip/1000;
L_chip = L_chip/1000;
H_chip = H_chip/1000;
k(1:n,1:m) = k_subs;
Qp(1:n,1:m) = 0;
xmin = round( x_chip/dx ) + 2;
xmax = round((x_chip+L_chip)/dx) + 1;
ymin = round( y_chip/dy ) + 2;
ymax = round((y_chip+H_chip)/dy) + 1;
for i=ymin:ymax
for j=xmin:xmax
% Propriedades do Chip
k(i,j) = k_chip;
Qp(i,j) = Q_chip*(dx*dy);
end
end
T(1:n,1:m) = Ti;
AW(1:n,1:m) = 0;
AE(1:n,1:m) = 0;
AS(1:n,1:m) = 0;
AN(1:n,1:m) = 0;
AP(1:n,1:m) = 0;
for i=2:n-1
for j=2:m-1
AW(i,j) = kw * (dy/dx);
AE(i,j) = ke * (dy/dx);
AS(i,j) = ks * (dx/dy);
AN(i,j) = kn * (dx/dy);
AP(i,j) = (ke+kw)*dy/dx + (ks+kn)*dx/dy;
end
end
res = 1e6;
iter = 1;
res_AP = sum(sum(AP,1),2); % Soma dos coeficientes da matriz AP.
sum_erro = 0;
Told = T;
%------------------------------------------------------------------
%---------------------- Condições de Contorno ---------------------
%
if BC_up == 1
for r = 2:m-1
T(1,r) = ( k(2,r)*T(2,r) + (h*dy/2)*Tamb )/( k(2,r) + h*dy/2 );
end
else
T(1,:) = T(2,:);
end
%
if BC_down == 1
for r = 2:m-1
T(n,r) = ( k(n-1,r)*T(n-1,r) + (h*dy/2)*Tamb )/( k(n-1,r) +
h*dy/2 );
end
else
T(n,:) = T(n-1,:);
end
%
if BC_left == 1
for r = 1:n
T(r,1) = ( k(r,2)*T(r,2) + (h*dx/2)*Tamb )/( k(r,2) + h*dx/2 );
end
else
T(:,1) = T(:,2);
end
%
if BC_right == 1
for r = 1:n
T(r,m) = ( k(r,m-1)*T(r,m-1) + (h*dx/2)*Tamb )/( k(r,m-1) +
h*dx/2 );
end
else
T(:,m) = T(:,m-1);
end
%------------------------------------------------------------------
%------------------------------------------------------------------
%------------------ Núcleo do Processo de Solução -----------------
%
for i=2:n-1
for j=2:m-1
end
end
%------------------------------------------------------------------
% Histórico do Resíduo
Residuo(iter) = res;
iter = iter + 1;
eixoiter = 1:iter-1;
%----------------------------------------------------------------------
%--------------------- Interface com Usuário --------------------------
clc;
disp('--------------------------------------------------------------');
disp('MFlab - Programa de Pós Graduação em Engenharia Mecânica - UFU')
disp('Volumes Finitos para Escoamentos - Out 2013')
disp('Renan Francisco Soares - Mestrando')
disp('--------------------------------------------------------------');
disp('Transferência de Calor 2D - Método dos Volumes Finitos');
disp('--------------------------------------------------------------
');disp(' ');disp(' ');
disp('---------------------------------------------------');
disp('O modelo iterativo está sendo executado.');
disp('---------------------------------------------------');disp(' ');
disp('Figura 1: Resultado instantâneo das iterações.');
disp('Figura 2: Histórico do Resíduo de Temperatura.');disp(' ');
disp('O resíduo atual é de: '); res
% Gráficos instantâneos
figure(1)
imagesc([1 m],[1 n],T);
title('Distribuição de Temperatura 2D')
xlabel('Volumes - Eixo x')
ylabel('Volumes - Eixo y')
colorbar('SouthOutside')
figure(2)
plot(eixoiter, Residuo,'go')
semilogy (Residuo,'go')
grid on
title('Resíduo (Temperatura)')
xlabel('Iterações')
ylabel('Resíduo')
%----------------------------------------------------------------------
end
Tmin = T(2,2);
Tmax = T(2,2);
for i=2:n-1
for j=2:m-1
if T(i,j) > Tmax
Tmax = T(i,j);
pos_y = (i-1)*dy;
pos_x = (j-1)*dx;
end
if T(i,j) < Tmin
Tmin = T(i,j);
end
end
end
% Mensagem de Resultado
t = toc;
disp('---------------------------------------------------');
disp('Processo concluído!');
disp('---------------------------------------------------');disp(' ');
disp('O ponto de máxima temperatura dista, em X e Y [mm]: ');
Pos_XY = [pos_x*1000 pos_y*1000]
disp('---------------------------------------------------');
Resultado = ['Duração da solução ....: ' num2str(t, 5) ' [s] ';
'Temperatura mínima ....: ' num2str(Tmin, 5) ' [ºC]'; 'Temperatura máxima
....: ' num2str(Tmax, 5) ' [ºC]']
disp('---------------------------------------------------');disp(' ');