Você está na página 1de 46

TRANSFERÊNCIA DE CALOR EM UM ESCOAMENTO CRUZADO EM

UMA PLACA PLANA VERTICAL

Diego Cardoso 1, Gabriel Rolim 2, Vanessa Lacerda3


Universidade de Brasília/UnB, Faculdade do Gama/FGA, Gama, DF.
e-mail: 1 diegocardoso_souza@hotmail.com, 2gabrielrolim.m@gmail.com, 3vanessis.mf@hotmail.com

__________________________________________________________________________

RESUMO
O caso em estudo trata-se de um relatório sobre a taxa de transferência de calor por
convecção em uma placa pana com escoamento cruzado por meio do método de volume de
controle baseado em elementos finitos. Utilizou-se para a solução do caso exposto o software
Matlab. As soluções foram apresentadas sucintamente por meio de tabelas e figuras
explicativas. Ao final será possível enfatizar um pouco mais as vantagens de se utilizar
métodos computacionais para a solução de problemas em que as equações diferenciais
governantes apresentem alta complexidade para ser desenvolvido analiticamente.

Palavras-chave: Malha, Transferência de calor, MVCEF.


__________________________________________________________________________

1. Introdução
O escoamento cruzado de fluidos é comumente utilizado em equipamentos de
transferência de calor, tais como evaporadores, condensadores, geladeiras e
aparelhos de ar condicionado [1], assim como em aplicações de engenharia onde os
casos mais comuns de utilização são em construções de plataformas offshore de
petróleo, torres e linhas de transmissão de potência e até mesmo em equipamentos
de usinas nucleares [2]. Nestes tipos de aplicações há sempre um fluido que escoa
dentro dos tubos e outro se move sobre eles, em uma direção perpendicular [1].
Existe o tipo de escoamento que ocorre internamente a um tubo e o outro
externamente. No escoamento interno, as características de carga e coeficientes de
transmissão de calor já possuem modelagem analítica e numérica bem desenvolvida
e bastante precisa já o externo é complexo e irregular [2].
Estes escoamentos externos geralmente são direcionados pela ação de placas
defletoras que são responsáveis pelo escoamento cruzado e pelo aumento da taxa de
troca térmica do sistema. A modelagem analítica deste tipo de escoamento é pouco
desenvolvida e altamente dependente de resultados experimentais, já a modelagem
numérica apresenta bons resultados, porém, ainda possui problemas quanto a

1
modelagem de escoamentos turbulentos com geometrias complexas [2]. Assim,
escoamentos internos podem ser analisados considerando o escoamento através de
uma única geometria e depois é possível multiplicar pelo número das existentes. O
que não ocorre com escoamento externos, pois eles afetam o padrão do escoamento
e o nível de turbulência [1].
A troca de calor é alterada de acordo com o aumento da velocidade de
escoamento do fluido, que proporciona melhora no processo de transmissão de calor
[2], e também pela presença de uma subcamada viscosa, que apresenta
características de escoamento laminar [2]. Quando não há uma mistura eficiente do
fluido, a troca de calor se processa apenas por condução, deste modo, o fluxo de
escoamento deve aumentar até ser capaz de atuar na redução da resistência desta
subcamada. Caso isto não ocorra haverá somente o aumento na energia necessária
para movimentar o fluido [2].

2. Base Teórica

O escoamento de fluidos pode ocorrer sobre estruturas sólidas, este está


associado ao surgimento de cargas dinâmicas causadoras de vibrações que podem
ser amplificadas com o aumento da velocidade de escoamento do fluido.
Os trocadores de calor exigem cada vez mais condições de trabalho que
apresentam altas temperaturas, baixas quedas de pressão e altas taxa de
transferência de calor [3] e as tentativas para melhorar estes processos causam
aumento nas cargas dinâmicas. Este aumento, como dito anteriormente, produz
vibrações indesejadas nas estruturas o que pode vir a causar fissuras por fadiga e
danos por desgaste causado pela fricção dos componentes [4].

̇ ℎ𝐴𝑆 (𝑇𝑆 − 𝑇∞ )
𝑄= (1)

Pela lei do resfriamento de Newton (eq. 1), é possível encontrar o


comportamento da convecção em cilindros, esferas, paredes planas. Para tornar mais
fácil o processo de obtenção da transferência de calor, utilizam-se parâmetros
adimensionais, assim as variáveis das equações governantes podem ser reduzidas.
A primeira adimensionalização executável é do coeficiente de transferência de calor
por meio do número de Nusselt (eq. 4).

ℎ𝐿𝑐
𝑁𝑢 = (2)
𝑘

2
O número de Nusselt é o aprimoramento da transferência de calor através de
uma camada de fluido como resultado da convenção relativa à condução por meio da
mesma camada de fluido. Sendo assim, quanto maior for o número de Nusselt a
convecção é mais efetiva. O k é a condutividade térmica e Lc é o comprimento
característico.
O contato entre a superfície e o fluido resulta em uma condição de não
escorregamento, ou seja, a velocidade é zero no contato, assim à medida que o
escoamento se desenvolve na placa, o campo de velocidade perde energia devido à
viscosidade dinâmica do fluido. Deste modo, na parte inicial do escoamento tem-se
um escoamento laminar e no seu desenvolvimento ocorre transição para turbulento
[1]. Na Figura 1 o campo de velocidade é chamado de camada limite.

Figura 1: Desenvolvimento da camada limite em uma placa plana.


Fonte: Y.A.Çengel and A.J.Ghajar, 2012 .

O número de Prandtl (eq. 3) também está entre os parâmetros adimensionais,


ele descreve a espessura relativa toda velocidade e a camada limite térmica. Para
fluidos gasosos o número de Prandtl é aproximadamente um, indicando que a
quantidade de movimento da difusividade molecular possui a mesma taxa de calor
dissipado pelo fluido.

𝜇𝐶𝑝
𝑃𝑟 = (3)
𝑘

Outro parâmetro notado é o número de Reynolds que representa a transição


do fluxo laminar para o fluxo turbulento e da velocidade do fluxo, geometria e
rugosidade da superfície, tipo de fluido e temperatura da superfície.
A primeira proposta de solução das equações de convecção para um placa
plana foi elaborada por Blasius [1], partindo das equações de continuidade. Esta tinha
o objetivo de transformar duas equações diferencias parciais em uma equação

3
diferencial ordinária incluindo a variável de similaridade (eq. 4). Blasius incluiu também
uma função ψ(x,y) (eq. 5 e 6) e definiu uma função dependente da variável
adimensional (eq. 7). Depois de derivar as componentes de velocidade e substituir as
mesmas na equação de momento, obteve-se uma equação diferencial não linear de
terceira ordem que pode ser transformada em uma única equação diferencial ordinária
por meio da aplicação da variável adimensional de similaridade [1]. Blasius conseguiu
obter uma aproximação para a equação por expansão de série, já que a mesma não
pode ser resolvida analiticamente.

𝑉
𝜂 = 𝑦√ (4)
𝑣𝑥

𝜕𝜓
𝑣= (5)
𝜕𝑥

𝜕𝜓
𝑢= (6)
𝜕𝑦

𝜓
𝑓(𝜂) = 𝑣𝑥
(7)
𝑉√
𝑉

2.1 Problema proposto

Assim, este estudo propõe uma solução para um escoamento cruzado sobre
uma placa plana vertical utilizando o método dos volumes finitos baseados em
elementos finitos sistematizados na metodologia implícita, onde as equações
diferenciais são aproximadas pelo sistema de equações algébricas, diferentemente da
solução utilizada por Blasius. Este método não é uma resposta exata da equação de
Navier-Stokes, mas, uma solução aproximada.

A temperatura do fluido é de 140 °C e da superfície da placa é de 20 °C, na


Figura 2 têm-se a figura a ser estudada com suas medidas e direção do fluido.

4
Figura 2: Placa plana vertical a ser estudada

3. Metodologia

3.1. CVFEM

O método de volumes de controle baseado em elementos finitos tem como


primeiro passo o processo de gerar uma malha numérica, representante discreta do
domínio geométrico inserido no problema físico. Para a realização deste trabalho,
malhas não estruturadas serão utilizadas, sendo concebidas de elementos
triangulares de três nós.
Os pontos localizados no baricentro de um elemento triangular, quando ligados
aos pontos médios das faces dos elementos efetivam o surgimento da malha de
volumes de controle, conforme observado na figura abaixo:

Figura 3:Volume de controle poligonal e método das medianas no baricentro para a


malha utilizada.

O segundo passo do método CVFEM constitui-se de aproximar o cálculo da


variável interessada no domínio em função dos valores nodais, no método, para que
isso ocorra deve ser feita uma interpolação sobre a malha. Uma forma de obtenção

5
dos valores de ϕ por interpolação linear, onde:

ϕ = 𝐴𝑋 + 𝐵𝑌 + 𝐶 (8)

Parâmetros geométricos e os valores de ϕ nos três pontos nodais do elemento


são utilizados para determinação das constantes da equação da seguinte forma:

[𝑌23 𝜙1 +𝑌31 𝜙2 +𝑌12 𝜙3 ]


𝐴𝐿 = (9)
𝐷𝐿

[𝑋32 𝜙1 +𝑋13 𝜙2 +𝑋21 𝜙3 ]


𝐵𝐿 = 𝐷𝐿
(10)

(𝑋2 𝑌3 −𝑋3 𝑌2)𝜙1 +(𝑋3 𝑌1 −𝑋1 𝑌3)𝜙2 +(𝑋1 𝑌2 −𝑋2 𝑌1)𝜙3


𝐶𝐿 = 𝐷𝐿
(11)

𝐷 𝐿 = 𝑋2 𝑌3 − 𝑋3 𝑌2 + 𝑋3 𝑌1 − 𝑋1 𝑌3 + 𝑋1 𝑌2 − 𝑋2 𝑌1 (12)

Onde: 𝑌𝑖𝑗 = 𝑌𝑖 − 𝑌𝑗 E 𝑋𝑖𝑗 = 𝑋𝑖 − 𝑋𝑗 ,as derivadas de 𝜙 são:

𝑑𝜙𝐿 𝑑𝜙𝐿
𝑑𝑋
= 𝐴𝐿 e 𝑑𝑦
= 𝐵𝐿 (13)

Utilizando o teorema da divergência de Gauss para transformação da integral


de volume para superfície, tem-se a integração da equação de difusão de calor:

∫𝛿𝑣 ∇ . (𝑘 ∇T)dv = ∮𝛿𝐴 𝑘 ∇T. ndA (14)

O vetor normal à superfície de controle é dado como:

𝑛𝐴 = 𝑌𝑜𝑎 𝑖+𝑋𝑜𝑎 𝑗 (15)

No método utilizado, os cálculos vão ser baseados nos elementos finitos e as


integrais sobre os elementos serão representadas por matrizes locais. Ao somar as
contribuições de cada elemento, surgirá uma matriz global, representando a
integração sobre domínio inteiro.

𝑄 ç
∮𝛿𝐴 𝑘 ∇T. ndA = ∫𝑎 𝑘∇T. ndA + ∫𝑜 𝑘∇T. ndA (16)

6
𝜕𝑇 𝜕𝑇
Realizando o produto escalar de ∇T =∇T = 𝜕𝑋 𝑖 + 𝜕𝑌 𝑗 com:

𝑄 𝑑𝑇 𝑑𝑇
∫𝑎 k∇ 𝑇 . 𝑛𝑑𝐴 = 𝑘 𝑑𝑋 𝑌𝑜𝑎 − 𝑘 𝑑𝑋 𝑋𝑜𝑎 (17)

Podemos reescrever a equação de modo que:


𝑄
∫𝑎 k∇ 𝑇 . 𝑛𝑑𝐴 = 𝑘𝐴𝐿 𝑌𝑜𝑎 − 𝑘𝐵𝐿 𝑋𝑜𝑎 (18)

Substituindo os valores de 𝐴𝐿 e 𝐵 𝐿 , encontra-se

𝑄 𝑘 𝑘 𝑘
∫𝑎 k∇ 𝑇 . 𝑛𝑑𝐴 ≅ 𝐷𝐿 ( 𝑌𝑜𝑎 𝑌32 − 𝑋𝑜𝑎 𝑋23 )𝑇1 + 𝐷𝐿 ( 𝑌𝑜𝑎 𝑌13 − 𝑋𝑜𝑎 𝑋31 )𝑇2 + 𝐷𝐿 ( 𝑌𝑜𝑎 𝑌21 − 𝑋𝑜𝑎 𝑋12 )𝑇3 (19)

Realizando procedimento de integração similar para o fluxo total através da


superfície 𝑜 − 𝑐 resulta em:

𝑄 𝑘 𝑘 𝑘
∫𝑎 k∇ 𝑇 . 𝑛𝑑𝐴 ≅ 𝐷𝐿 ( 𝑌𝑐𝑜 𝑌32 − 𝑋𝑐𝑜 𝑋23 )𝑇1 + 𝐷𝐿 ( 𝑌𝑐𝑜 𝑌13 − 𝑋𝑐𝑜 𝑋31 )𝑇2 + 𝐷𝐿 ( 𝑌𝑐𝑜 𝑌21 − 𝑋𝑐𝑜 𝑋12 )𝑇3 (20)

Somando as equações e reagrupando os termos, tem-se o fluxo combinado de


convecção difusão em função dos valores nodais, considerando o volume centrado
em 1:

𝑄 𝑄
∫𝑎 k∇ 𝑇 . 𝑛𝑑𝐴 + ∫𝑎 k∇ 𝑇 . 𝑛𝑑𝐴 = 𝐷11 𝑇1 + 𝐷12 𝑇2 + 𝐷13 𝑇3 (21)

Considerando volume centrado em 2:

𝑄 𝑄
∫𝑎 k∇ 𝑇 . 𝑛𝑑𝐴 + ∫𝑎 k∇ 𝑇 . 𝑛𝑑𝐴 = 𝐷21 𝑇1 + 𝐷22 𝑇2 + 𝐷23 𝑇3 (22)

Considerando volume centrado em 3:

𝑄 𝑄
∫𝑎 k∇ 𝑇 . 𝑛𝑑𝐴 + ∫𝑎 k∇ 𝑇 . 𝑛𝑑𝐴 = 𝐷31 𝑇1 + 𝐷32 𝑇2 + 𝐷33 𝑇3 (23)

Baseado nos 𝐷𝑖𝑗 é possível montar a matriz dos coeficientes globais “A”. Desta
forma, um sistema de equações é derivado na forma: 𝐴𝑇 = 𝐵, ao qual A é a matriz dos
coeficientes e B o vetor dos termos independentes.

7
Conforme apresentado, cada equação integral sobre um volume de controle
está associada a uma equação algébrica da seguinte forma:

∫𝛿𝑣 ∇ . (𝑘 ∇T)dv ≅ 𝑎𝑖 𝑇𝑖 + ∑𝑛𝑏 𝑎𝑛𝑏 𝑇𝑛𝑏 − 𝑏𝑖 = 0 (24)

Desta equação, “i” está associado ao nó do volume de controle e “nb” está


associado aos nós vizinhos “i”.
Outra importante equação utilizada na metodologia do presente trabalho é a
equação transiente de conservação da energia para transferência de calor sem termos
de fontes:

𝜕𝑇 𝑘
𝜌 𝜕𝑡 = ∇ . (𝑐 ∇ T) (25)
𝑝

Considerando somente o termo transiente da equação de conservação, a


integração deste termo pode ser aproximada como:

𝜕𝑇 𝑇−𝑇 0
∫𝛿𝑉 𝜌 𝜕𝑡 ≅ 𝜌𝛿𝑉𝑖 ∆𝑡
(26)
𝑖

Dessa equação, 𝑇 representa a temperatura no instante futuro e 𝑇 0 a


temperatura no tempo atual. A equação da conservação da energia pode ser
aproximada pela forma implícita:

𝑇−𝑇 0
𝜌𝛿𝑉𝑖 ∆𝑡
= 𝑎𝑖 𝑇𝑖 + ∑𝑛𝑏 𝑎𝑛𝑏 𝑇𝑛𝑏 − 𝑏𝑖 = 0 (27)

𝑇−𝑇 0 0 0
𝜌𝛿𝑉𝑖 ∆𝑡
= 𝑎𝑖 𝑇𝑖 + ∑𝑛𝑏 𝑎𝑛𝑏 𝑇 𝑛𝑏 − 𝑏𝑖 = 0 (28)

Na equação (28), de forma explícita, possível isolar as a temperaturas das


equações algébricas. No entanto, neste caso, existe um limite para o tamanho do
passo de tempo “ ∆𝑡”. Ao serem utilizados valores altos, uma instabilidade é gerada,
impedindo a obtenção dos termos 𝑇𝑖 .
A equação na forma implícita (27), necessita da resolução do sistema de
equações para cada passo de tempo, revelando estabilidade quando inseridos valores
altos para obtenção dos termos 𝑇𝑖 , ao contrário da forma explícita.
Para a realização do presente trabalho, a forma implícita da equação (26) será

8
utilizada, assim como condições de contorno de temperatura específica, de fluxo
devido convecção e de fluxo devido à radiação.
A condição de contorno devido convecção é escrita adicionando alguns termos
as equações algébricas de contorno. Neste caso, considerando a taxa convectiva
como 𝑄𝑐𝑜𝑛𝑣 = ℎ𝐴𝑖 (𝑇𝑖 − 𝑇∞ ), para que o balanço de energia seja fechado com a
equação algébrica associado ao contorno deve ser:

𝑇−𝑇0
𝑎𝑖 𝑇𝑖 + ∑𝑛𝑏 𝑎𝑛𝑏 𝑇𝑛𝑏 = 𝑏𝑖 + 𝜌𝛿𝑉𝑖 + ℎ𝐴𝑖 (𝑇𝑖 − 𝑇∞ ) (29)
∆𝑡

Alguns termos dessa equação são implícitos, então, reorganizando:

𝜌𝛿𝑉𝑖 𝑇0𝑖
(𝑎𝑖 − − ℎ𝐴𝑖 ) 𝑇𝑖 + ∑𝑛𝑏 𝑎𝑛𝑏 𝑇𝑛𝑏 = 𝑏𝑖 − 𝜌𝛿𝑉𝑖 − ℎ𝐴𝑖 𝑇∞ (30)
∆𝑡 ∆𝑡

𝜌𝛿𝑉𝑖
De modo, os termos e ℎ𝐴𝑖 reforçam os termos da diagonal do sistema de
∆𝑡

equações.
Para condição de contorno de radiação, considerando a taxa radiativa é dada
𝐸 −𝐽
como 𝑄𝑟𝑎𝑑 = 1−𝜀𝑏𝑖⁄(𝜀 𝑖𝐴 ) , então para que o balanço de energia seja fechado para a
𝑖 𝑖 𝑖

equação de contorno tem-se:

𝜌𝛿𝑉𝑖 𝑇0𝑖 𝐸𝑏𝑖 −𝐽𝑖


(𝑎𝑖 − − ℎ𝐴𝑖 ) 𝑇𝑖 + ∑𝑛𝑏 𝑎𝑛𝑏 𝑇𝑛𝑏 = 𝑏𝑖 − 𝜌𝛿𝑉𝑖 − ℎ𝐴𝑖 𝑇∞ + (31)
∆𝑡 ∆𝑡 1−𝜀𝑖 ⁄(𝜀𝑖 𝐴𝑖 )

A condição de contorno referente a temperatura especificada consiste em


modificar as equações algébricas, restando:

𝑇𝑖 = 𝑇𝑒𝑠𝑝𝑒𝑐𝑖𝑓𝑖𝑐𝑎𝑑𝑎 (32)

Com a utilização do CVFEM no software numérico MATLAB, as malhas de


volume de controle geradas possuem uma qualidade associada que podem ser
avaliadas pelo próprio software, por meio da função pdetriq. Essa função representa
a aplicação da equação (16) no código utilizado.

4𝑎 √3
𝑞𝑢𝑎𝑙𝑖𝑡𝑦 = ℎ2 +ℎ2 +ℎ3 (33)
1 2 3

9
Onde “a” é a área e ℎ1 , ℎ2 e ℎ3 os comprimentos dos lados triângulo que
formam a malha. Caso 𝑞𝑢𝑎𝑙𝑖𝑡𝑦 > 0,6 a qualidade da malha é considerada aceitável,
assim como os resultados obtidos com a utilização da mesma.

3.2. Erros e medidas de controle

Um problema físico que envolva o método dos elementos finitos difere-se da


realidade, essa diferença nada mais é do que o erro associado, sendo ele originado
por várias causas distintas, os erros podem ser classificados como erro de
modelagem, erro de discretização do domínio, erro de discretização das funções e
erro numérico.
O erro de modelagem ocorre devido ao modelo matemático usado na resolução
do método dos elementos finitos. Um modelo matemático não reproduz com exatidão
o comportamento físico do modelo, por exemplo, as propriedades de um material
levadas para o modelo matemático podem não ser as reais.
O erro de discretização do domínio é referente a geometria do elemento finito
usado, ao qual pode ser que não seja possível a discretização exata quanto a
geometria do domínio.
O erro de discretização das funções está diretamente relacionado, na grande
maioria dos casos, a discretização das aproximações dos elementos finitos das
funções utilizadas, pois essas aproximações não trazem a solução exata para o
modelo matemático utilizado. As funções de aproximação nos elementos em alguns
casos não permitem discretizar as condições de iniciais de fronteira que deveriam ser
satisfeitas de início ou as condições de fronteiras naturais.
O erro numérico é pertinente aos erros praticados no método dos elementos
finitos, por exemplo, caso seja usada uma integral numérica, ela acaba introduzindo
uma parcela de erro no cálculo do sistema algébrico. Os erros de truncamento são
originados pela execução dos cálculos em precisão finita, esses erros aumentam de
acordo com o número de graus de liberdade, esse tipo de erro revela que certa
precisão só poderá ser alcançada por métodos adaptativos.
Para o problema apresentado, o erro de discretização do domínio é
desconsiderado, uma vez que a malha utilizada será refinada, o erro de modelagem
também é indeferido, já existindo um modelo.
Os erros que devem ser atentados são os de discretização das funções e o erro
numérico.

10
Usando uma abordagem geral, o erro é dado pela diferença entre a solução
exata e a solução aproximada, essa diferença pode ser aferida a um nível local,
elementar e global com variadas soluções. A seguir, a representação matemática do
erro, de forma genérica.

𝑒 = 𝑢 − 𝑢′ (34)

Onde 𝑢 é a solução exata e 𝑢′ a solução aproximada pelo método dos


elementos finitos.
O erro de discretização das funções em relação à solução analítica exata do
modelo matemático pode então ser reescrito como (Ferziger e Peric, 1996)

𝑒𝑑𝑖𝑠𝑐𝑟𝑒𝑡𝑖𝑧𝑎çã𝑜 = 𝑆𝑎𝑛𝑎𝑙í𝑡𝑖𝑐𝑎 − 𝑆𝑛𝑢𝑚é𝑟𝑖𝑐𝑎 (35)

O 𝑆, representa qualquer variável dependente de campo assim como


variáveis secundárias, a solução numérica obtida com a malha não deve conter outros
tipos de erro ou pelo menos, tê-los em menor escala em relação ao erro de
discretização.
Através da extrapolação de Richardson generalizada (Roache, 1994), os erros
de discretização numérica podem ser minimizados e estimados

(𝑆𝑚𝑎𝑙ℎ𝑎 𝑓𝑖𝑛𝑎 − 𝑆𝑚𝑎𝑙ℎ𝑎 𝑔𝑟𝑜𝑠𝑠𝑎 )


𝑆𝑛𝑢𝑚,𝑒𝑥𝑡𝑟𝑎𝑝𝑜𝑙𝑎𝑑𝑎 = 𝑆𝑚𝑎𝑙ℎ𝑎 𝑓𝑖𝑛𝑎 + (36)
(𝑟𝑟𝑒𝑓𝑖𝑛𝑜𝑃−1 )

Onde 𝑟𝑟𝑒𝑓𝑖𝑛𝑜 , razão de refino entre as malhas é dado por:

𝑣
𝑟𝑟𝑒𝑓𝑖𝑛𝑜 = 𝑣2 (37)
1

𝑣1 e 𝑣2 são os comprimentos de volume das malhas fina e grossa, respectivamente,


𝑝 é ordem de convergência espacial teórica (𝑃𝑡 ) ou aparente (𝑃𝑎 ).
A ordem de convergência aparente (𝑃𝑎 ) é calculada baseada em 3 soluções
numéricas obtidas em 3 malhas distintas . Para razão de refino de malha constante
entre as três malhas, tem-se (De Vahl Davis, 1983)

𝑆𝑚𝑎𝑙ℎ𝑎 𝑔𝑟𝑜𝑠𝑠𝑎 −𝑆𝑚𝑎𝑙ℎ𝑎 𝑠𝑢𝑝𝑒𝑟 𝑔𝑟𝑜𝑠𝑠𝑎


ln( )
𝑆𝑚𝑎𝑙ℎ𝑎 𝑓𝑖𝑛𝑎 −𝑆𝑚𝑎𝑙ℎ𝑎 𝑔𝑟𝑜𝑠𝑠𝑎
𝑃𝑎 = (38)
ln(𝑟𝑟𝑒𝑓𝑖𝑛𝑜 )

11
O erro espacial em porcentagem é calculado com a seguinte formulação:

𝑆𝑒 −𝑆𝑎
𝐸=( ) 𝑋 100 (39)
𝑆𝑒

O erro temporal mantém o tempo total constante por meio do cálculo de


variação de valor do passo de tempo, obtendo a quantidade do erro imposta pelo
passo que interfere na resposta. Obter um passo de tempo diferente que totalize o
mesmo tempo total é o que possibilita manter o total de tempo constante, o que é feito
com a variação do número de iterações de uma simulação. Para que haja eliminação
de eventuais tipos de erros na malha, manter o tempo total de tempo constante é
aplicada em regiões no mesmo domínio e com refino igual.

4. Resultados

A análise do estudo foi dividida em duas partes, na primeira parte obteve- se


os resultados para o mesmo número de Reynolds (Re=20) e mesmo número de
interações (i=200), sendo que a malha foi refinada até três vezes e o passo de tempo
(dt) também foi alterado 5, 10 e 15, todos associados à um Pr de 0,7155. A
temperatura do fluido e da superfície foram definidas como 140°C e 20°C,
respectivamente.
As propriedades do ar associadas à essa temperatura foram adicionadas no
código de acordo com a Tabela A-15 do Livro de Transferência de Calor do Çengel
[1]. Para determinar ar propriedades foi utilizada a média aritmética entre esses dois
140+20
valores 𝑇𝑚 = = 80 °𝐶 estão apresentadas a seguir.
2

Tabela 1: Propriedades para o escoamento com temperatura média de 80°C.


Viscosidade Massa Condutividade Calor
cinemática - v específica - 𝝆 térmica - k (W/m . K) específico -
(m²/s) (Kg/m³) 𝒄𝒑 (J/Kg . k)
2,096 𝑥 10−5 0,9994 0,02953 1008

Na segunda parte o número de interações foi elevado para 2000, a malha foi
refinada até duas vezes e obteve-se resultados para os seguintes números de
Reynolds 20, 30, 40, 80 e 100 para realizar o cálculo para vários numeros de Nusselt
globais associados ao Pr de 0,7155.
O código utilizado para a resolução do problema proposto é dividido nas etapas

12
de pré-processamento, processamento e pós processamento para cada Reynolds
analisado. Vale ressaltar que para a geometria em análise para Reynolds altos, acima
de 40, geram regime transiente como nos casos de 80 e 100. Uma malha mais refinada
foi simulada para fins comparativos e didáticos.

4.1 Malhas Produzidas via Matlab

As malhas feitas no Matlab foram refinadas para reduzir o erro de discretização


para que fosse possível determinar o melhor tamanho para o domínio no qual as
paredes deste não interferissem no resultado final esperado.
Sendo assim, foi realizado o teste de sensibildade da malha, a qual foi refinada
até quatro vezes gerando um gráfico do Número de nós X Número de Nusselt. O teste
foi realizado com Reynolds igual a 20 e 30. Abaixo, seguem as figuras com as malhas
gerada de acordo com as especificações da figura 2.

Figura 4: Malha refinada apenas uma vez

Figura 4: Malha refinada duas vezes

13
Figura 5: Malha refinada três vezes

Figura 6: Malha refinada quatro vezes

O teste de sensibilidade da malha foi realizado com quatro refinos para gerar
três retas no gráfico, se o Nu é aproximadamente constante para qualquer passo de
tempo, e como o objetivo era regime permanente foi testado apenas para dt=10.
O Nu tende a perder sensibilidade com refino de cada malha, é notório nos
gráficos 7 e 8 que a inclinação das retas diminui, e se realizasse mais refinos, a
inclinação dessas seria cada vez menor até se anular.
Os gráficos das figuras 7 e 8 possibilitam a visualização da convergência de Nu
com o refinamento de malha.

Figura 7: Teste de Sesibilidade para Reynolds igual a 20

14
Figura 8: Teste de Sesibilidade para Reynolds igual a 30

4.2 Resultados para numero de Reynolds igual a 20

Para realizar o comparativo de acordo com a quantidades de vezes em que a


malha foi refinada, esta parte foi subdividida de acordo com os passos de tempo
realoizados para cada refino, dt igual a 5, 10 e 15. Sendo o numero de interações o
mesmo (i=200) para Pr igual a 0,7155.

4.2.1 Passo de tempo igual a 5

No processamento, com o dados descritos anteriormente, gerou os campos de


pressão, velocidade e temperatura. Estes foram comparados de acordo com o
refinamento da malha, que foi refinada uma, duas e três vezes. As figuras a seguir
mostram o comparativo.

Figura 9: Campo de pressão com malha refinada uma duas e tres vezes,
respectivamente.

15
O campo de módulo, conforme a figura 10, representa o módulo da velocidade
do escoamento sobre a placa vertical, em que infere-se uma velocidade maior na parte
superior e inferior da placa, devido a influência que a área dos mesmos impõe durante
o fluxo.

Figura 10: Campo do modulo da velocidade com malha refinada uma duas e tres
vezes, respectivamente.

No campo de temperatura, nota-se que a temperatura do fluido não sofre


alteração por conta da temperatura da superfície da placa, que é onde a temperatura
se mostra mais baixa.

Figura 11: Campo de temperatura com malha refinada uma duas e tres vezes,
respectivamente.

É notório que quanto mais fina a malha, melhor a qualidade da imagem dos
campos. Ou seja, o refino de malha possibilita o aumento da precisão dos dados
obtidos, pois aumenta o número de elementos, mantendo o grau do polinômio

16
interpolador. Conforme o refinamento aumenta, mais tempo e esforço computacional
serão necessários.
Um gráfico de Re x Nu foi gerado no pós processamento, e o valor mais próximo
é quando a malha é refinada apenas uma vez (figura 12).

Figura 12: Gráfico de Re x Nu com malha refinada uma duas e tres vezes,
respectivamente

4.2.2 Passo de tempo igual a 10

Os resultados campos de pressão, velocidade e temperatura gerados com


passo de tempo igual a 10 quando comparados com os anteriores de passo de tempo
igual a 5, visualmente, não teve muitas alterações. A não ser pelo campo de
temperatura, em que a baixa temperatura da supercífie da placa começa a interferir
na temperatura do fluxo.

Figura 13: Campos de pressão com malha refinada uma duas e tres vezes,
respectivamente

17
Figura 14: Campo do módulo da velocidade com malha refinada uma duas e tres
vezes, respectivamente

Figura 15: Campo de temperatura com malha refinada uma duas e tres vezes,
respectivamente

Para dt igual a 10 e malha refinada duas vezes, o Nusselt global está bem
aproximado, como mostra na figura 16.

18
Figura 16: Gráfico de Re x Nu com malha refinada uma duas e tres vezes,
respectivamente

4.2.3 Passo de tempo igual a 15

Nas imagens dos campos gerados para esse passo de tempo, tambem não se
alteraram comparadas aos campos com passo de tempo menor.

Figura 17: Campos de pressão com malha refinada uma duas e tres vezes,
respectivamente

Figura 18: Campo de modulo da velocidade com malha refinada uma duas e tres
vezes, respectivamente

19
Figura 19: Campo de temperatura com malha refinada uma duas e tres vezes,
respectivamente

Com dt=15 foi possível obter os melhores resultados para o número de Nusselt,
nos gráficos abaixo nota-se que quanto mais refinada a malha. Por meio da analise
da Figura 16 é possível dizer que os números de Nusselt encontrados estão próximos
aos valores esperados, valores esses representados pela linha gráfica gerada pela
equação empírica para fluxo cruzado em uma placa vertical e pela simulação
numérica. Assim como aparece no terceiro gráfico da figura 20.

Figura 20: Gráfico de Re x Nu com malha refinada uma duas e tres vezes,
respectivamente

4.3 Variação do número de Reynolds

Como o número de Nusselt varia de acordo com o número de Reynolds. Para


que os valores de simulação fossem definidos, a malha foi refinada duas vezes para
passo de tempo igual a 10 e com número de interações igual a 2000, porém, todos

20
chegam a regime permanente antes das 2000 interações. Uma relação dos Nusselt
obtidos estão apresentados na Tabela 2 a seguir.

Tabela 2: Valores de Nusselt para cada Reynolds testado.

Reynolds Nusselt Nusselt Global

20 1,46 1,71
30 1,68 1,91
40 1,86 2,09
80 2,40 2,59
100 2,60 2,78

A Figura 21 mostra que para números de Reynolds baixos os valores de Nusselt


são próximos ao experimental, a diferença ocorre quando se aumenta o numero de
Reynolds. Pois ocorre o aumento da turbulência que leva a amplificação da
transferência de calor por convecção. Por isso foram feitos os testes para números
de Reynolds maiores, iguais e menores que 40. A figura abaixo mostra a comparação
entre os gráficos gerados com Re=20 e Re=100.

Figura 21: Gráfico Re x Nu com Re=20 e Re=100, respectivamente.

Como o número de Nusselt é igual ao gradiente médio de temperatura


adimensional na parede [9], os contornos de temperatura para o ar que flui através da
placa estão apresentados na Figura 22 para um Reynolds igual a 20 e 100. Como era
de se esperar o limite térmico na camada inferior de Re é mais espesso que para Re

21
mais alto, isto ocorre devido à separação de fluxo nas superfícies dos tubos, o que
gera o aumento da transferência de calor com o aumento do número de Reynolds [9].

Figura 22: Campo de temperatura para Re = 20 e Re=100, respectivamente.

A comparação do campo de velocidade para U para a geometria em estudo


esta apresentada na Figura 23 e o de pressão na Figura 24.

Figura 23: Campo de velocidade para Re= 20 e Re=100 .

Segundo Townsend, 1976, as amplitudes são influenciadas pelas flutuações de


velocidade que ocorrem a uma certa distância visível de comparação com o
comprimento de onda da componente em análise, desde que seja levada em conta as
componentes de Fourier das flutuações de pressão sobre as paredes de um canal.
Dessa forma, os vórtices no escoamento principal, em uma certa distância da parede,

22
são os principais contribuintes dos números de onda correspondentes a esta distância.

Figura 24: Campo de pressão para Re= 20 e Re=100

Por meio da analise da Figura 24 é possível afirmar que a pressão diminui de


acordo com que o ar escoa pela placa. Assim, a força de arrasto que os tubos
experimentam é equilibrada pela pressão que vai sendo perdida pelo ar de acordo
com que ele passa pela placa, sendo que essa perda é irreversível. Deste modo, a
queda de pressão encontrada entre a entrada e saída do fluido ocorre, pois há uma
compensação entre a taxa de transferência de calor e o cisalhamento na parede,
dessa forma as perdas de pressão são minimizadas e as trocas de calor aumentadas.
Essa perda de pressão trata da medida de resistência que os tubos oferecem ao
escoamento sobre eles.

4.4 Taxa de transferência de calor

O calculo referente à taxa transferência de calor foi realizado e encontrou


valores próximos para esta taxa na entrada e saída (Tabela 5). Esse pequena
diferença ocorreu devido à diferença do fluxo de massa que passa na entrada e saída
do banco de tubos, o sinal negativo associado as taxas obtidas ocorreu pois se trata
de um resfriamento onde a temperatura de entrada é maior que a de saída. O valor do
coeficiente h também esta apresentado a seguir.

Tabela 3: Taxas de transferência de calor e h obtidos para Reynolds igual a 20.

23
𝑸̇ 𝒊 𝑸̇𝒆 h
- 6,6524 W - 6, 6538 W 0,1188 W/°Cm²

5. Conclusão

No atual trabalho foi realizado um estudo numérico para analisar a transferência


de calor e suas características, assim como, determinar o número de Nusselt e
campos de temperatura, pressão e velocidade para um banco de tubos em linha, com
vários Reynolds. Este estudo foi realizado por meio do método de volumes de controle
baseado em elementos finitos fundamentado da metodologia implícita no software
Matlab.
No decorrer do estudo do problema apresentado é necessário utilizar dois tipos
de análise de convergência: (i) análise do coeficiente global de transferência de calor
h; (ii) resultados da malha. A convergência do h esta relacionada ao numero de
interações realizadas para seu calculo, assim, foi constatado por meio de vários testes
com numero de interação de 600-7500 que os valores de h eram mais estáveis para
números maiores de interações.
Por meio, dessa analise de convergência percebeu-se que o refino aplicado a
malha em estudo apresentou acentuada convergência para o número de volumes de
controle utilizados. Deste modo, a malha foi refinada três vezes para que desta forma
o custo computacional fosse menor. De modo que quanto mais refinada a malha
utilizada for mais acentuada será a convergência dos resultados.

6. Referências

[1] Y. A. Çengel and A. J. Ghajar, Transferência de Calor e Massa - Uma abordagem


prática. Mc Graw Hill, 4ª ed., 2012.

[2] ENDRES, Luiz Augusto Magalhães. Análise experimental do campo de pressões


flutuantes em bancos de tubos submetidos a escoamento transversal turbulento. 1997.

[3] MOMBACH, Tobias Andre. DIMENSIONAMENTO DE UM TROCADOR DE CALOR


PARA VAPORIZAÇÃO DE ETANOL OPERANDO COMO COMBUSTÍVEL EM UM MOTOR
DE COMBUSTÃO INTERNA.

[4] ÖZISIK, M. N. Transfor Heat Approach a Basic. Editora McGraw-Hill Book Company,
1985. ODEN J. T., DEMKOWICZ L., RACHOWICZ W., WESTERMANN T. A., Toward
a Universal h-p Adaptive Finite Element Strategy, Part 2. A Posteriori Error Estimation,
Comp.Meths. Appl. Mech. Eng., 77, 113-180, 1989.

24
[5] C. H. Marchi and A. F. C. da Silva, “Procedimento para diminuir e estimar erros de
discretização baseado em soluções numéricas coerentes,” in XV Congresso Brasileiro de
Engenharia Mecânica, 1999.

[6] TAVARES, João Manuel. R. S, Introdução ao método dos Elementos Finitos. Feup,
Portugal, maio 1998.

[7] Z UKAUSKAS, A. A. Heat transfer from tubes in crossflow. In: ADVANCES IN HEAT
TRANSFER. Papers, : v. 8, pp. 93-160, 1972.

[8] OLINTO, Cláudio Rodrigues. Estudo experimental das características do


escoamento turbulento nas primeiras fileiras de bancos de tubos. 2005.

[9] TOWNSEND, A. A. The structure of turbulent shear flow. 2nd. ed. Cambridge :
University Press, 1976.

[10] KNUDSEN, J. G., KATZ, D. L. Fluid dynamics and heat transfer. Michigan :
University Press, 243 pp., (UMERI, bul. 37), 1958.

7. Apêndices

7.1. Apêndice

APÊNDICE A - CÓDIGO PARA O PRÉ PROCESSAMENTO


clc,clear all,clear global,format short, close all

[pde_fig,ax]=pdeinit;
pdetool('appl_cb',1);
set(ax,'DataAspectRatio',[1 0.77929197994987476 1]);
set(ax,'PlotBoxAspectRatio',[35 7.69929648241206 1]);
set(ax,'XLimMode','auto');
set(ax,'YLimMode','auto');
set(ax,'XTickMode','auto');
set(ax,'YTickMode','auto');

% Descrição da Geometria:
% retângulo
pderect([0 20 -5 5],'RT');
pderect([4 5 -3 3],'R1');

% combinação de geometrias
set(findobj(get(pde_fig,'Children'),'Tag','PDEEval'),'String','RT-
R1')

% Mesh generation:
setappdata(pde_fig,'Hgrad',1.1);
setappdata(pde_fig,'refinemethod','regular');
setappdata(pde_fig,'jiggle',char('on','mean',''));
setappdata(pde_fig,'MesherVersion','preR2013a');
pdetool('initmesh')
pdetool('refine')%refina a malha uma vez
pdetool('refine')%refina a malha mais uma vez
pdetool('refine')%refina a malha mais uma vez
pdetool('refine')%refina a malha mais uma vez

25
% exportar P, E, T para memória matlab
h=findobj(get(pde_fig,'Children'),'flat','Tag','PDEMeshMenu');
hp=findobj(get(h,'Children'),'flat','Tag','PDEInitMesh');
he=findobj(get(h,'Children'),'flat','Tag','PDERefine');
ht=findobj(get(h,'Children'),'flat','Tag','PDEMeshParam');
P=get(hp,'UserData');
T=get(ht,'UserData'); T(4,:)=[];

E = contornomalhaE(T);
P=P'; E=E'; T=T';

X=P(:,1); Y=P(:,2);
Xb1=X(E(:,1)); Xb2=X(E(:,2)); Xbo=(Xb1+Xb2)/2;
Yb1=Y(E(:,1)); Yb2=Y(E(:,2)); Ybo=(Yb1+Yb2)/2;

E(:,5)=5;

E(Xbo>(max(Xbo)-0.01),5) =1;
E(Xbo<(min(Xbo)+0.01),5) =3;
E(Ybo>(max(Ybo)-0.01),5) =4;
E(Ybo<(min(Ybo)+0.01),5) =2;

figure(1); pdemesh(P',E',T'),axis equal,


for i=1:length(E)
text(X(E(i,1)),Y(E(i,1)),{E(i,5)}),title('rotulo contorno')
end
save trocador_pdetool P E T

APÊNDICE B - CÓDIGO PARA O CONTORNO DA MALHA


function [E] = contornomalhaE(T)
if size(T,1)<size(T,2),T=T';end
sgmnts=[T(:,[1,2]);T(:,[2,3]);T(:,[3,1])];
Nsgmnts=[1:length(T) 1:length(T) 1:length(T) 1:length(T)];
sgmntsSORT=sort(sgmnts,2);
[foo,ix,jx]=unique(sgmntsSORT,'rows');
vec=histc(jx,1:max(jx));
qx=(vec==1);
E=sgmnts(ix(qx),:);
E(:,3:5)=0;
E=E';
End

APÊNDICE C - CÓDIGO PARA O PARÂMETRO DA MALHA


function [PP]=PARAMETRO_MALHAX41(P,E,T,PP)
% Rotina escrita pelo professor Fábio Alfaia da Cunha, contato:
fabioalfaia@unb.br
% Para uso na disciplina Transferência de Calor, da Universidade de
Brasília.

%%%%%%%%%definindo variáveis principais%%%%%%%%%%%%%%%%%%%%%%%%%


if size(P,1)<size(P,2),P=P';end
if size(T,1)<size(T,2),T=T';end
if size(E,1)<size(E,2),E=E';end

26
% if size(P,1)<size(P,2),P=P';for g=1:1,disp('ver dimensão de
P');end;return;end
% if size(T,1)<size(T,2),T=T';for g=1:1,disp('ver dimensão de
T');end;return;end
% if size(E,1)<size(E,2),E=E';for g=1:1,disp('ver dimensão de
E');end;return;end

PP.n=0;%n=0 2D plano, n=1 2D axissimétrico


PP.P=P; PP.E=E; PP.T=T;
PP.T1=T(:,1); PP.T2=T(:,2); PP.T3=T(:,3)
;
PP.iet=1:length(T);
PP.no_c1=E(:,1);
PP.no_c2=E(:,2);
PP.nnc=length(E(:,1));
PP.nel=length(T);
PP.nno=length(P);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%
%%%%%%%Cálculo I J coordenadas dos elementos não nulos da
mtriz%%%%%%%%%%%%
MR=zeros(PP.nel*9,1);
C=[PP.T1;PP.T1;PP.T1;PP.T2;PP.T2;PP.T2;PP.T3;PP.T3;PP.T3];
L=[PP.T1;PP.T2;PP.T3;PP.T1;PP.T2;PP.T3;PP.T1;PP.T2;PP.T3];
for i=1:(PP.nel*9)
MR(i)=L(i)+(C(i)-1)*PP.nno;
end
[BMR,IMR,JMR]=unique(MR);%%I são as posições de MR se repetição, J
repete MR, B = unique de MR
PP.jvetor=L(IMR)'; PP.ivetor=C(IMR)'; %PP.ijvetor=MR(IMR)';
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%
indxjvetor=1:length(PP.jvetor);
for no=1:PP.nno
indexs=find(PP.ivetor==no);
int=PP.jvetor(indexs);
ii=indxjvetor(indexs(int==no));
indxjvetor(indexs(int==no))=indxjvetor(indexs(1));
indxjvetor(indexs(1))=ii;
int=indxjvetor(indexs(2:end));
[aa,bb]=sort(PP.jvetor(indxjvetor(indexs(2:end))));
indxjvetor(indexs(2:end))=int(bb);
end
PP.jvetor=PP.jvetor(indxjvetor);
PP.ijvetor=PP.ivetor+(PP.jvetor-1).*PP.nno;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%
F_MR=histc(JMR,1:max(JMR));
[JMRsrt,isrtJMR]=sort(JMR);
PP.Mind=zeros(length(PP.ivetor),max(F_MR));
Isum=0;
for no=1:length(PP.ivetor)
ind1=(1:F_MR(no));

27
ind2=(1:F_MR(no))+Isum;
PP.Mind(no,ind1)=isrtJMR(ind2);
Isum=ind2(end);
end
PP.Mindb=PP.Mind;
for no=1:length(PP.ivetor)
PP.Mind(no,:)=PP.Mindb(indxjvetor(no),:);
end
PP.Mind(PP.Mind==0)=PP.nel*9+1;
PP.NMMind=(size(PP.Mind,1)*size(PP.Mind,2));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%
[BIVT,IIVT,JIVT]=unique(PP.ivetor);
F_IVT=histc(JIVT,1:max(JIVT));

T123=[PP.T1' PP.T2' PP.T3']';


PP.li_nz=histc(T123,1:max(T123));
PP.nnov=PP.li_nz; PP.nnov(E(:,1))=PP.nnov(E(:,1))+1;

[BT123,IT123,JT123]=unique(T123);
F_T123=histc(JT123,1:max(JT123));
[T123srt,isrtT123]=sort(JT123);

PP.nvz=ones(PP.nno,max(F_T123))+PP.nel*3;
Isum=0;
for no=1:PP.nno
ind1=(1:F_T123(no));
ind2=(1:F_T123(no))+Isum;
PP.nvz(no,ind1)=isrtT123(ind2);
Isum=ind2(end);
end
PP.nvz(PP.nvz==0)=PP.nel*3+1;
PP.N_nvz=size(PP.nvz,2)*size(PP.nvz,1);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
PP.Mnos=ones(PP.nno,max(F_IVT))+PP.nno;
Isum=0;
for no=1:PP.nno
ind1=(1:F_IVT(no));
ind2=(1:F_IVT(no))+Isum;
PP.Mnos(no,ind1)=PP.jvetor(ind2);
Isum=ind2(end);
end
PP.Mnos(PP.Mnos==0)=PP.nno+1;
PP.Mviz=PP.Mnos(:,2:end);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
PP.MDD=zeros(PP.nno,size(PP.Mnos,2));
Isum=0;
for no=1:PP.nno
ind1=(1:F_IVT(no));
ind2=(1:F_IVT(no))+Isum;
PP.MDD(no,ind1)=ind2;
Isum=ind2(end);
end
PP.iivetor=PP.MDD(:,1);
PP.MDD(PP.MDD==0)=length(PP.ijvetor)+1;
PP.MDD(:,1)=[];

28
%%INI - Elementos que possuem pelo menos um nó no
contorno%%%%%%%%%%%%%%%
[a,b]=find(T==E(1,1)); PP.elecont=a;
for i=E(2:end,1)',
[a,b]=find(T==i);
PP.elecont=union(PP.elecont,a);
end
%%%% FIM - Elementos que possuem pelo menos um nó no contorno
%%%%%%%%

PP.X=P(:,1); X1=PP.X(PP.T1); X2=PP.X(PP.T2); X3=PP.X(PP.T3);


PP.Y=P(:,2); Y1=PP.Y(PP.T1); Y2=PP.Y(PP.T2); Y3=PP.Y(PP.T3);
Xa=(X1+X2)/2; Ya=(Y1+Y2)/2;
Xb=(X2+X3)/2; Yb=(Y2+Y3)/2;
Xc=(X3+X1)/2; Yc=(Y3+Y1)/2;
Xo=(Xa+Xb+Xc)/3; Yo=(Ya+Yb+Yc)/3;
Xr=(Xo+Xa)/2; Yr=(Yo+Ya)/2;
Xs=(Xo+Xb)/2; Ys=(Yo+Yb)/2;
Xt=(Xo+Xc)/2; Yt=(Yo+Yc)/2;
PP.XG=[X1 X2 X3 Xa Xb Xc Xr Xs Xt Xo];
PP.YG=[Y1 Y2 Y3 Ya Yb Yc Yr Ys Yt Yo];

PP.XGao=Xa-Xo; PP.YGao=Ya-Yo;
PP.XGbo=Xb-Xo; PP.YGbo=Yb-Yo;
PP.XGco=Xc-Xo; PP.YGco=Yc-Yo;

%%%%%%%%%%%%Para o gradiente de pressão%%%%%%%%%%%%%%%%%%%%%%

PP.Dp=X1.*Y2+X2.*Y3+X3.*Y1-Y1.*X2-Y2.*X3-Y3.*X1;
PP.CAp=zeros(PP.nel,3); PP.CBp=zeros(PP.nel,3);
PP.CAp(:,1)=(Y2-Y3)./PP.Dp; PP.CAp(:,2)=(Y3-Y1)./PP.Dp;
PP.CAp(:,3)=(Y1-Y2)./PP.Dp;
PP.CBp(:,1)=(X3-X2)./PP.Dp; PP.CBp(:,2)=(X1-X3)./PP.Dp;
PP.CBp(:,3)=(X2-X1)./PP.Dp;
%%%%FIM%%%%%%%%%%%%

%%%%%%%%%%% Subvolumes de controle %%%%%%%%%%%%%%%%%%%%%%%%

svc1=(PP.Dp/6); svc2=(PP.Dp/6); svc3=(PP.Dp/6);


Ac1=(PP.Dp/6); Ac2=(PP.Dp/6); Ac3=(PP.Dp/6);

%%%%FIM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%Volumes de controle%%%%%%%%%%%%%%%%%%%%%%%%%%

PP.NMnvz=(size(PP.nvz,1)*size(PP.nvz,2));
PP.svc=zeros(PP.nel,3); PP.Ac=zeros(PP.nel,3);
PP.vol=zeros(1,PP.nno); Msvcs=zeros(size(PP.nvz));
PP.svc=[svc1 svc2 svc3]; PP.Ac=[Ac1 Ac2 Ac3];
svcT=[PP.svc(:,1);PP.svc(:,2);PP.svc(:,3)];
svcT(length(T)*3+1)=0;
for i=1:PP.NMnvz
Msvcs(i)=svcT(PP.nvz(i));
end
PP.vol=sum(Msvcs,2);

29
%%%%FIM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%fluxo de massa de contorno%%%%%%%%%%%%%%%%%%

PP.Xb1=PP.X(PP.no_c1); PP.Xb2=PP.X(PP.no_c2);
PP.Yb1=PP.Y(PP.no_c1); PP.Yb2=PP.Y(PP.no_c2);
PP.Xb21=PP.Xb2-PP.Xb1; PP.Yb21=PP.Yb2-PP.Yb1;
PP.dS12=(PP.Xb21.^2+PP.Yb21.^2).^0.5;
PP.ya1=(PP.Yb1+PP.Yb2)/2-PP.Yb1; PP.xa1=(PP.Xb1+PP.Xb2)/2-
PP.Xb1;
PP.y2a=PP.Yb2-(PP.Yb1+PP.Yb2)/2; PP.x2a=PP.Xb2-
(PP.Xb1+PP.Xb2)/2;

%%%%%%%%%%%%%%%%FIM - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%FIM - Elemento para No%%%%%%%%%%%%%%%%%%%%

%%%%%%%%Matriz de indices para os nós de contorno%%%%%%%%%%%%%%

Lc=[PP.no_c1;PP.no_c1;PP.no_c2;PP.no_c2];
Cc=[PP.no_c1;PP.no_c2;PP.no_c1;PP.no_c2];
MRc=Lc+(Cc-1)*PP.nno;
PP.Mindc=zeros(length(PP.ivetor),size(PP.nvz,2));
ggc=zeros(length(PP.ivetor),1);
for no=1:length(PP.ivetor)
ii=find(MRc==PP.ijvetor(no));
PP.Mindc(no,1:length(ii))=ii;
ggc(no)=length(ii);
end
PP.Mindc(PP.Mindc==0)=PP.nel*9+1;
PP.Mindc(:,(max(ggc)+1):end)=[];

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

APÊNDICE D - CÓDIGO PARA O PROCESSAMENTO


clc,clear all,clear global,format short, close all
load trocador_pdetool P E T
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
disp('numero de nós='),size(P)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Pré-cálculos para aceleração da simulação

[PP]=PARAMETRO_MALHAX41(P,E,T);

%tempo e passo iniciais para a simulação

VS.tempo(1)=0; %tempo inicial


VS.dt=10; %passo de tempo testado: 5, 10 e 15

%Propriedades do ar, tabela A-15 do Çengel, para temperatura 140ºC

PF.mi.mix=ones(length(P),1)*2.096e-5; %viscosidade
PF.ro.mix=ones(length(P),1)*0.9994; %massa específica
PF.k.mix=ones(length(P),1)*0.02953; %condutividade térmica

30
PF.cp.mix=ones(length(P),1)*1008; %calor específico a pressão
constante

%%Cálculo do número de Prandlt:


alfa=mean(PF.k.mix./(PF.ro.mix.*PF.cp.mix));%difusividade térmica
ni=mean(PF.mi.mix./PF.ro.mix);%difusividade de quantidade de
movimento
Pr=ni/alfa
%%massa específica para os dois níveis de tempo:
VS.roF=[PF.ro.mix PF.ro.mix]; %vetor de massa específica
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%Seleção dos nós dos contornos para aplicação das CCs%%%%%

%%%%%Todos os nós da fronteira externa do domínio:


PP.nc_vel_y=E(:,1);
%%%%%Somente os nós da saída do domínio, localizados em X máximo:
PP.nc_press=union(E(E(:,5)==1,1),E(E(:,5)==1,2));
%nós na fronteira externa, excluindo os nós da saída do domínio:
PP.nc_vel_x=setdiff(E(:,1),PP.nc_press);
PP.N_bc_temp=PP.nc_vel_x;
%nós na superfície da placa:
PP.N_cilindro=E(E(:,5)==5,1);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%Fim - Seleção dos nós dos contornos para aplicação das CCs%%%%

%%CONDIÇÕES INICIAIS E DE CONTORNO PARA EQUAÇÃO DA ENERGIA%%


%%Condição inicial
Tempe=ones(PP.nno,2)*140;
%%Condição de contorno para a fronteira externa:
Tempe(PP.N_bc_temp)=140;
%%Condição de contorno na superfície da placa.
Tempe(PP.N_cilindro)=20;
%%%%Ajuste final do vetor temperaturas com dois níveis
VS.Temp=[Tempe Tempe];

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%CONDIÇÕES INICIAIS E DE CONTORNO PARA EQUAÇÕES DE NAVIER-STOKES%


%Para Re=ro*Vel*D/mi a velocidade é calculada como:
Vel=(Re*mi)/(ro*D)
Re=30;
D=1;%ajustado na criação da geometria.

%%%%CONDIÇÕES INICIAIS E DE CONTORNO PARA U, componente x.


Ue=(Re*PF.mi.mix)./(PF.ro.mix.*D);
%%%%zerando velocidade no contorno do cilindro
Ue(PP.N_cilindro)=0;
%%%%Ajuste final do vetor velocidades para os dois níveis de tempo
VS.UT=[Ue Ue];

%%CONDIÇÕES INICIAIS E DE CONTORNO PARA V, componente y.


VS.VT=zeros(PP.nno,2);
%%CAMPO INICIAL DE PRESSÕES E SEUS GRADIENTES
VS.Prs=ones(PP.nno,1)*101325; %vetor de pressão

31
VS.gradPx=zeros(PP.nno,1); %componente grtadiente de pressão x
VS.gradPy=zeros(PP.nno,1); %componente grtadiente de pressão y
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

i_ext0=2; %simulação inicia pelo nível 2, pois o nível 1 é o


inicial
i_extF=2000; %número de passos de tempo para simulação na parte 1
(200); parte 2 (2000)

%%%%%%%%%%%%%%%%%%%PROCESSAMENTO DO CÁLCULO%%%%%%%%%%%%%%%%%%%%%%%%

VS.MTemp=zeros(size(VS.Temp(:,1))); Tempototal=0;

[Aglobal,Aglobalx,Aglobaly] = area_contorno(P,E,5);%O contorno "1" é


o de interesse.
Acilindro=Aglobal(PP.N_cilindro);
ERRO=1e-7;
Nu=1; %Na parte 1 do trabalho o Nu é igual a 1000

tic
for i_ext=i_ext0:i_extF
NuA=Nu(i_ext-1);
[VS]=ATUALIZA_VARIAVEIS(VS);
[VS]=Acoplamento_Pressao_velocidade(VS,PP,PF);
[VS.Temp]=solver_escalar_partes_E(PF.k.mix./PF.cp.mix,VS.UT(:,1)
,VS.VT(:,1),PP,VS.roF,VS.dt,zeros(PP.nno,1),zeros(PP.nno,1),VS.Temp,
PP.N_bc_temp);

[dT_dxi,dT_dyi] = gradiente(VS.Temp(:,1),P,T);
dT_dn=(dT_dxi.*Aglobalx+dT_dyi.*Aglobaly)./Aglobal;
H_L=-PF.k.mix(PP.N_cilindro).*dT_dn(PP.N_cilindro)./(20-140);
H_G=((1./sum(Acilindro)).*sum(H_L.*Acilindro));
Nu(i_ext)=H_G/0.02953;
figure(2);plot(1:i_ext,Nu(1:i_ext),'-k');drawnow;
set(gca,'FontSize',16)
xlabel('$t(s)$','Interpreter','LaTex','FontSize',18)
ylabel('$Nu$','Interpreter','LaTex','FontSize',18)

fprintf('i: %1.0f tempo: %1.6f dt: %1.2f


Número_de_iterações_para_convergência_das_Eqs_N-S: %1.0f Nu
%1.4f\n',i_ext, VS.tempo(end), VS.dt, VS.g,Nu(end));i_ext0=i_ext;
if i_ext>100; VS.MTemp=VS.Temp(:,1).*VS.dt+VS.MTemp;
Tempototal=Tempototal+VS.dt;end
ERRO_Nu=norm(Nu(i_ext)-NuA);
if ERRO_Nu<ERRO,disp('Regime permanente!'),break,end
if ((NuA-Nu(end)<1e-4))&(i_ext>10);('Regime
permanente!'),break,end
%if VS.tempo(end)>=120000,break,end

end
tempo_total__CPU=toc

%%%%%%%%%%%%%%%%%FIM-PROCESSAMENTO DO CÁLCULO%%%%%%%%%%%%%%%%%%%%%%

VS.MTemp=VS.MTemp/Tempototal;

32
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%Os dados simulados são salvos no arquivo "RESULTADOS_SIMULACAO"%%%

save RESULTADOS_SIMULACAO VS PP PF P E T Nu i_ext

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

APÊNDICE D - CÓDIGO PARA A ÁREA DE CONTORNO


function [Aglobal,Aglobalx,Aglobaly] = area_contorno(P,E,n_contorno)
% Rotina escrita pelo professor Fábio Alfaia da Cunha, contato:
fabioalfaia@unb.br
% Para uso na disciplina Transferência de Calor, da Universidade de
Brasília.
if size(P,1)>size(P,2),P=P';end
if size(E,1)>size(E,2),E=E';end

%coordenadas X e Y de cada nó.


X=P(1,:); Y=P(2,:);

%índices dos nós dos segmentos 1 e2


no_c1=E(1,:); no_c2=E(2,:);

Xbc1=X(no_c1); Ybc1=Y(no_c1); %Coordenadas do nó 1 segmento de


contorno
Xbc2=X(no_c2); Ybc2=Y(no_c2); %Coordenadas do nó 2 segmento de
contorno

nx_bc=+(Ybc2-Ybc1); %component X do vetor normal ao segmento de


contorno
ny_bc=-(Xbc2-Xbc1); %component y do vetor normal ao segmento de
contorno

%vetor de áreas local = Comprimento do segmento de contorno x


Area_x=zeros(size(nx_bc));
Area_x(E(5,:)==n_contorno)=nx_bc(E(5,:)==n_contorno);
% início - montagem do vetor de áreas global
Aglobalx=zeros(length(P),1); %Criação do vetor de Area global
for i=1:length(E)
Aglobalx(E(1,i))=Area_x(i)/2+Aglobalx(E(1,i));
Aglobalx(E(2,i))=Area_x(i)/2+Aglobalx(E(2,i));
end

%vetor de áreas local = Comprimento do segmento de contorno y


Area_y=zeros(size(ny_bc));
Area_y(E(5,:)==n_contorno)=ny_bc(E(5,:)==n_contorno);
% início - montagem do vetor de áreas global
Aglobaly=zeros(length(P),1); %Criação do vetor de Area global
for i=1:length(E)
Aglobaly(E(1,i))=Area_y(i)/2+Aglobaly(E(1,i));
Aglobaly(E(2,i))=Area_y(i)/2+Aglobaly(E(2,i));
end
Aglobalx=-Aglobalx;
Aglobaly=-Aglobaly;

33
Aglobal=(Aglobalx.^2+Aglobaly.^2).^0.5;

APÊNDICE E - CÓDIGO PARA ATUALIZAÇÃO DAS VARIÁVEIS


function [VS]=ATUALIZA_VARIAVEIS(VS)
% Rotina escrita pelo professor Fábio Alfaia da Cunha, contato:
fabioalfaia@unb.br
% Para uso na disciplina Transferência de Calor, da Universidade de
Brasília.
VS.UT(:,2)=VS.UT(:,1);
VS.VT(:,2)=VS.VT(:,1);
VS.roF(:,2)=VS.roF(:,1);
VS.Temp(:,2)=VS.Temp(:,1);
VS.tempo(end+1)=VS.tempo(end)+VS.dt;

APÊNDICE F - CÓDIGO PARA ACOPLAMENTO DA PRESSÃO E VELOCIDADE


function [VS]=Acoplamento_Pressao_velocidade(VS,PP,PF)

% Rotina escrita pelo professor Fábio Alfaia da Cunha, contato:


fabioalfaia@unb.br
% Para uso na disciplina Transferência de Calor, da Universidade de
Brasília.

[PP]=MONTA_A(VS.roF(:,1),PF.mi.mix,VS.UT(:,1),VS.VT(:,1),PP);

UN=VS.UT(:,1); VN=VS.VT(:,1);
T1=PP.T1; T2=PP.T2; T3=PP.T3;
Dpp=PP.Dp; Aij=PP.Aij;
MDD=PP.MDD; Mviz=PP.Mviz;
CBp1=PP.CBp(:,1); CBp2=PP.CBp(:,2); CBp3=PP.CBp(:,3);
CAp1=PP.CAp(:,1); CAp2=PP.CAp(:,2); CAp3=PP.CAp(:,3);
y=PP.y; x=PP.x;

ror=PF.ro.mix(T1,1).*0.4167+PF.ro.mix(T2,1).*0.4167+PF.ro.mix(T3,1).
*0.1666;
ros=PF.ro.mix(T1,1).*0.1666+PF.ro.mix(T2,1).*0.4167+PF.ro.mix(T3,1).
*0.4167;
rot=PF.ro.mix(T1,1).*0.4167+PF.ro.mix(T2,1).*0.1666+PF.ro.mix(T3,1).
*0.4167;
%roo2=(ro(T1,2)+ro(T2,2)+ro(T3,2))/3;

% - INI - %%%%alocação
memoria%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
anbUnb=zeros(size(MDD)); anbVnb=zeros(size(MDD));

% - FIM - %%%%alocação de
memoria%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
noscx=setdiff(1:PP.nno,PP.nc_vel_x); noscy=setdiff(1:PP.n
no,PP.nc_vel_y);
nosx2=setdiff(PP.nc_vel_x,find(PP.li_nz==1)); nosy2=setdiff(PP.nc_
vel_y,find(PP.li_nz==1));

%exclusão do elemento
isolado%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

34
% INI - Definição dos termos de
fonte%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

SPu_vol=zeros(PP.nno,1); SCu_vol=zeros(PP.nno,1);
SPv_vol=zeros(PP.nno,1); SCv_vol=zeros(PP.nno,1);

% FIM - Definição dos termos de


fonte%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% INI - Preparracao de coeficientes algébricos


%%%%%%%%%%%%%%%%%%%%%%%%%

M1=PP.vol.*VS.roF(:,1);
M2=PP.vol.*VS.roF(:,2);

aui=Aij(PP.iivetor)+(1/VS.dt)*M1-SPu_vol;
avi=Aij(PP.iivetor)+(1/VS.dt)*M1-SPv_vol;

bui=(1/VS.dt)*M2.*VS.UT(:,2)+SCu_vol;
bvi=(1/VS.dt)*M2.*VS.VT(:,2)+SCv_vol;

dui=PP.vol./aui; dvi=PP.vol./avi;
dui(nosx2)=0; dvi(nosy2)=0;

% FIM - Preparracao de coeficientes algébricos


%%%%%%%%%%%%%%%%%%%%%%%%%

% INI – Matrizes locais


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

du1=dui(T1);du2=dui(T2);du3=dui(T3);
dv1=dvi(T1);dv2=dvi(T2);dv3=dvi(T3);

fa1=ror.*(-(du1.*0.4167+du2.*0.4167+du3.*0.1666).*(y(:,2)-
y(:,3))./Dpp);
fa2=ror.*(-(du1.*0.4167+du2.*0.4167+du3.*0.1666).*(y(:,3)-
y(:,1))./Dpp);
fa3=ror.*(-(du1.*0.4167+du2.*0.4167+du3.*0.1666).*(y(:,1)-
y(:,2))./Dpp);

ga1=ror.*(-(dv1.*0.4167+dv2.*0.4167+dv3.*0.1666).*(x(:,3)-
x(:,2))./Dpp);
ga2=ror.*(-(dv1.*0.4167+dv2.*0.4167+dv3.*0.1666).*(x(:,1)-
x(:,3))./Dpp);
ga3=ror.*(-(dv1.*0.4167+dv2.*0.4167+dv3.*0.1666).*(x(:,2)-
x(:,1))./Dpp);

fb1=ros.*(-(du1.*0.1666+du2.*0.4167+du3.*0.4167).*(y(:,2)-
y(:,3))./Dpp);
fb2=ros.*(-(du1.*0.1666+du2.*0.4167+du3.*0.4167).*(y(:,3)-
y(:,1))./Dpp);
fb3=ros.*(-(du1.*0.1666+du2.*0.4167+du3.*0.4167).*(y(:,1)-
y(:,2))./Dpp);

35
gb1=ros.*(-(dv1.*0.1666+dv2.*0.4167+dv3.*0.4167).*(x(:,3)-
x(:,2))./Dpp);
gb2=ros.*(-(dv1.*0.1666+dv2.*0.4167+dv3.*0.4167).*(x(:,1)-
x(:,3))./Dpp);
gb3=ros.*(-(dv1.*0.1666+dv2.*0.4167+dv3.*0.4167).*(x(:,2)-
x(:,1))./Dpp);

fc1=rot.*(-(du1.*0.4167+du2.*0.1666+du3.*0.4167).*(y(:,2)-
y(:,3))./Dpp);
fc2=rot.*(-(du1.*0.4167+du2.*0.1666+du3.*0.4167).*(y(:,3)-
y(:,1))./Dpp);
fc3=rot.*(-(du1.*0.4167+du2.*0.1666+du3.*0.4167).*(y(:,1)-
y(:,2))./Dpp);

gc1=rot.*(-(dv1.*0.4167+dv2.*0.1666+dv3.*0.4167).*(x(:,3)-
x(:,2))./Dpp);
gc2=rot.*(-(dv1.*0.4167+dv2.*0.1666+dv3.*0.4167).*(x(:,1)-
x(:,3))./Dpp);
gc3=rot.*(-(dv1.*0.4167+dv2.*0.1666+dv3.*0.4167).*(x(:,2)-
x(:,1))./Dpp);

Aa1=fa1.*(y(:,4)-y(:,10))-ga1.*(x(:,4)-x(:,10));
Ab1=fb1.*(y(:,5)-y(:,10))-gb1.*(x(:,5)-x(:,10));
Ac1=fc1.*(y(:,6)-y(:,10))-gc1.*(x(:,6)-x(:,10));

Aa2=fa2.*(y(:,4)-y(:,10))-ga2.*(x(:,4)-x(:,10));
Ab2=fb2.*(y(:,5)-y(:,10))-gb2.*(x(:,5)-x(:,10));
Ac2=fc2.*(y(:,6)-y(:,10))-gc2.*(x(:,6)-x(:,10));

Aa3=fa3.*(y(:,4)-y(:,10))-ga3.*(x(:,4)-x(:,10));
Ab3=fb3.*(y(:,5)-y(:,10))-gb3.*(x(:,5)-x(:,10));
Ac3=fc3.*(y(:,6)-y(:,10))-gc3.*(x(:,6)-x(:,10));

Cca1=Ac1-Aa1; Cab1=Aa1-Ab1; Cbc1=Ab1-


Ac1;
Cca2=Ac2-Aa2; Cab2=Aa2-Ab2; Cbc2=Ab2-
Ac2;
Cca3=Ac3-Aa3; Cab3=Aa3-Ab3; Cbc3=Ab3-
Ac3;
% FIM - Matrizes locais

% INI - Montagem Matriz Globais

Labc=[Cca1;Cca2;Cca3;Cab1;Cab2;Cab3;Cbc1;Cbc2;Cbc3];
Labc(PP.nel*9+1)=0;
MLabc=Labc(PP.Mind);
DDP=sum(MLabc,2)';

N_bcij=ismember(PP.ivetor,PP.nc_press);
N_bcii=ismember(1:PP.nno,PP.nc_press');
DDP(N_bcij==1)=0; %zera as equações do contorno
DDP(PP.iivetor(N_bcii==1))=1;%coloca "1" nos termos da diagonal da
matriz
DD=sparse(PP.ivetor,PP.jvetor,DDP,PP.nno,PP.nno);
% FIM - Montagem Matriz Global: DD

36
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% INI - Decomposição LU da Matriz Global

[LPx,UPx,Pxx,Qxx] = lu(DD);

% FIM - Decomposição LU da Matriz Global


%Redefinição das massas M1 e M2 para uso na equação da conservação
da massa.
% LOOP interno

%%%%%%% FIM %%%%%%%%%

dM_dt=(VS.roF(:,2)-VS.roF(:,1))/VS.dt;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%LOOP INTERNO%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

PP_erro=1e-5;
for g=1:500
VS.g=g;
%%%%%%%INI - AVANÇO CAMPO DO VELOCIDADES %%%%%%%%%
UA=UN; VA=VN;
%%%%%%%%% INI - AVANÇO CAMPO DO VELOCIDADES %%%%%%%%%%%%
Aij(length(Aij)+1)=0;
Ui=zeros(PP.nno+1,1); Vi=zeros(PP.nno+1,1);
Ui(1:PP.nno)=UA; Vi(1:PP.nno)=VA;
for i=1:(size(MDD,1)*size(MDD,2))
anbUnb(i)=Aij(MDD(i))*Ui(Mviz(i));
anbVnb(i)=Aij(MDD(i))*Vi(Mviz(i));
end
UN=(sum(-anbUnb,2)+bui-VS.gradPx.*PP.vol)./aui;
VN=(sum(-anbVnb,2)+bvi-VS.gradPy.*PP.vol)./avi;
UN(PP.nc_vel_x)=UA(PP.nc_vel_x);
VN(PP.nc_vel_y)=VA(PP.nc_vel_y);
Ui(1:PP.nno)=UN;
Vi(1:PP.nno)=VN;

%%%%%%%%% FIM - AVANÇO CAMPO DO VELOCIDADES %%%%%%%%%%%

%%%%%%%%% INI - CALCULO PSEUDO VELOCIDADES %%%%%%%%%%%

Aij(length(Aij)+1)=0;
for i=1:(size(MDD,1)*size(MDD,2))
anbUnb(i)=Aij(MDD(i))*Ui(Mviz(i));
anbVnb(i)=Aij(MDD(i))*Vi(Mviz(i));
end
uc=(sum(-anbUnb,2)+bui)./aui;
vc=(sum(-anbVnb,2)+bvi)./avi;
uc(PP.nc_vel_x)=UA(PP.nc_vel_x);
vc(PP.nc_vel_y)=VA(PP.nc_vel_y);

%%%%%%%%% INI - CALCULO PSEUDO VELOCIDADES %%%%%%%%%%%%

%%%%%%%%% INI - CALCULO PSEUDO VELOCIDADES LOCAIS %%%%%%%%%%%%

37
uc1=uc(T1);uc2=uc(T2);uc3=uc(T3);vc1=vc(T1);vc2=vc(T2);vc3=vc(T3
);
U1=1./PP.Uav.*(+uc1.*PP.uo+vc1.*PP.vo);
U2=1./PP.Uav.*(+uc2.*PP.uo+vc2.*PP.vo);
U3=1./PP.Uav.*(+uc3.*PP.uo+vc3.*PP.vo);
V1=1./PP.Uav.*(-uc1.*PP.vo+vc1.*PP.uo);
V2=1./PP.Uav.*(-uc2.*PP.vo+vc2.*PP.uo);
V3=1./PP.Uav.*(-uc3.*PP.vo+vc3.*PP.uo);

%%%%%%%%% INI - CALCULO PSEUDO VELOCIDADES LOCAIS %%%%%%%%%%%%

%%%%%%%%% INI - CALCULO DIVERGENTE DO CAMPO DE VELOCIDADES %%%%%%%%%


fa4=ror.*(0.4167.*U1+0.4167.*U2+0.1666.*U3);
fb4=ros.*(0.1666.*U1+0.4167.*U2+0.4167.*U3);
fc4=rot.*(0.4167.*U1+0.1666.*U2+0.4167.*U3);

ga4=ror.*(0.4167.*V1+0.4167.*V2+0.1666.*V3);
gb4=ros.*(0.1666.*V1+0.4167.*V2+0.4167.*V3);
gc4=rot.*(0.4167.*V1+0.1666.*V2+0.4167.*V3);

Aa4=fa4.*(y(:,4)-y(:,10))-ga4.*(x(:,4)-x(:,10));
Ab4=fb4.*(y(:,5)-y(:,10))-gb4.*(x(:,5)-x(:,10));
Ac4=fc4.*(y(:,6)-y(:,10))-gc4.*(x(:,6)-x(:,10));

Cca4=Ac4-Aa4;
Cab4=Aa4-Ab4;
Cbc4=Ab4-Ac4;
%DIVERGENTE:
dvrg=zeros(PP.nno,1);
for i=1:PP.nel;
dvrg(T1(i))=Cca4(i)+dvrg(T1(i));
dvrg(T2(i))=Cab4(i)+dvrg(T2(i));
dvrg(T3(i))=Cbc4(i)+dvrg(T3(i));
end
dvrg(PP.nc_press,1)=0;

%%%%%%%%% FIM - CALCULO DIVERGENTE DE CAMPO DE VELOCIDADES %%%%%%%%%

%INI - MONTAGEM DO VETOR DE CARGA: OBS: PP.massa: fluxo do CC.


B_P=-dvrg-PP.massa+dM_dt;
B_P(PP.nc_press)=VS.Prs(PP.nc_press);

%FIM - MONTAGEM DO VETOR DE CARGA

%INI - CÁLCULO DO CAMPO DE PRESSÃO

VS.Prs=Qxx*(UPx\(LPx\(Pxx*B_P)));

%FIM - CÁLCULO DO CAMPO DE PRESSÃO

%INI - CALCULO DOS GRADIENTES DE


PRESSÃO%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Ap=CAp1.*VS.Prs(T1)+CAp2.*VS.Prs(T2)+CAp3.*VS.Prs(T3);
Bp=CBp1.*VS.Prs(T1)+CBp2.*VS.Prs(T2)+CBp3.*VS.Prs(T3);
VS.gradPx=ele2no(Ap,PP);
VS.gradPy=ele2no(Bp,PP);

38
%FIM - CALCULO DOS GRADIENTES DE PRESSÃO

%%%%%%%%%%%%%%%CALCULO DAS NOVAS VELOCIDADES%%%%%%%%%%%%%%%%%%%


UN(noscx)=uc(noscx)-dui(noscx).*VS.gradPx(noscx);
VN(noscy)=vc(noscy)-dvi(noscy).*VS.gradPy(noscy);
VS.UT(:,1)=UN; VS.VT(:,1)=VN;

%%%%%%%%%%%%%%%CALCULO DAS NOVAS VELOCIDADES%%%%%%%%%%%%%%%%%%


VS.normU=norm(UN-UA); VS.normV=norm(VN-VA);
if (VS.normV<PP_erro)&(VS.normU<PP_erro);break,end; %#ok<AND2>
end

%%%%%%%%%%%%%%%%%%%%FIM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% LOOP interno
%%%FIM%%%%%%%%%

APÊNDICE G - CÓDIGO PARA O SOLVER ESCALAR


function
[FI]=solver_escalar_partes_E(gm,U,V,PP,roF,dt,SP_vol,SC_vol,FI,N_bc)
% Rotina escrita pelo professor Fábio Alfaia da Cunha, contato:
fabioalfaia@unb.br
% Para uso na disciplina Transferência de Calor, da Universidade de
Brasília.
%processamento%

N_bcij=ismember(PP.ivetor,N_bc);
N_bcii=ismember(1:PP.nno,N_bc');
PP.alfaU=ones(PP.nno,1)*0.5;
PP.alfaN=ones(PP.nel,1)*0.5;

%processamento%
M1=roF(:,1).*PP.vol;
M2=roF(:,2).*PP.vol;

%processamento%

[PP]=MONTA_A(roF(:,1),gm,U,V,PP);
Aij=PP.Aij; Aii=Aij(PP.iivetor);

%processamento%

Aij(PP.iivetor)=Aii+(1/dt)*M1-SP_vol;
Aij(N_bcij==1)=0; Aij(PP.iivetor(N_bcii==1))=1;
AMij=sparse(PP.ivetor,PP.jvetor,Aij,PP.nno,PP.nno);

%processamento%

B_M=(1/dt)*M2.*FI(:,2)+SC_vol;
B_M(N_bc)=FI(N_bc,1);

%processamento%
FI(:,1)=AMij\B_M;

%processamento%

39
APÊNDICE H - CÓDIGO PARA MONTAR A MATRIZ A
function [PP]=MONTA_A(rof,gmp,U,V,PP)
% Rotina escrita pelo professor Fábio Alfaia da Cunha, contato:
fabioalfaia@unb.br
% Para uso na disciplina Transferência de Calor, da Universidade de
Brasília.
%alocando memoria e forma das matrizes%
Up=zeros(PP.nel,10); Vp=zeros(PP.nel,10);
x=zeros(PP.nel,10); y=zeros(PP.nel,10);
Ec=zeros(PP.nel,10);
fac1=zeros(PP.nel,10); fac2=zeros(PP.nel,10);
fac3=zeros(PP.nel,10);
gac1=zeros(PP.nel,10); gac2=zeros(PP.nel,10);
gac3=zeros(PP.nel,10);
NF1=zeros(PP.nel,10); NF2=zeros(PP.nel,10);
NF3=zeros(PP.nel,10);
NL1=zeros(PP.nel,10); NL2=zeros(PP.nel,10);
NL3=zeros(PP.nel,10);

%%%%%%%%%%fim alocando memoria%%%%%%%%%%


Dp=PP.Dp;
XG=PP.XG;YG=PP.YG;Mind=PP.Mind;Mindc=PP.Mindc;
T1=PP.T1;T2=PP.T2;T3=PP.T3;

%%%%%%%%%%%%%%%%%%%%%%%INICIO%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ro1=rof(T1); ro2=rof(T2); ro3=rof(T3);
gm1=gmp(T1); gm2=gmp(T2); gm3=gmp(T3);
UT1=U(T1); UT2=U(T2); UT3=U(T3);
VT1=V(T1); VT2=V(T2); VT3=V(T3);

roT=(ro1+ro2+ro3)/3; gmT=(gm1+gm2+gm3)/3;

uo=(UT1+UT2+UT3)/3; vo=(VT1+VT2+VT3)/3;
Uav=(uo.^2+vo.^2).^0.5; i=Uav<1e-10;
uo(i)=1e-10; vo(i)=0; Uav(i)=uo(i);
xo=XG(:,10); yo=YG(:,10);
%%%%%%%%%%%%%%%%%%%%%%%%%FIM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:10
x(:,i)=1./Uav.*(+(XG(:,i)-xo).*uo+(YG(:,i)-yo).*vo);
y(:,i)=1./Uav.*(-(XG(:,i)-xo).*vo+(YG(:,i)-yo).*uo);
end
%%%%% - INI - velocidades locais%%%%%%%%%%%%%
U1=1./Uav.*(+UT1.*uo+VT1.*vo);
U2=1./Uav.*(+UT2.*uo+VT2.*vo);
U3=1./Uav.*(+UT3.*uo+VT3.*vo);

V1=1./Uav.*(-UT1.*vo+VT1.*uo);
V2=1./Uav.*(-UT2.*vo+VT2.*uo);
V3=1./Uav.*(-UT3.*vo+VT3.*uo);
%%%%% - FIM - velocidades locais%%%%%%%%%%%%%

%%%%% - INI - Calculo do Numero de Peclet%%%%%%%


xmax=max(x(:,1:3),[],2); xmin=min(x(:,1:3),[],2);
ymax=max(y(:,1:3),[],2); ymin=min(y(:,1:3),[],2);

40
Aret=(xmax-xmin).*(ymax-ymin);
Upe=Uav.*(Dp/2)./Aret;
Pe=roT.*Upe.*(xmax-xmin)./gmT;
%%%%% - FIM - Calculo do Numero de Peclet%%%%%%%

%%%%-INI- Calculo Matrizes Locais%%%%%%


for i=1:10
Ec(:,i)=gmT./(roT.*Upe).*(exp(-Pe.*(xmax-x(:,i))./(xmax-xmin))-
1);
end

Ec32=Ec(:,3)-Ec(:,2); x32=x(:,3)-x(:,2); y23=y(:,2)-y(:,3);


Ec13=Ec(:,1)-Ec(:,3); x13=x(:,1)-x(:,3); y31=y(:,3)-y(:,1);
Ec21=Ec(:,2)-Ec(:,1); x21=x(:,2)-x(:,1); y12=y(:,1)-y(:,2);

DEXP=Ec(:,1).*y(:,2)+Ec(:,2).*y(:,3)+Ec(:,3).*y(:,1)-
(Ec(:,2).*y(:,1)+Ec(:,3).*y(:,2)+Ec(:,1).*y(:,3));

for i=4:10
NF1(:,i)=(y23.*Ec(:,i)+Ec32.*y(:,i)+(Ec(:,2).*y(:,3)-
Ec(:,3).*y(:,2)))./DEXP;
NF2(:,i)=(y31.*Ec(:,i)+Ec13.*y(:,i)+(Ec(:,3).*y(:,1)-
Ec(:,1).*y(:,3)))./DEXP;
NF3(:,i)=(y12.*Ec(:,i)+Ec21.*y(:,i)+(Ec(:,1).*y(:,2)-
Ec(:,2).*y(:,1)))./DEXP;
NL1(:,i)=(y23.*x(:,i)+x32.*y(:,i)+(x(:,2).*y(:,3)-
x(:,3).*y(:,2)))./Dp;
NL2(:,i)=(y31.*x(:,i)+x13.*y(:,i)+(x(:,3).*y(:,1)-
x(:,1).*y(:,3)))./Dp;
NL3(:,i)=(y12.*x(:,i)+x21.*y(:,i)+(x(:,1).*y(:,2)-
x(:,2).*y(:,1)))./Dp;
end

for i=4:10
Up(:,i)=NL1(:,i).*U1+NL2(:,i).*U2+NL3(:,i).*U3;
Vp(:,i)=NL1(:,i).*V1+NL2(:,i).*V2+NL3(:,i).*V3;
fac1(:,i)=Up(:,i).*NF1(:,i);
fac2(:,i)=Up(:,i).*NF2(:,i);
fac3(:,i)=Up(:,i).*NF3(:,i);
gac1(:,i)=Vp(:,i).*NF1(:,i);
gac2(:,i)=Vp(:,i).*NF2(:,i);
gac3(:,i)=Vp(:,i).*NF3(:,i);
end

ro_a=ro1.*NL1(:,4)+ro2.*NL2(:,4)+ro3.*NL3(:,4);
ro_b=ro1.*NL1(:,5)+ro2.*NL2(:,5)+ro3.*NL3(:,5);
ro_c=ro1.*NL1(:,6)+ro2.*NL2(:,6)+ro3.*NL3(:,6);
ro_r=ro1.*NL1(:,7)+ro2.*NL2(:,7)+ro3.*NL3(:,7);
ro_s=ro1.*NL1(:,8)+ro2.*NL2(:,8)+ro3.*NL3(:,8);
ro_t=ro1.*NL1(:,9)+ro2.*NL2(:,9)+ro3.*NL3(:,9);
ro_o=ro1.*NL1(:,10)+ro2.*NL2(:,10)+ro3.*NL3(:,10);

gm_r=NL1(:,7).*gm1+NL2(:,7).*gm2+NL3(:,7).*gm3;
gm_s=NL1(:,8).*gm1+NL2(:,8).*gm2+NL3(:,8).*gm3;
gm_t=NL1(:,9).*gm1+NL2(:,9).*gm2+NL3(:,9).*gm3;

41
fa1=1/6*(ro_o.*fac1(:,10)+4*ro_r.*fac1(:,7)+ro_a.*fac1(:,4));
fa2=1/6*(ro_o.*fac2(:,10)+4*ro_r.*fac2(:,7)+ro_a.*fac2(:,4));
fa3=1/6*(ro_o.*fac3(:,10)+4*ro_r.*fac3(:,7)+ro_a.*fac3(:,4));

ga1=1/6*(ro_o.*gac1(:,10)+4*ro_r.*gac1(:,7)+ro_a.*gac1(:,4));
ga2=1/6*(ro_o.*gac2(:,10)+4*ro_r.*gac2(:,7)+ro_a.*gac2(:,4));
ga3=1/6*(ro_o.*gac3(:,10)+4*ro_r.*gac3(:,7)+ro_a.*gac3(:,4));

fb1=1/6*(ro_o.*fac1(:,10)+4*ro_s.*fac1(:,8)+ro_b.*fac1(:,5));
fb2=1/6*(ro_o.*fac2(:,10)+4*ro_s.*fac2(:,8)+ro_b.*fac2(:,5));
fb3=1/6*(ro_o.*fac3(:,10)+4*ro_s.*fac3(:,8)+ro_b.*fac3(:,5));

gb1=1/6*(ro_o.*gac1(:,10)+4*ro_s.*gac1(:,8)+ro_b.*gac1(:,5));
gb2=1/6*(ro_o.*gac2(:,10)+4*ro_s.*gac2(:,8)+ro_b.*gac2(:,5));
gb3=1/6*(ro_o.*gac3(:,10)+4*ro_s.*gac3(:,8)+ro_b.*gac3(:,5));

fc1=1/6*(ro_o.*fac1(:,10)+4*ro_t.*fac1(:,9)+ro_c.*fac1(:,6));
fc2=1/6*(ro_o.*fac2(:,10)+4*ro_t.*fac2(:,9)+ro_c.*fac2(:,6));
fc3=1/6*(ro_o.*fac3(:,10)+4*ro_t.*fac3(:,9)+ro_c.*fac3(:,6));

gc1=1/6*(ro_o.*gac1(:,10)+4*ro_t.*gac1(:,9)+ro_c.*gac1(:,6));
gc2=1/6*(ro_o.*gac2(:,10)+4*ro_t.*gac2(:,9)+ro_c.*gac2(:,6));
gc3=1/6*(ro_o.*gac3(:,10)+4*ro_t.*gac3(:,9)+ro_c.*gac3(:,6));

Aa1=(y(:,4).*fa1-x(:,4).*ga1)+(gm_r)./Dp.*(y(:,4).*(-y23)-x(:,4).*(-
x32));
Aa2=(y(:,4).*fa2-x(:,4).*ga2)+(gm_r)./Dp.*(y(:,4).*(-y31)-x(:,4).*(-
x13));
Aa3=(y(:,4).*fa3-x(:,4).*ga3)+(gm_r)./Dp.*(y(:,4).*(-y12)-x(:,4).*(-
x21));

Ab1=(y(:,5).*fb1-x(:,5).*gb1)+(gm_s)./Dp.*(y(:,5).*(-y23)-x(:,5).*(-
x32));
Ab2=(y(:,5).*fb2-x(:,5).*gb2)+(gm_s)./Dp.*(y(:,5).*(-y31)-x(:,5).*(-
x13));
Ab3=(y(:,5).*fb3-x(:,5).*gb3)+(gm_s)./Dp.*(y(:,5).*(-y12)-x(:,5).*(-
x21));

Ac1=(y(:,6).*fc1-x(:,6).*gc1)+(gm_t)./Dp.*(y(:,6).*(-y23)-x(:,6).*(-
x32));
Ac2=(y(:,6).*fc2-x(:,6).*gc2)+(gm_t)./Dp.*(y(:,6).*(-y31)-x(:,6).*(-
x13));
Ac3=(y(:,6).*fc3-x(:,6).*gc3)+(gm_t)./Dp.*(y(:,6).*(-y12)-x(:,6).*(-
x21));

Dca1=(Ac1-Aa1); Dca2=(Ac2-Aa2); Dca3=(Ac3-Aa3);


Dab1=(Aa1-Ab1); Dab2=(Aa2-Ab2); Dab3=(Aa3-Ab3);
Dbc1=(Ab1-Ac1); Dbc2=(Ab2-Ac2); Dbc3=(Ab3-Ac3);

%%%%-FIM- Calculo Matrizes Locais%%%%%%


Labc=[Dca1;Dca2;Dca3;Dab1;Dab2;Dab3;Dbc1;Dbc2;Dbc3];
Labc(PP.nel*9+1)=0;
MLabc=Labc(Mind);
Aij_in=sum(MLabc,2);

%%%%%%%%%%%%%%%%%%%%%%%%%Pontos nodais do contorno%%%%%%%%%%%%%%%%%

42
rom=0.75*rof(PP.no_c1)+0.25*rof(PP.no_c2);
ron=0.25*rof(PP.no_c1)+0.75*rof(PP.no_c2);

um=U(PP.no_c1).*0.75+U(PP.no_c2).*0.25;
vm=V(PP.no_c1).*0.75+V(PP.no_c2).*0.25;
un=U(PP.no_c1).*0.25+U(PP.no_c2).*0.75;
vn=V(PP.no_c1).*0.25+V(PP.no_c2).*0.75;

massa1=zeros(PP.nno,1); massa1(PP.no_c1)=rom.*(PP.ya1.*um-
PP.xa1.*vm);
massa2=zeros(PP.nno,1); massa2(PP.no_c2)=ron.*(PP.y2a.*un-
PP.x2a.*vn);

m11=0.75*massa1(PP.no_c1);
m12=0.25*massa1(PP.no_c1);
m21=0.25*massa2(PP.no_c2);
m22=0.75*massa2(PP.no_c2);

Lmcc=[m11;m12;m21;m22];
Lmcc(PP.nel*9+1)=0;
MLmcc=zeros(size(Mindc));
for i=1:size(Mindc,2),MLmcc(:,i)=Lmcc(Mindc(:,i));end
Aij_cc=sum(MLmcc,2);

%%%%%%%%%%%%%%%%%%%%%%%%%Pontos nodais do contorno%%%%%%%%%%%%%

%%%% - INI - Variaveis de Saida

PP.massa=(massa1+massa2);
PP.Aij=Aij_in+Aij_cc;
PP.Uav=Uav; PP.uo=uo; PP.vo=vo;
PP.x=x; PP.y=y;

%%%% - FIM - Variaveis de Saida

APÊNDICE I - CÓDIGO PARA A CRIAÇÃO DO GRADIENTE


function [dT_dxi,dT_dyi] = gradiente(Temp,P,T)
% Rotina escrita pelo professor Fábio Alfaia da Cunha, contato:
fabioalfaia@unb.br
% Para uso na disciplina Transferência de Calor, da Universidade de
Brasília.

if size(P,1)>size(P,2),P=P';end
if size(T,1)>size(T,2),T=T';end
%coordenadas
X=P(1,:); Y=P(2,:);
%matriz de conectividade
T1=T(1,:); T2=T(2,:); T3=T(3,:);
%coordenadas dos três elementos de cada elemento
X1=X(T1); X2=X(T2); X3=X(T3);
Y1=Y(T1); Y2=Y(T2); Y3=Y(T3);
%Temperaturas dos três elementos de cada elemento
Temp1=Temp(T1)'; Temp2=Temp(T2)'; Temp3=Temp(T3)';

43
%Determinante baseado nas coordenadas dos três nós dos elementos
D=X2.*Y3-X3.*Y2+X3.*Y1-X1.*Y3+X1.*Y2-X2.*Y1;
%Área de uma elemento
Atri=D/2;
%Sub-áreas associadas a cada nó do elemento.
Atri1=Atri/3;
Atri2=Atri/3;
Atri3=Atri/3;
%Cálculo da das áreas associadas aos nós com base nas áreas do
elementos.
A_i=zeros(length(P),1);
for i=1:length(T)
A_i(T(1,i))=Atri1(i)+A_i(T(1,i));
A_i(T(2,i))=Atri2(i)+A_i(T(2,i));
A_i(T(3,i))=Atri3(i)+A_i(T(3,i));
end

%Derivada na direção x, "A", e na direção "y", B, baseada nos


elementos.
dT_dx =(Temp1.*(Y2-Y3) + Temp2.*(Y3-Y1) + Temp3.*(Y1-Y2))./D;
dT_dy =(Temp1.*(X3-X2) + Temp2.*(X1-X3) + Temp3.*(X2-X1))./D;

%Cálculo das derivadas nos nós, com base nas derivadas dos elementos
dT_dxA=zeros(length(P),1);
dT_dyA=zeros(length(P),1);
for i=1:length(T)
dT_dxA(T(1,i))=Atri1(i)*dT_dx(i)+dT_dxA(T(1,i));
dT_dxA(T(2,i))=Atri2(i)*dT_dx(i)+dT_dxA(T(2,i));
dT_dxA(T(3,i))=Atri3(i)*dT_dx(i)+dT_dxA(T(3,i));

dT_dyA(T(1,i))=Atri1(i)*dT_dy(i)+dT_dyA(T(1,i));
dT_dyA(T(2,i))=Atri2(i)*dT_dy(i)+dT_dyA(T(2,i));
dT_dyA(T(3,i))=Atri3(i)*dT_dy(i)+dT_dyA(T(3,i));
end

dT_dxi=dT_dxA./A_i;
dT_dyi=dT_dyA./A_i;

APÊNDICE J – CÓDIGO PARA CRIAÇÃO DA FUNÇÃO ELE2NO


% Rotina escrita pelo professor Fábio Alfaia da Cunha, contato:
fabioalfaia@unb.br
% Para uso na disciplina Transferência de Calor, da Universidade de
Brasília.

function [fi_i]=ele2no(fie,PP,ie)
if nargin<3,ie=PP.iet;end
fie=fie(:);
Mfie=zeros(size(PP.nvz));
Mv=zeros(size(PP.nvz));

svc1=zeros(PP.nel,1); svc2=zeros(PP.nel,1);
svc3=zeros(PP.nel,1);
svc1(ie)=PP.svc(ie,1); svc2(ie)=PP.svc(ie,2);
svc3(ie)=PP.svc(ie,3);

44
fieT=[(fie.*svc1)' (fie.*svc2)' (fie.*svc3)']'; fieT(PP.nel*3+1)=0;
fieV=[svc1' svc2' svc3']'; fieV(PP.nel*3+1)=0;

for i=1:PP.NMnvz,
Mfie(i)=fieT(PP.nvz(i));
Mv(i)=fieV(PP.nvz(i));
end

sumMv=sum(Mv,2);
fi_i=sum(Mfie,2)./sumMv;
fi_i(sumMv==0)=0;

APÊNDICE K - CÓDIGO PARA O POS PROCESSAMENTO


clc,clear all, close all
load RESULTADOS_SIMULACAO
% % % % % Alguns gráficos:

figure(1);
trisurf(PP.T,PP.X,PP.Y,(VS.UT(:,1).^2+VS.VT(:,1).^2).^0.5);view(0,90
),shading interp,colorbar;axis equal;colormap jet;title('Campo de
modulo(U)');drawnow;%axis([-2 6 -4 4]);
print(gcf,'figura_01.png','-dpng');

figure(2);
trisurf(PP.T,PP.X,PP.Y,VS.Temp(:,1));view(0,90),shading
interp,colorbar;axis equal;;colormap jet;title('$$ Campo \ de \
Temperatura $$','Interpreter','latex');drawnow;
print(gcf,'figura_02.png','-dpng');

figure(3);
quiver(P(:,1),P(:,2),VS.UT(:,1),VS.VT(:,1),.5),axis equal;title('$$
Campo \ de \ |\vec{U} | $$','Interpreter','latex');drawnow;
print -dmeta figura_03.emf

figure(4);
trisurf(PP.T,PP.X,PP.Y,VS.Prs);view(0,90),shading
interp,colorbar;colormap jet;axis equal;title('Campo de
pressão');drawnow;
print(gcf,'figura_04.png','-dpng');

%%%%%exemplo de coleta de dados em parte do domínio.

%%%%%%coordenadas de coleta:
xi=linspace(0.5,5,10000); %
yi=zeros(size(xi));
%%%%%Obtenção dos valores de "Uav" para as coordenadas dadas acima:
Uav=VS.UT(:,1);%(VS.UT(:,1).^2+VS.VT(:,1).^2).^0.5;
Uavi=griddata(P(:,1),P(:,2),Uav,xi,yi,'cubic');

APÊNDICE L- CÓDIGO PARA CALCULO DO H


clc,clear all,close all
load RESULTADOS_SIMULACAO

45
%Cálculo dos gradiente associados a todos os nós do domínio
[dT_dxi,dT_dyi] = gradiente(VS.MTemp(:,1),P,T);
% [dT_dxi,dT_dyi] = gradiente(VS.Temp(:,1),P,T);
%Cálculo das áreas associadas aos nós do contorno de interesse:
[Aglobal,Aglobalx,Aglobaly] = area_contorno(P,E,5);% O contorno "5"
é o de interesse.
%cálculo da derivada normal
dT_dn=(dT_dxi.*Aglobalx+dT_dyi.*Aglobaly)./Aglobal;
% Lembrando que PP.N_cilindro=>nós no cilindro
% cálculo de H local
T_inf=140;
H_L=-
PF.k.mix(PP.N_cilindro).*dT_dn(PP.N_cilindro)./(VS.MTemp(PP.N_cilind
ro,1)-T_inf);
%calculo de H_G, coeficiente convectivo global
Acilindro=Aglobal(PP.N_cilindro);
H_G=(1./sum(Acilindro)).*sum(H_L.*Acilindro);

k_g=0.02953;
D=1;
Nu_G=D*H_G/k_g
Re_G=30;

Re=linspace(.1,500,1200); Pr=0.7155; D=1;


%Equação Livro Cengel
Nu=0.3+((0.62*(Re.^0.5).*Pr.^(1/3))./((1+(0.4/Pr)^(2/3)).^(1/4))).*(
(1+(Re/282000).^(5/8))).^(4/5);

figure(1)
plot(120,5.1,'s',Re_G,Nu_G,'vb',Re,Nu,'-
k','LineWidth',1.0,'MarkerSize',10),hold on
xlabel('Re'),ylabel('Nu')

46

Você também pode gostar