Você está na página 1de 71

Universidade Federal da Paraíba

Centro de Tecnologia
Departamento de Engenharia de Materiais

O
H
Curso de Graduação em
Engenharia de Materiais
UN

Apostila de
SC

Modelagem de Materiais
Modelagem de processos - Meios Contínuos
RA

Prof. Romulo Heringer

15 de agosto de 2016
Conteúdo

1 Introdução 3

2 Modelo Matemático 5
2.1 Modelo Descritivo . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.1 Sistema Termodinâmico . . . . . . . . . . . . . . . . . 7

O
2.1.2 Referencial e Parâmetros da Análise . . . . . . . . . . . 7
2.1.3 Simetria da Propriedade de Campo . .
H . . . . . . . . . 8
2.1.4 Condições na Fronteira do Sistema . . . . . . . . . . . 9
2.1.5 Modelo Descritivo . . . . . . . . . . . . . . . . . . . . . 9
UN
2.2 Modelo Matemático . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.1 Condução em Regime Permanente . . . . . . . . . . . . 10
2.2.2 Regime Transiente . . . . . . . . . . . . . . . . . . . . 13
2.2.3 Da Descrição ao Modelo Matetemático . . . . . . . . . 14
SC

3 Volumes Finitos 17
3.1 Princípios Básicos . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2 Malha Computacional . . . . . . . . . . . . . . . . . . . . . . 17
RA

3.3 Discretização da Equação Diferencial . . . . . . . . . . . . . . 22


3.3.1 Difusão Bidimensional em Regime Permanente . . . . . 22
3.3.2 Difusão Bidimensional em Regime Transiente . . . . . 29
3.3.3 Difusão com Geração de Energia . . . . . . . . . . . . 34
3.4 Condições de Contorno . . . . . . . . . . . . . . . . . . . . . . 36
3.4.1 Condições de Dirichlet . . . . . . . . . . . . . . . . . . 37
3.4.2 Condições de Neumann . . . . . . . . . . . . . . . . . . 39
3.4.3 Condições de Terceiro Tipo . . . . . . . . . . . . . . . 40
3.5 Sistema Algébrico de Equações . . . . . . . . . . . . . . . . . 42
3.6 Resolução do Sistema Algébrico . . . . . . . . . . . . . . . . . 46
3.6.1 Método de Jacobi . . . . . . . . . . . . . . . . . . . . . 47
3.6.2 Método de Gauss-Seidel . . . . . . . . . . . . . . . . . 49

1
CONTEÚDO CONTEÚDO

4 Códigos Computacionais 52
4.1 Código para o Método de Gauss-Seidel . . . . . . . . . . . . . 52
4.2 Código para Difusão em Regime Permanente . . . . . . . . . . 55
4.3 Código para Difusão em Regime Permanente . . . . . . . . . . 62

O
H
UN
SC
RA

R. Heringer – 2
Capítulo 1

INTRODUÇÃO

Nosso curso de Modelagem em Materiais visa uma introdução em algumas


técnicas de modelagem matemática e resolução numérica no contexto da

O
Engenharia de Materiais. O termo "modelagem"é muito amplo, pois se aplica
a cada vez que substituirmos o fenômeno real, objeto de estudo, por outro
H
idealizado. Isso pode ocorrer em experimentos onde os processos envolvidos
e resultados obtidos são modelos aplicáveis a uma gama de fenômenos de
interesse. Há, finalmente, os modelos matemáticos, usados para descrever
UN
processos permitindo sua análise qualitativa e quantitativa. O resultado deste
tipo de análise será tão melhor quanto mais completo for o modelo. No
entanto, quanto mais abrangente for o modelo, mais complexa sua resolução,
tornando-se as vezes impossível, com as ferramentas atuais.
SC

Dentre os modelos matemáticos ...


Este texto é dedicado à estudantes de graduação de Engenharia de Mate-
riais. Assim, será inteiramente limitado à modelagem de processos de fabri-
RA

cação de materiais. Os modelos aqui mencionados serão baseados na hipótese


do continuum e, por conseguinte, meios macroscópicos onde tal hipótese seja
válida. Nesta abordagem, leis físicas, em geral leis de conservação, são es-
critas para um meio onde se considera que a matéria esteja continuamente
distribuída no espaço. Não há átomos, moléculas, nem partículas subatô-
micas nem espaço entre eles. Qualquer ponto matemático, é definido sobre
matéria e sempre se pode definir um volume infinitesimal em torno deste
ponto, dotado de uma quantidade infinitesimal de massa. Na mecânica, o
ponto dotado de volume e de massa infinitesimais assim definido é chamado
de partícula material.
Há os modelos de escala, como por exemplo, as maquetes em escala redu-
zida de aviões, prédios e carros colocados em túnes de vento para medições
de esforços causados pelo arrasto viscoso e de forma.
Neste texto veremos: Modelo descritivo (Hipóteses e simplificações); Mo-

3
1. Introdução

O
H
Figura 1.1: Áreas de conhecimento recomendáveis para atuação em simulação
numérica de processamento de materiais.
UN

delo matemático (Equações descritivas, condições de contorno e inicial); Re-


solução numérica (Método dos volumes finitos); Algoritmos (Jacobi, Gauss-
Seidel); Programação (Difusão bidimensional em regime permanente e em
SC

regime transiente).
RA

R. Heringer – 4
Capítulo 2

MODELO MATEMÁTICO

Neste capítulo nos concentraremos na elaboração de um modelo matemático


de um processo de transferência de calor. Para tanto, etapa necessária é

O
interpretação física do fenômeno real, afim de extrair apenas as informações
necessárias para responder à questão que motivou o modelo. Esta etapa, que
H
antecede à escrita do modelo matemático propriamente dito, é uma descrição
simplificada da realidade, mas que deve conter todas as informações (parâ-
metros) que influenciam o processo de interesse. A partir da observação do
UN
processo dito real, devemos limitar a complexidade inerente aos fenômenos
físicos afim de tornar solúvel o modelo, sem contudo perder as informações
relevantes aos objetivos da análise. Chamaremos esta fase de descrição do
processo ou modelo descritivo.
SC

2.1 MODELO DESCRITIVO (HIPÓTESES


RA

E SIMPLIFICAÇÕES)

Modelo descritivo, no contexto deste texto, é uma descrição idealizada de


um processo físico, contendo simplificações e hipóteses coerentes com o obje-
tivo da análise. O modelo descritivo visa tornar viáveis conclusões técnicas/-
científicas sobre processos reais, que em si mesmo podem ser mais ou menos
complexos. Está eventualmente associado a uma análise qualitativa. Em
engenharia, a maioria das vezes será necessária uma análise quantitativa,
ou seja, uma análise matemática resultado de um modelo matemático. O
modelo descritivo é, então, um passo inicial imprescindível à modelagem ma-
temática, de tal modo, que a qualidade dos resultados quantitativos depende
da qualidade da descrição física (modelo descritivo).
Nesta seção vamos elaborar um modelo descritivo de um processo de

5
2. Modelo Matemático 2.1. Modelo Descritivo

transferência de calor. Faremos isso usando um exemplo de um processo


idealizado. Embora não seja um processo real, é suficiente para nossos pro-
pósitos. Ele vai nos permitir exercitar a definição de parâmetros impor-
tantes para a análise, conceitos de sistema, vizinhança, fronteira,
simetria, regime de transferência de calor, condições de contorno,
etc.
Considere a barra de alumínio sólido representado em vermelho na figura
2.1. A barra tem seção transversal quadrada com lados iguais a 100 mm
e comprimento de 2 m. Cada uma das faces longitudinais A, B, C e D da
barra está em contato com uma substância pura diferente, cada uma delas
em seu estado de equilíbrio sólido-líquido. As temperaturas de mudança
de fase sólido-líquido das substâncias em contato com as faces A, B, C e
D, são respectivamente, TA = 100 ◦ C, TB = 75 ◦ C, TC = 50 ◦ C e
TD = 25 ◦ C. Os volumes das substâncias em relação ao volume da barra
está bem representado na figura. Os topos da barra estão em contato uma

O
camada grossa de lã de rocha. Além disso, sabe-se que as substâncias A,
B, C e D têm condutividades térmicas comparáveis à do alumínio e calores
H
específicos e entalpias de fusão comparáveis ao da água.
Nosso objetivo ao longo da seção será fazer uma análise qualitativa
UN
a transferência de calor na barra de alumínio. Na próxima seção o
objetivo será uma análise quantitativa do mesmo caso.
SC
RA

Figura 2.1: Esquema de uma configuração idealizada. À direita uma seção


transversal da montagem mostrada em perspectiva à esquerda. Represen-
tada em vermelho está uma barra de alumínio em contato térmico com as
substâncias A, B, C e D. A região cinza representa um isolante térmico.

R. Heringer – 6
2. Modelo Matemático 2.1. Modelo Descritivo

2.1.1 DEFINIÇÃO DO SISTEMA TERMODINÂMICO


Pede-se a descrição da transferência de calor na barra de alumínio. Para isso,
precisamos avaliar os contatos térmicos da barra com o seu entorno. Caso
seja possível conhecer suficientemente o que acontece na interface da barra
com as substâncias em torno dela, talvez seja possível definir condições de
contorno nas faces da barra. Se isto for possível, podemos definir a barra
como sendo nosso sistema (termodinâmico).
Foi dito que a barra está em contato com as substâncias puras A, B, C
e D, em mudança de fase sólido-líquido. As mudanças de fases de substân-
cias puras são processos isotérmicos. Sendo assim, podemos afirmar que as
temperaturas nestas substâncias são TA , TB , TC e TD . As substâncias que
recebem calor do alumínio (as outras faces dos reservatórios delas são ter-
micamente isolados) têm a tendência de se liquefazer. Ocorre o contrário
para aquelas que perdem calor para o alumínio. No entanto, foi dito que
a representação dos volumes na figura acima guardam proporções realistas.

O
Sendo assim, medindo a figura e calculando volumes podemos fazer a seguinte
estimativa: H
VA VD 0, 75 m3
= ··· = ≈ = 37, 5.
VAl VAl 0, 02 m3
UN
Ou seja, o volume de cada um dos reservatórios é 37,5 vezes o volume da
barra de alumínio. Dada a diferença de volumes e as características térmicas
informadas para as substâncias bifásicas, podemos considerá-las como re-
servatórios térmicos1 no processo do exemplo. Ou seja suas temperaturas
SC

são uniformes ao longo de cada reservatório e não variam durante todo o


processo.
Concluímos que não há necessidade de incluir os reservatórios em nossa
RA

análise da transferência de calor. Com isso nosso sistema, o objeto de nossa


análise, se restringe à barra de alumínio. As outras 4 substâncias compõem
a vizinhança.

2.1.2 REFERENCIAL E PARÂMETROS DA ANÁ-


LISE
Escolhido o sistema termodinâmico, é necessário estabelecer um referencial.
Adotaremos um sistema de coordenadas cartesianas fixo em relação à barra
1
Reservatório térmico é um meio em que, para efeitos práticos, não muda sua tem-
peratura apesar receber ou perder calor para outro meio. Por exemplo, a água do mar é
muitas vezes usada como reservatório térmico em circuitos à vapor para geração de energia
elétrica.

R. Heringer – 7
2. Modelo Matemático 2.1. Modelo Descritivo

de alumínio. A razão disso ficará mais clara mais adiante. Para as conclusões
desta fase do modelo, não importa a posição da origem do sistema de eixos.
O referencial está fixo em relação ao material. Além disso, como se trata
de um sólido, mesmo havendo translação ou rotação (de toodo o conjunto),
isso não causará movimento convectivo interno ao sistema. São possíveis
movimentos de deformação térmica e aquelas causadas por forças externas.
Como nada foi dito sobre forças externas, vamos ignorá-las. Além disso,
como estamos interessados apenas na transferência de calor em um sólido,
poderemos ignorar em primeira mão qualquer tipo de deformação, mesmo a
dilatação térmica. Isso implica que ~u = 0 e ainda D = 0. Portanto não há
termos convectivos, nem trabalho realizado sobre ou pelo sistema, além de
não haver aquecimento por fricção.
Nada foi dito sobre correntes elétricas na barra e, com as temperaturas
envolvidas, não há mudança de fase nem reações químicas no sistema. Por-
tanto não há fontes térmicas. Isso reduz o transporte de calor a um processo

O
de condução pura.
Até aqui, nosso sistema pode ser representado como na figura 2.2.
H
UN
SC
RA

Figura 2.2: Sistema e referencial.

2.1.3 SIMETRIA DA PROPRIEDADE DE CAMPO


Os topos da barra de alumínio estão em contato com uma camada de lã de
rocha, material que é bom isolante térmico (baixa condutividade térmica e
alto calor específico). Assim, desprezaremos qualquer transferência de calor
no sentido longitudinal da barra de alumínio havendo, portanto, simetria do
campo de temperatura nessa direção. Considerando o referencial escolhido
da figura 2.2, as considerações deste parágrafo implicam em
∂f
= 0,
∂z

R. Heringer – 8
2. Modelo Matemático 2.1. Modelo Descritivo

para qualquer propriedade de campo f .


Isso reduz o problema à condução bidimensional de calor no plano (x, y),
coincidente com uma seção transversal qualquer da barra. Com isso nosso
sistema se reduz à representação da figura abaixo.

O
Figura 2.3: Sistema para o caso de condução de calor bidimensional em (x, y).
H
UN
2.1.4 CONDIÇÕES NA FRONTEIRA DO SISTEMA
Vamos descrever a transferência de calor através da distribuição de tempera-
tura (campo de temperatura), pois sabemos que gradientes de temperatura
SC

causam fluxo de energia térmica. Assim, vamos partir da equação da conser-


vação da energia térmica. O fato de haver líquido em contato com a barra,
nos dá segurança para considerar um bom contato térmico entre as substân-
cias bifásicas e a barra e, como as condutividades são comparáveis, podemos
RA

esperar que não haja gradiente térmico significativo nas interfaces sistema/-
vizinhança (fronteira). A conclusão é que a temperatura de cada substância
da vizinhança será considerada também a temperatura da fronteira corres-
pondente de nosso sistema. Com isso estabelecemos que as temperaturas da
barra nas faces A, B, C e D são conhecidas e iguais, respectivamente, à TA ,
TB , TC e TD . Isso nos permitirá escrever as condições de contorno para o
modelo matemático.

2.1.5 MODELO DESCRITIVO


Estamos agora em condições de resumir nossa descrição do problema. Con-
cluímos acima que não há geração de energia, nem realização de trabalho,
nem convecção. Nossa avaliação da transferência de calor na barra de alumí-
nio se resume a um processo de transferência de calor por condução,

R. Heringer – 9
2. Modelo Matemático 2.2. Modelo Matemático

bidimensional, em um sólido fixo em relação a um referencial carte-


siano (x, y), com temperaturas conhecidas impostas nas fronteiras.
Dependendo de outros objetivos específicos, outras informações podem
ser acrescentadas. Por exemplo, o processo pode ser classificado como tarns-
ferência de calor em regime permanente ou transiente, etc.

2.2 MODELO MATEMÁTICO


2.2.1 DIFUSÃO EM REGIME PERMANENTE
Considerando novamente a montagem apresentada na figura 2.1, vamos esta-
belecer um modelo matemático para descrever o campo de temperatura
na barra de alumínio em regime permanente. Regime permanente ou es-
tacionário é o termo usado para os processos cujas propriedades de campo
não variam com o tempo, embora possam variar no espaço. Ou seja, para

O
regime permanente,
∂f (~r, t) H
= 0,
∂t
onde t é o tempo e f uma propriedade de campo qualquer (por exemplo
UN
temperatura, vetor velocidade, massa específica, etc.). O vetor ~r é a posição
no espaço.
Pede-se o campo de temperatura em regime permanente. Para tanto, va-
mos partir da equação da conservação da energia térmica. Como precisamos
SC

saber a temperatura em cada ponto do material (campo de temperatura),


usaremos a equação da conservação da energia térmica em sua forma dife-
rencial (essa equação foi estudada em Mecânica dos Materiais I):
RA

de →
− →

ρ = − ∇ · ~q − p ∇ · ~u + D : τ + ρ Q̇. (2.1)
dt
Ou, usando o conceito de derivada substantiva,
!
∂e →
− →
− →

ρ + ~u · ∇e = − ∇ · ~q − p ∇ · ~u + D : τ + ρ Q̇. (2.2)
∂t

Relembrando, as interpretações físicas dos termos dessa equação são,


∂e
• ρ : termo transiente;
∂t


• ρ ~u · ∇e : transporte de energia térmica por convecção;


• − ∇ · ~q : transporte de energia térmica por difusão;

R. Heringer – 10
2. Modelo Matemático 2.2. Modelo Matemático



• −p ∇ · ~u : aquecimento/resfriamento por trabalho reversível;

• D : τ : dissipação viscosa (aquecimento por trabalho irreversível);

• ρ Q̇ : taxa temporal de geração de calor (por reações químicas ou outras


causas).
∂e
Para regime permanente = 0. Nossa equação de conservação da
∂t
energia pode então ser escrita como

− →
− →

ρ ~u · ∇e = − ∇ · ~q − p ∇ · ~u + D : τ + ρQ̇.
Na seção anterior o processo de transferência de calor na barra de alumínio
da figura 2.1 foi descrito. Algumas conclusões da descrição feita permitem
simplificar convenientemente a equação acima da seguinte forma:

O
• Não há movimento. Isso implica que ~u = 0 e ainda D = 0. Portanto,


ρ ~u · ∇e = 0 H


p ∇ · ~u = 0
UN
D:τ =0

• Não há geração térmica no sólido. Portanto faremos


Q̇ = 0.
SC

Aplicaremos as demais simplificações adiante. Usando os resultados acima,


a equação da energia se reduz a:
RA



∇ · ~q = 0.

Ou seja, só há transferência de calor por condução e não há outros efeitos


térmicos.
Usando a lei de Fourier para condução no sólido:


~q = −k ∇T,
onde k é a condutividade térmica, a equação da energia pode ser escrita
como:

− →

∇ · (k ∇T ) = 0. (2.3)
Considerando a condutividade uniforme no sólido, ela poderá sair do di-
vergente e, simplificando, teremos:

R. Heringer – 11
2. Modelo Matemático 2.2. Modelo Matemático

∇2 T = 0
onde ∇2 () é o operador laplaciano.
Para o sistema cartesiano a equação acima fica:

∂ 2T ∂ 2T ∂ 2T
+ + =0 (2.4)
∂x2 ∂y 2 ∂z 2
que é a equação de Laplace.
Voltando às simplificações estabelecidas no modelo descritivo, vimos que

• A transferência de calor é bidimensional. Escolhendo o plano (x, y),


isso implica que nada varia em z e, portanto, ∂T /∂z = 0.

• Para completar o modelo matemático, são necessárias as condições de


contorno. As temperaturas nas fronteiras A, B, C e D são conhecidas:

O
TA = 100 ◦ C, TB = 75 ◦ C, TC = 50 ◦ C e TD = 25 ◦ C. Ou
seja, temos temperaturas prescritas nas faces longitudinais da barra de
H
alumínio.
UN
A figura 2.4 mostra nosso domínio matemático.
SC
RA

Figura 2.4: Domínio matemático e condições de contorno do tipo Dirichlet.

Usando ∂T /∂z = 0, nossa equação de Laplace torna-se:

∂ 2T ∂ 2T
+ = 0. (2.5)
∂x2 ∂y 2

Essa é a equação diferencial de condução de calor bidimensional em (x, y).

R. Heringer – 12
2. Modelo Matemático 2.2. Modelo Matemático

Usando as temperaturas prescritas2 nas faces da barra de alumínio, as


condições de contorno são:

T (x, y) = TC ∀(x, y) | 0 ≤ x < L, y = 0; (2.6)


T (x, y) = TA ∀(x, y) | 0 < x ≤ L, y = M ; (2.7)
T (x, y) = TD ∀(x, y) | x = 0, 0 < y ≤ M ; (2.8)
T (x, y) = TB ∀(x, y) | x = L, 0 ≤ y < M. (2.9)

Onde os lados da seção transversal do sólido são iguais e têm L = M =


100 mm.
Isso completa nosso modelo matemático, que consiste na equação dife-
rencial descritiva da condução de calor bidimensional em regime permanente
e nas condições de contorno.

2.2.2 DIFUSÃO EM REGIME TRANSIENTE

O
Considere os mesmos dados usados para o modelo matemático elaborado
H
para regime permanente. Suponha que o objetivo agora seja conhecer o
tempo necessário para que a transferência de calor na barra de alumínio
UN
atinja o regime permanente. Suponha que a temperatura da barra no início
do processo seja uniforme e igual à 20◦ C.
Se inicialmente a temperatura do sistema é uniforme, quando suas faces
forem submetidas à temperaturas diferentes umas das outras, haverá fluxo
SC

de calor e portanto o campo deixará de ser uniforme. Portanto, até que se


atinja o regime estacionário, a temperatura em cada ponto vai variar com o
tempo (regime transiente).
Nosso objetivo então é escrever um modelo matemático que permita obter
RA

o campo de temperatura a cada tempo.


Pede-se o campo de temperatura em regime transiente. Podemos usar
todas as simplificações do exemplo anterior, para regime permanente, exceto
que agora
∂f (~r, t)
6= 0,
∂t
Ou seja, podemos partir a equação 2.3 e reacrescentar o termo transiente:
∂e → − →

ρ = ∇ · (k ∇T ).
∂t
Essa equação diferencial está em função da energia interna específica, e, e da
temperatura T. Para escrevê-la em função apenas da temperatura, usaremos
2
Quando a variável dependente é conhecida na fronteira a condição de contorno é
chamada de condição de Dirichlet.

R. Heringer – 13
2. Modelo Matemático 2.2. Modelo Matemático

a relação termodinâmica !
∂e
cv ≡ ,
∂T v

pode-se mostrar que3 ,


∂T →
− →

ρc= ∇ · (k ∇T ).
∂t
Nessa equação usamos o fato de que para sólidos, cv = cp = c.
Escrevendo os operadores diferenciais para o sistema cartesiano bidimen-
sional (x, y), obtemos finalmente a equação da condução de calor bidi-
mensional em regime transiente,
! !
∂T ∂ ∂T ∂ ∂T
ρc = k + k . (2.10)
∂t ∂x ∂x ∂y ∂y
Precisamos agora da condição inicial e das condições de contorno. As

O
condições de contorno são as mesmas das expressões . E a condição inial foi
dada. Assim, usando o símbolo Ti a temperatura inicial, temos
H
T (x, y, t) = Ti ∀(x, y, t) | 0 ≤ x < L, 0 < y ≤ M, t = 0 (condição inicial);
(2.11)
UN
T (x, y, t) = TC ∀(x, y, t) | 0 ≤ x < L, y = 0, t > 0; (2.12)
T (x, y, t) = TA ∀(x, y, t) | 0 < x ≤ L, y = M, t > 0; (2.13)
T (x, y, t) = TD ∀(x, y, t) | x = 0, 0 < y ≤ M, t > 0; (2.14)
SC

T (x, y, t) = TB ∀(x, y, t) | x = L, 0 ≤ y < M, t > 0. (2.15)

A equação 2.10 e as condições inicial e de contorno 2.11 a 2.15 compõem


RA

o modelo matemático para a condução bidimensional em regime tran-


siente.

2.2.3 DO MODELO DESCRITIVO AO MODELO MA-


TEMÁTICO
Partimos de uma equação diferencial de conservação bem geral e aplicamos
as simplificações de nosso modelo descritivo para obter o modelo matemático
apresentado pelas equações 2.5 à 2.9, no caso de regime permanente.
Poderíamos ter seguido um outro caminho. Note que o modelo descritivo
do parágrafo 2.1.5, página 9, diz que o fenômeno em estudo aqui é pro-
cesso de transferência de calor por condução, bidimensional, em
3
Esta passagem pode ser consultada na apostila de Mecânica dos Materiais I.

R. Heringer – 14
2. Modelo Matemático 2.2. Modelo Matemático

um sólido fixo em relação a um referencial cartesiano (x, y), com


temperaturas conhecidas impostas nas fronteiras.
Tomando ainda o caso de regime estacionário como exemplo, de posse
dessa descrição poderíamos "montar" o modelo matemático já diretamente
em sua forma final, pesquisando como segue:
Área do conhecimento: Engenharia;
Sub-área/Disciplina: Transferência de Calor ou Fenômenos de Trans-
porte;
Palavras chaves: condução, regime permanente (ou estacionário), bidi-
mensional, cartesiano, condições de contorno.
Com estas informações podemos consultar um livro de transferência de
calor, por exemplo: Fundamentos de Transferência de Calor e de Massa
de Frank P. Incropera e David P. Dewitt, 7ª Ed. 2014, Editora LTC. No
capítulo 4, Condução Bidimensional em Regime Estacionário, na página 146
acharemos a equação 4.1 do livro, que é exatamente a equação de Laplace (em

O
nosso texto, equação 2.5). Para as condições de contorno, capítulo 2, seção
2.4, Condições de contorno e inicial, página 56. Poderão ver a discussão em
H
torno da condição de primeira espécie ou de Dirichlet, bem como a equação
2.1 da tabela 2.2. Isso para citar apenas algumas páginas e apenas um livro.
UN
Se estava disponível, por que foi preciso fazer o desenvolvimento a par-
tir da lei de conservação da energia? Por que não adotar diretamente a
"fórmula" para transferência de calor por condução bidimensional em regime
permanente em um sólido para referencial cartesiano?
SC

Obviamente, como o problema proposto aqui é relativamente simples,


as fontes são abundantes. No entanto, quanto mais complexo o modelo
descritivo4 , mais raras serão as informações disponíveis para consulta na
literatura ou outras fontes.
RA

Se a resposta não estiver disponível, o analista deverá encontrá-la por si


mesmo. Dai a importância da abordagem apresentada no presente texto, que
pode ser resumida como segue:
1. Elaboração do modelo descritivo;
2. Identificar as leis e equações gerais válidas globalmente para o caso
descrito (no contexto de nossa disciplina, leis de conservação);
3. Aplicar as hipóteses e simplificações identificadas no modelo descritivo
às equações gerais para obter a(s) equação(ões) governante(s) e condi-
ções inicial e de contorno do modelo matemático;
4
Note que a complexidade do modelo está associada aos seus objetivos, ou seja, com
as questões que se quer responder com o modelo. Mesmo fenômenos físicos complexos,
podem ser descritos de modo simples, dependendo do objetivo da descrição.

R. Heringer – 15
2. Modelo Matemático 2.2. Modelo Matemático

4. Resolver o modelo matemático para obtenção das informações neces-


sárias.

O
H
UN
SC
RA

R. Heringer – 16
Capítulo 3

INTRODUÇÃO AO MÉTODO
DOS VOLUMES FINITOS

O
Nesta seção nos concentraremos na metodologia de resolução numérica de
modelos matemáticos aplicáveis em engenharia. Vamos nos limitar a modelos
H
difusivos, úteis para uma gama de aplicações de engenharia. Embora seja
apresentado aqui casos de condução de calor, a difusão mássica e difusão de
quantidade de movimento são perfeitamente análogas.
UN

3.1 PRINCÍPIOS BÁSICOS DOS MÉTODOS


SC

COMPUTACIONAIS
RA

3.2 MALHA COMPUTACIONAL


Vimos na seção anterior que a construção da malha computacional é uma
das etapas fundamentais para aplicação do método numérico. Construir uma
malha significa dividir o volume de controle em pequenos volumes, chamadas
partições de volume. As partições são definidas de modo que não haja
sobreposição uma com a outra, e que a soma dos volumes das partições seja,
dentro de uma precisão aceitável, igual ao volume de controle.
A razão para a construção da malha é que, para cada partição de volume,
será razoável adotarmos certas simplificações, não aplicáveis ao volume de
controle inteiro, de modo a nos permitir resolver a equação descritiva do
fenômeno em análise, pois o volume de cada partição deve ser muito menor
do que o volume total onde queremos calcular a propriedade de campo. Para
tanto, basta escolher a quantidade conveniente de partições.

17
3. Volumes Finitos 3.2. Malha Computacional

Figura 3.1: Sequência típica para resolução numerica.

O
A dimensões das partições afetam a precisão do resultado. Quanto mais
H
grosseira a malha, menor a precisão do resultado em relação à solução exata
do problema. Aumentar aumentar o número de partições significa refinar
UN
a malha. Porém, quanto mais refinada a malha, mais equações no sis-
tema algébrico a ser resulvido computacionalmente, como veremos adiante.
Portanto, quanto mais refinada a malha, maior o custo computacional envol-
vido. Simulações numéricas envolvendo sistemas com milhões de equações
SC

algébricas são comuns em engenharia e, mesmo usando máquinas adequadas,


podem durar semanas! Logo, é importante não refinar a malha mais do que
o necessário para cada simulação.
RA

A escolha do número de partições (ou número de nós, como veremos)


pode ser feita com os seguintes passos:
• Gera-se uma malha com um mínimo de partições adequada ao problema
em questão, com a qual, faz-se a implementação e ajustes do algoritmo
numérico.
• Quando a simulação converge1 convenientemente, refina-se a malha e
repete-se a simulação.
• O processo de refino continua até que o a diferença entre os resultados
de duas simulações seja inferior a um valor pequeno o suficiente. Ou
seja, refinar mais do que este ponto seria aumentar o custo computaci-
onal sem alterar significativamente a precisão do resultado.
1
O conceito de convergência, no contexto do cálculo numérico, será visto suscintamente
mais adiante no texto. Em livros de Cálculo Numérico isso é explicado em detalhes.

R. Heringer – 18
3. Volumes Finitos 3.2. Malha Computacional

As malhas podem ser estruturadas ou não estruturadas. Malhas


estruturadas têm o aspecto visto na figura 3.2. Essa figura mostra esquema-
ticamente uma malha bidimensional com partições quadradas, mas outras
formas são também usuais. A característica mais importante das malhas
estruturadas é que elas são ordenáveis. Ou seja, pode-se estabelecer uma
sequência lógica qualquer para identificação de cada partição, de maneira
que, dado o identificador de uma partição, pode-se sempre saber sua posi-
ção, quais são seus vizinhos e em quais faces eles se conectam.
Ao contrário, as malhas não estruturadas, como a da figura 3.3, não se-
guem uma sequência lógica, o que obriga a registrar não só a posição de
cada partição, mas também quais são os vizinhos e como se conectam. Ma-
lhas não estruturadas, porém, são mais adequadas a geometrias complexas
do volume de controle. Além disso, facilitam refinamentos localizados da
malha (figura 3.4), embora essa técnica também seja possível para malhas
estruturadas. Refinamento localizado é usado para diminuir o custo com-

O
putacional, concentrando mais partições nas regiões do volume de controle
onde há variações mais acentuadas nas variáveis de campo. Nos locais onde
H
os valores são mais uniformes, pode-se diminuir o número de pontos sem
perder a precisão do resultado ou a convergência do problema. Consegue-se
UN
assim diminuir o número total de pontos.
identificando apenas a . têm diversas características e modo podem ser
classificadas segundo
SC
RA

Figura 3.2: Malha estruturada.

Em nosso texto introdutório vamos nos limitar às características acima.


Porém, a construção de malhas adequadas e de qualidade é uma etapa que
pode consumir a maior parte do esforço de simulação. Há muitos critérios à
obedecer na construção de malhas afim de garantir o sucesso da simulação.

R. Heringer – 19
3. Volumes Finitos 3.2. Malha Computacional

Figura 3.3: Malha não estruturada e, neste caso, mais refinada em relação à
figura 3.2.

O
H
UN
SC

Figura 3.4: Malha não-estruturada com refinamento localizado.


RA

APLICAÇÃO A UM CASO BIDIMENSIONAL


Consideremos novamente o modelo matemático proposto na seção 2.2, as-
sociado ao volume de controle2 termo apresentado na figura 2.4. Nossa
tarefa agora é desenhar uma malha computacional estruturada, uniforme,
contendo 16 nós internos, 4 na direção x e 4 na direção y.
Em nosso caso, a malha computacional consiste em dividir o domínio
2
Volume de controle é a região no espaço objeto de nossa análise. Também chamado
de sistema aberto, é o sistema termodinâmico em que massa pode cruzar sua fronteira.
Diferente do sistema fechado que, por definição, é uma quantidade identificada de massa.
Note que falamos de volume de controle, embora nosso sistema seja bidimensional. Isso
não trará dificuldade, bastando arbitrar um valor para a espessura na direção z. Em geral
esta espessura é feita igual à unidade, de forma que o cálculo do volume parece ser o
cálculo da área.

R. Heringer – 20
3. Volumes Finitos 3.2. Malha Computacional

matemático (nosso sistema) em 16 volumes (16 partições), 4 divisões na di-


reção x, e 4 na diração y, como mostrado na figura 3.5. Uma malha uniforme
é aquela em que todas as partições tem o mesmo volume e mesma geometria.
Em cada partição (volume finito), vamos definir um ponto nodal ou nó
em seu centro, que indicará as coordenadas em que calcularemos a tempe-
ratura daquela partição. Portanto, em nosso caso teremos 16 pontos nodais
internos.
Note que em uma solução analítica, obteríamos o campo de tempe-
ratura para os infinitos pontos que compõem nosso sistema, cada um deles
associado a um elemento infinitesimal de volume. Porém, em nossa solução
numérica, trataremos com um número finito de volumes e de pontos. De
posse do resultado, caso seja necessário avaliar a temperatura em ponto dife-
rente daqueles definidos pelos nós, basta interpolar convenientemente usando
os valores dos nós da vizinhança do ponto de interesse.
A figura 3.5 indica a malha gerada, onde, por conveniência, escolhemos os

O
nós centralizados em relação às partições correspondentes. Vemos na figura
que os nós internos foram numerados de maneira ordenada. Outras opções de
H
ordenamento são possíveis. Na figura destacamos o nó 5 para indicar algumas
medidas importantes, com vizinhos 1, 4, 6 e 9. Note que na malha acima
UN
podemos conhecer os vizinhos de qualquer ponto nodal, sem a necessidade
verificar os dados da malha, pois a estrutura de partições segue uma sequência
lógica. Essa é uma característica das malhas estruturadas. Usamos ∆x e ∆y
(Delta maiúsculo) para indicar as dimensões de cada partição nas direções x
SC

e y respectivamente. Usamos δx e δy para indicar distâncias entre dois nós


vizinhos, nas direções x e y respectivamente.
Note que só consideramos as direções x e y pois o problema é bidimen-
sional no plano (x, y). No entanto, como estamos tratando com partição de
RA

volume, é aconselhável fazer ∆z = 1 m (por conveniência). Assim, a área


de troca de calor entre os nós 4 e 5, por exemplo, é

∆Area4−5 = ∆A5 = ∆z5 ∆y5 = 1 ∆y5 = ∆y5 m2


.
E o volume da partição 5 é

∆V olume5 = ∆V5 = ∆z5 ∆y5 ∆x5 = 1 ∆y5 ∆x5 = ∆y5 ∆x5 m3 .

Usamos a expressão pontos internos para nos referirmos aos pontos


da malha acima. Fazemos isso para diferenciá-los de pontos da fronteira do
domínio matemático (onde as condições de contorno são válidas).

R. Heringer – 21
3. Volumes Finitos 3.3. Discretização da Equação Diferencial

O
H
Figura 3.5: Partições e nós internos da malha computacional. Nó 5 foi
destacado como exemplo.
UN

3.3 DISCRETIZAÇÃO DA EQUAÇÃO DI-


FERENCIAL DA DIFUSÂO
SC

3.3.1 DIFUSÃO BIDIMENSIONAL EM REGIME PER-


MANENTE
RA

Vimos que a equação diferencial descritiva da condução de calor bidimensi-


onal em regime permanente, sem termo fonte (geração de calor), nos casos
em que a condutividade térmica uniforme, é da da pela equação de Laplace
bidimensional:

∂ 2T ∂ 2T
+ =0
∂x2 ∂y 2
No entanto, para tornar a discussão que se segue mais geral, vamos colocar
essa equação em sua forma anterior, isto é, como o resultado do divergente
do vetor densidade de fluxo de calor dado pela lei de Fourier:
! !
∂ ∂T ∂ ∂T
k + k =0
∂x ∂x ∂y ∂y

R. Heringer – 22
3. Volumes Finitos 3.3. Discretização da Equação Diferencial

Note que agora a condutividade térmica k não é necessariamente uni-


forme. Quando conveniente, a partir da equação integrada poderemos nova-
mente fazer a consideração de k uniforme.
Nosso objetivo é resolver o problema de valor de contorno formado pela
equação acima em conjunto com as condições de contorno. Em nosso curso
vamos fazer isso numericamente. Para tanto, usaremos o Método dos Volu-
mes Finitos. Outros métodos são igualmente importantes em engenharia,
como o Método dos Elementos Finitos. A discretização das equações
governates é uma das etapas fundamentais para aplicação do método dos
volumes finitos.O termo "discretizar a equação" significa integrar a equação
diferencial para cada partição de volume da malha computacional3 .
Consideremos uma partição qualquer P de nossa malha computacional da
figura 3.5, com vizinhos E e W , na direção x e N, S na direção y, conforme
a figura 3.3.1, onde P em nosso caso pode ser qualquer nó entre 0 à N .

O
H
UN
SC
RA

Figura 3.6: Uma partição P e seus vizinhos no plano (x, y), W , E, S e N . w,


e, s, e n são as faces que separam os volumes, como indicado. Por exemplo,
se P = 5 , então, W = 4, E = 6, S = 1, N = 9 .

Integrando a equação anterior para o volume ∆VP da partição P :


3
Integrar a equação diferencial significa resolvê-la, já que a operação de integração é
inversa à da diferenciação.

R. Heringer – 23
3. Volumes Finitos 3.3. Discretização da Equação Diferencial

" ! !#
Z
∂ ∂T ∂ ∂T
k + k dV = 0
∆VP ∂x ∂x ∂y ∂y
Para a partição P , a integral tripla anterior se torna:
Z z f Z yn Z xe " ! !#
∂ ∂T ∂ ∂T
k + k dx dy dz = 0,
zb ys xw ∂x ∂x ∂y ∂y
onde usamos as letras F e B para os nós e f e b para as faces da partição
na direção z.
Façamos a integração da primeira parcela da equação. O procedimento
para a segunda parcela do termo à esquerda será análogo. Por simplicidade
de notação, escreveremos os índices de integração como segue:

xw = w, xe = e ys = s; yn = n, zb = b, zf = f.

O
Além disso, vamos começar por integrar a primeira parcel (das derivadas em
x). A integração da outra parcela será análoga. Chamando esta integral de H
I1 , vem
Z f Z nZ e" !#
∂ ∂T
I1 = k dx dy dz.
UN
b s w ∂x ∂x
Note que a integral em x é imediata, resultando em:
SC

Z f Z nZ e !
∂ ∂T
I1 = k dx dy dz
b s w ∂x ∂x
Z fZ n " #e
∂T
= k dy dz
RA

b s ∂x w
Z fZ n " # " # !
∂T ∂T
= k − k dy dz
b s ∂x e
∂x w
Z fZ n " # Z fZ n " #
∂T ∂T
= k dy dz − k dy dz
b s ∂x e b s ∂x w

As derivadas dentro das últimas integrais têm significado físico impor-


tante. Trata-se dos gradientes da temperatura na direção x, nas faces e e
w, respectivamente. Lembrando a lei de Fourier para a condução de calor, o


vetor densidade de fluxo de calor é dado por ~q = −k ∇T .
Na direção x, o fluxo de calor que cruza a face e será
" #
∂T
~qe = −ke î,
∂x e

R. Heringer – 24
3. Volumes Finitos 3.3. Discretização da Equação Diferencial

e na face w, " #
∂T
~qw = −kw î.
∂x w
Concluímos que as parcelas dentro da última integral são os fluxos de
calor por condução. O resultado da integral em y e em z é, portanto, o fluxo
líquido que cruza as fronteiras ortogonais à x da partição P .
Para avançarmos, vamos precisar conseguir integrar os gradientes nas
faces e e w. Até aqui não fizemos qualquer simplificação. Para continuarmos,
no entanto, precisaremos fazê-las. Vamos considerar que a temperatura varia
linearmente entre P e cada um dos vizinhos E e W , segundo a figura abaixo.

O
H
UN
SC

Figura 3.7: Perfil assumido linear entre o nó P e seus vizinhos para aproxi-
mação do gradiente de temperatura em xw e xe .
RA

Fazendo isso, a derivada da temperatura em relação a x em cada uma das


faces em xw e xe é a própria inclinação do segmento de reta correspondente:
" #
∂T TP − TW kw kw kw
k = kw = (TP − TW ) = TP − TW
∂x w
xP − xW δxw δxw δxw
e
" #
∂T TE − TP ke ke ke
k = ke = (TE − TP ) = TE − TP
∂x e
xE − xP δxe δxe δxe

R. Heringer – 25
3. Volumes Finitos 3.3. Discretização da Equação Diferencial

Com isso, a integração I1 fica:


Z fZ n " # Z fZ n " #
∂T ∂T
I1 = k dy dz − k dy dz
b s ∂x e b s ∂x w
Z fZ n !
ke ke
= TE − TP dy dz
b s δxe δxe
Z fZ n !
kw kw
− TP − TW dy dz
b s δxw δxw

Ainda assim não poderemos calcular as integrais acima, pois não sabemos
como T varia com y e z. Porém, o fato é que cada partição de volume de
nossa malha computacional (cada volume ∆VP ) pode ser pequeno quanto
necessário (ou viável). De maneira, que podemos considerar simplesmente
a temperatura uniforme em cada partição. Ou seja, consideraremos
que TP não varia com (x, y, z) dentro da partição P . O mesmo vale para kw

O
e ke que, serão considerados uniformes ao longo das faces w e e, respectiva-
mente. Analogamente, consideraremos que TW e TE não variam com (x, y, z),
H
respectivamente, dentro de ∆VW e ∆VE .
Obviamente, associado a essa consideração há um erro em relação à solu-
UN
ção exata do problema. Esse tipo de erro é inerente aos métodos numéricos.
Isso é o que diferencia os resultados numéricos dos analíticos. Porém, há
meios de minimizar os erros numéricos de modo que a precisão dos resultados
sejam aceitáveis para as aplicações a que se destinam. O método numérico é
SC

válido quando o erro mencionado é suficientemente pequeno segundo algum


critério aplicável à cada caso. A maneira mais evidente de diminuir o erro
é refinar a malha, ou seja, aumentar o número de partições de modo a
RA

diminuir o volume de cada uma delas.


Com a consideração discutida aqui, a primeira parcela de I1 fica:

R. Heringer – 26
3. Volumes Finitos 3.3. Discretização da Equação Diferencial

 
Z fZ n
k k
 e TE − e TP  dy dz
b s δxe δxe
Z fZ n Z fZ n
ke ke
= TE dy dz − TP dy dz
b s δxe b s δxe
Z fZ n Z fZ n
ke ke
= TE dy dz − TP dy dz
δxe b s δxe b s
ke ke
= TE [y]ns [z]fb − TP [y]ns [z]fb
δxe δxe
ke ke
= TE (∆y ∆z)e − TP (∆y ∆z)e
δxe δxe
ke ∆Ae ke ∆Ae
= TE − TP
δxe δxe

O
Onde lembramos que ∆Ae = (∆y ∆z)e é a área que separa a partição P da
partição E. H
Analogamente, para a segunda parcela de I1 teremos,
UN
kw ∆Aw kw ∆Aw
Z fZ n !
kw kw
− TP − TW dy dz = − TP + TW
b s δxw δxw δxw δxw
SC

Resulta que
ke ∆Ae ke ∆Ae kw ∆Aw kw ∆Aw
I1 = TE − TP − TP + TW
δxe δxe δxw δxw
RA

E chegamos ao resultado de I1 , a discretização da primeira parcela de


nossa equação descritiva:

Z f Z nZ e" !#
∂T∂
I1 = k dx dy dz
b s w ∂x ∂x
(3.1)
ke ∆Ae kw ∆Aw ke ∆Ae kw ∆Aw
!
=− + TP + TE + TW
δxe δxw δxe δxw

Aplica-se metodologia análoga para o cálculo da segunda parcela da equa-


ção descritiva:
Z f Z eZ n" !#
∂ ∂T
I2 = k dy dx dz.
b w s ∂y ∂y

R. Heringer – 27
3. Volumes Finitos 3.3. Discretização da Equação Diferencial

obtendo4
Z f Z eZ n" !#

∂T
I2 = k dy dx dz
b w s ∂y ∂y
(3.2)
kn ∆An ks ∆As kn ∆An ks ∆As
!
=− + TP + TN + TS
δyn δys δyn δys

Usamos ∆An = (∆x ∆z)n é a área que separa a partição P da partição


N . ∆As = (∆x ∆z)s é a área que separa a partição P da partição S
Somando os dois últimos resultados (soma que chamaremos de I∆V ) e
igualando à zero, teremos a integral completa da equação de difusão em re-
gime permanente, ou seja, teremos uma equação algébrica associada à nossa
equação descritiva para uma partição P qualquer de nossa malha computa-
cional:

O
ke ∆Ae kw ∆Aw kn ∆An ks ∆As
!
I∆V = I1 + I2 = − + + H + TP
δxe δxw δyn δys
ke ∆Ae kw ∆Aw kn ∆An ks ∆As
+ TE + TW + TN + TS = 0
UN
δxe δxw δyn δys
(3.3)
ou

aP TP − ae TE − aw TW − an TN − as TS = 0, (3.4)
SC

onde fizemos
ke ∆Ae
!
RA

ae = , (3.5)
δxe
kw ∆Aw
!
aw = , (3.6)
δxw
kn ∆An
!
an = , (3.7)
δyn
ks ∆As
!
as = , (3.8)
δys
ke ∆Ae kw ∆Aw kn ∆An ks ∆As
!
aP = + + + = ae + aw + an + as .
δxe δxw δyn δys
(3.9)
4
O aluno deverá refazer os passos e não adotar o resultado apresentado.

R. Heringer – 28
3. Volumes Finitos 3.3. Discretização da Equação Diferencial

Note que, como se trata de um caso bidimensional, basta fazer ∆z = 1


nas equações acima. Além disso, como a malha computacional é uniforme
podemos até omitir alguns índices. Teremos então:

∆Ae = ∆yP × 1 = ∆y,

∆Aw = ∆yP × 1 = ∆y,


∆An = ∆xP × 1 = ∆x,
∆As = ∆xP × 1 = ∆x.

3.3.2 DIFUSÃO BIDIMENSIONAL EM REGIME TRAN-


SIENTE

O
A condução de calor bidimensional em regime transiente é descrita pela equa-
ção diferencial 2.10, vista na seção 2.2: H
! !
∂T ∂ ∂T ∂ ∂T
ρc = k + k . (3.10)
UN
∂t ∂x ∂x ∂y ∂y
Embora não seja necessário, antes de prosseguir, faremos a consideração
de que ρ c não varia dentro de cada partição de volume. Além de simplificar
a escrita, isso nos permitirá apresentar o termo de difusivividade, e deixar
SC

clara a simetria entre difusão térmica, difusão mássica e difusão de quanti-


dade de movimento. No entanto, ao final da integração retornaremos ρ c e k.
Assim podemos fazer:
RA

! !
∂T ∂ k ∂T ∂ k ∂T
= + . (3.11)
∂t ∂x ρ c ∂x ∂y ρ c ∂y
e escreveremos
k
Γ= .
ρc
A quantidade ρkc é o coeficiente de difusividade térmica ou apenas di-
fusividade térmica. Note a simetria com a difusividade de massa, onde o
coeficiente de difusividade D aparece na lei de Fick, bem como com a
difusividade de quantidade de movimento, onde o coeficiente de difusividade
é a viscosidde cinemática ν = µρ , µ sendo a viscosidade dinâmica. Veja que
as unidades são as mesmas:
" # " #
k µ
= [D] = = m2 s−1 .
ρc ρ

R. Heringer – 29
3. Volumes Finitos 3.3. Discretização da Equação Diferencial

Dito isso, nossa equação de difusão passa a ser escrita da seguinte forma
! !
∂T ∂ ∂T ∂ ∂T
= Γ + Γ .
∂t ∂x ∂x ∂y ∂y

Para regime permanente não tinhamos o termo de variação temporal.


Para integrar os termos de variação espacial construímos uma malha divi-
dindo o volume de controle em pequenas partições. Faremos algo semelhante
para o tempo. Vamos considerar avanços no tempo em passos finitos de t à
t + ∆t. Desta forma, além da integração espacial como para regime perma-
nente, integraremos a equação anterior para o volume ∆VP da partição P e
para cada variação no tempo de t à t + ∆t. A integração fica, então

Z t+∆t Z zf Z yn Z xe " #
∂T
dx dy dz dt
∂t

O
t zb ys xw
Z t+∆t Z zf Z yn Z xe " ! !#
∂ ∂T ∂ ∂T
= Γ +
H Γ dx dy dz dt
t zb ys xw ∂x ∂x ∂y ∂y

Assim como antes, vamos simplificar também a escrita dos limites das
UN
integrais usando a seguinte notação:

Z t+∆t Z f Z n Z e " #
∂T
dx dy dz dt
SC

t b s w ∂t
Z t+∆t Z f Z n Z e " ! !# (3.12)
∂ ∂T ∂ ∂T
= Γ + Γ dx dy dz dt
t b s w ∂x ∂x ∂y ∂y
RA

Vamos começar pelas integrais do lado esquerdo da equação acima, que


chamaremos de I1 , onde será conveniente inverter a ordem de integração
como segue.
Z f Z n Z e Z t+∆t " #
∂T
I1 = dt dx dy dz
b s w t ∂t
A integração em t é direta, resultando em

Z f Z nZ e Z f Z nZ e
I1 = [T ](t+∆t)
t dx dy dz = [T (t + ∆t) − T (t)] dx dy dz
b s w b s w

Doravante faremos T (t) = T 0 e T (t + ∆t) = T . Omitimos o índice para o


tempo t + ∆t para deixar claro que este é o tempo para o qual a variável será

R. Heringer – 30
3. Volumes Finitos 3.3. Discretização da Equação Diferencial

calculada (é desconhecida), enquanto T 0 é a variável cujo valor é conhecido


do tempo anterior.
Z f Z nZ e 
I1 = T − T 0 dx dy dz
b s w
Aplicaremos a consideração, típica dos métodos numéricos, de que a va-
riável é uniforme em cada partição. Ou seja, T não varia entre os limites de
integração e x, y e z. Assim, fazendo T = TP na partição P ,

  Z f Z nZ e  
I1 = T − T 0
dx dy dz = TP − TP0 ∆xP ∆yP ∆zP
P b s w

Como ∆VP = ∆xP ∆yP ∆zP , então,


 
I1 = TP − TP0 ∆VP (3.13)

O
Passemos agora ao lado direito da equação 3.12, o qual chamaremos de
It,∆V , H
Z t+∆t Z f Z n Z e " ! !#
∂ ∂T ∂ ∂T
UN
It,∆V = Γ + Γ dx dy dz dt.
t b s w ∂x ∂x ∂y ∂y
As integrais no espaço são análogas as que já foram calculadas para regime
permanente, cujo resultado é a equação 3.3. Usando essa analogia podemos
SC

escrever,


Γe ∆Ae Γw ∆Aw Γn ∆An Γs ∆As
Z t+∆t !
RA

It,∆V = − + + + TP
t δxe δxw δyn δys

Γe ∆Ae Γw ∆Aw Γn ∆An Γs ∆As 
+ TE + TW + TN + TS dt
δxe δxw δyn δys

Mais uma vez, vamos precisar fazer considerações de forma a tornar pos-
sível resolver a integral acima, pois não sabemos de antemão como as tem-
peraturas variam com o tempo (na verdade é o que queremos calcular). De
maneira semelhante ao procedimento usado nas integrais de espaço, vamos
nos valer do fato de que o passo de tempo ∆t é pequequeno o suficiente
para adotarmos algum perfil conveniente para T (t). É usual fazer a seguinte
suposição:
Z t+∆t h i
TP dt = f TP + (1 − f ) TP0 ∆t (3.14)
t

R. Heringer – 31
3. Volumes Finitos 3.3. Discretização da Equação Diferencial

Onde f é um fator que varia de 0 a 1. Como antes, a variável sem índice


superior é avaliada no tempo t + ∆t e a com índice 0 refre-se ao tempo t.
Note que, se f = 1, Z t+∆t
TP dt = TP ∆t
t
Ou seja, significa considerar que durante todo o intervalo semi-aberto (t, t +
∆t], a temperatura permanece com um valor constante e igual ao valor T (t +
∆t). Essa é a formulação dita implícita.
Ao contrário, se f = 0,
Z t+∆t
TP dt = TP0 ∆t
t

Ou seja, significa considerar que durante todo o intervalo semi-aberto [t, t +


∆t), a temperatura permanece com um valor constante e igual ao valor do
tempo t, T (t) = TP0 . Essa é a formulação dita explícita, pois permitirá em

O
muitos casos calcular T explicitamente já que os valores das outras variáveis
da equação algébrica resultante dessa formulação serão todas conhecidas do
tempo anterior t.
H
Para não generalizar mais do que o necessário neste texto introdutório,
UN
usaremos apenas a formulação implícita (f = 1). Porém não há dificuldades
maiores no uso de um f qualquer entre 0 e 1.
Aplicaremos a mesma consideração para as integrais envolvendo as variá-
veis TE , TW , TN e TS . Usando isso em It , ∆V ,
SC


Γe ∆Ae Γw ∆Aw Γn ∆An Γs ∆As
!
It,∆V =− + + + TP
δxe δxw δyn δys
RA


Γe ∆Ae Γw ∆Aw Γn ∆An Γs ∆As 
+ TE + TW + TN + TS ∆t
δxe δxw δyn δys
(3.15)
Note que este resultado implica que fizemos Γ constante durante cada
intervalo de tempo ∆t. Sendo assim, neste ponto vamos reverter Γ = ρkc e
escrever,


∆t  ke ∆Ae kw ∆Aw kn ∆An ks ∆As
!
It,∆V = − + + + TP
ρc δxe δxw δyn δys

ke ∆Ae kw ∆Aw kn ∆An ks ∆As 
+ TE + TW + TN + TS
δxe δxw δyn δys
(3.16)

R. Heringer – 32
3. Volumes Finitos 3.3. Discretização da Equação Diferencial

Basta agora igualar o resultado para It,∆V , acima, com I1 (equação 3.13)
para obter o resultado da integração 3.12:


∆t  ke ∆Ae kw ∆Aw kn ∆An ks ∆As
!
 
TP − TP0 ∆VP = − + + + TP
ρc δxe δxw δyn δys

ke ∆Ae kw ∆Aw kn ∆An ks ∆As 
+ TE + TW + TN + TS
δxe δxw δyn δys

Rearranjando chegamos a equação algébrica final assiociada à discretiza-


ção da equação diferencial descritiva da difusão bidimensional transiente:

ρ c ∆VP ke ∆Ae kw ∆Aw kn ∆An ks ∆As


!
+ + + + TP
∆t δxe δxw δyn δys

O
ke ∆Ae kw ∆Aw kn ∆An ks ∆As ρ c∆VP 0
= TE + TW + TN + TS + TP
δxe δxw δyn H
δys ∆t
(3.17)
Ou, usando notação de coeficientes,
UN

aP TP = ae TE + aw TW + an TN + as TS + b (3.18)

onde,
SC

ke ∆Ae
ae = , (3.19)
δxe
kw ∆Aw
RA

aw = , (3.20)
δxw
kn ∆An
an = , (3.21)
δyn
ks ∆As
as = , (3.22)
δys
ρ c ∆VP
b = a0P TP0 , com a0P = , (3.23)
∆t
ke ∆Ae kw ∆Aw kn ∆An ks ∆As ρ c ∆VP
!
aP = + + + + (3.24)
δxe δxw δyn δys ∆t
= ae + aw + an + as + aP .
0
(3.25)

R. Heringer – 33
3. Volumes Finitos 3.3. Discretização da Equação Diferencial

3.3.3 DIFUSÃO BIDIMENSIONAL EM REGIME TRAN-


SIENTE COM GERAÇÃO DE ENERGIA
Vimos na página 10 que o termo taxa de geração de calor na equação da
conservação da energia é ρ Q̇. Portanto a difusão bidimensional em regime
transiente com geração de energia no sistema cartesiano é descrita pela se-
guinte equação diferencial:
! !
∂T ∂ ∂T ∂ ∂T
ρc = k + k + ρ Q̇. (3.26)
∂t ∂x ∂x ∂y ∂y
Podemos nos concentrar apenas na última parcela, pois dos parágrafos
anteriores já sabemos o resultado da integração de todas as outras parcelas.
Façamos

S = ρ Q̇

O
S é também chamado de termo fonte. Essa expressão é conveniente pois
nem sempre trataremos com a equação de condução de calor. Portanto nem
H
sempre teremos geração de energia. Note o caso de difusão de espécie quí-
mica, o termo fonte será a geração de espécies químicas. Por exemplo, na
UN
reação do carbono e oxigênio, há o consumo desssas duas espécies e a geração
de gás carbônico. Assim SCarbono e SOxigênio são negativos, enquanto o SCO2
é positivo.
Queremos integrar S de t a t + ∆t e em ∆VP :
SC

Z t+∆t Z f Z n Z e
S dx dy dz dt
t b s w
RA

Lembrando do cálculo temos o teorema do valor médio:


Z f Z nZ e
S dx dy dz = S ∆xP ∆yP ∆zP = S ∆VP
b s w

Onde S é a média de S em ∆xP . Usando o teorema,


Z t+∆t Z f Z n Z e Z t+∆t Z t+∆t
S dx dy dz dt = S ∆VP dt = ∆VP S dt
t b s w t t

Resta-nos integrar no tempo. A partir daqui seguem-se as mesmas opções


feitas à partir da equação 3.14 e, novamente, faremos f = 1, para obter,
Z t+∆t Z f Z n Z e
S dx dy dz dt = ∆VP S ∆t
t b s w

R. Heringer – 34
3. Volumes Finitos 3.3. Discretização da Equação Diferencial

Devemos estar atentos ao fato de que é muito comum que o termo fonte
(geração de calor, em nosso caso) seja fortemente dependente da variável de-
pendente. Por exemplo, considere que a geração de energia em nosso caso
seja resultado de uma reação química exotérmica no sistema. A cinética das
reações químicas (e portanto a taxa de geração de calor gerado por elas)
depende da temperatura. Uma das maneiras de incluir isso em nossos resul-
tados é a linearização do termo fonte, propondo o que segue

S = SP TP + SC .
Onde SP e SC são constantes que devem ser determinadas de acordo com o
caso a ser resolvido.
Usando agora o resultado da integração do caso transiente apresentado
na equação 3.17, obteremos o resultado final da equação algébrica associada
à discretização da equação 3.26, que é a equação difusão bidimensional em
regime transiente com geração de energia no sistema cartesiano,

O
ρ c ∆VP
∆t
+
ke ∆Ae kw ∆Aw kn ∆An ks ∆As
δxe
+
δxw
+
δyn
+
H δys
− SP ∆VP
!
TP
UN
ke ∆Ae kw ∆Aw kn ∆An ks ∆As
= TE + TW + TN + TS
δxe δxw δyn δys
ρ c ∆VP 0
+ TP + SC ∆VP
∆t
SC

(3.27)
Ou, usando notação de coeficientes,

aP TP = ae TE + aw TW + an TN + as TS + b (3.28)
RA

R. Heringer – 35
3. Volumes Finitos 3.4. Condições de Contorno

onde,
ke ∆Ae
ae = , (3.29)
δxe
kw ∆Aw
aw = , (3.30)
δxw
kn ∆An
an = , (3.31)
δyn
ks ∆As
as = , (3.32)
δys
ρ c ∆VP
b = a0P TP0 + SC ∆VP , com a0P = , (3.33)
∆t
ke ∆Ae kw ∆Aw kn ∆An ks ∆As ρ c ∆VP
!
aP = + + + + − SP ∆VP
δxe δxw δyn δys ∆t
(3.34)

O
= ae + aw + an + as + a0P . (3.35)
H
UN
3.4 CONDIÇÕES DE CONTORNO
Devemos agora decidir como levaremos em conta nossas condições de con-
SC

torno, ou seja como "informar" as condições de contorno aos pontos nodais


internos. Há várias técnicas para isso. Usaremos uma técnica cujo princípio
é a definição de volumes nulos sobre a fronteira.
RA

Para entender essa técnica, considere a partição de volume nulo w4 da


figura 3.4. Para ela temos:

∆Aw4−4 = ∆zw4 ∆yw4 = 1 ∆y4 = ∆y4 m2 ,

pois ∆zw4 = 1 e ∆yw4 = ∆y4 .


E o volume da partição w4 é

∆Vw4−4 = ∆zw4 ∆yw4 ∆xw4 = 1 × ∆y4 × 0 = 0 m3 ,

pois w4 tem espessura nula (∆xw4 = 0). Para as outras partições sobre a
fronteira segue-se raciocínio análogo.
Temos agora condições de calcular ∆x e ∆y, ∆A e ∆V para qualquer
ponto nodal e ainda as distâncias δx e δy entre quaisquer nós vizinhos. Ve-
remos na questão seguinte que, para a malha estruturada uniforme e para

R. Heringer – 36
3. Volumes Finitos 3.4. Condições de Contorno

Figura 3.8: Inclusão de volumes nulos (mas áreas não nulas) sobre as fron-

O
teiras com seus respectivos pontos nodais.
H
regime permanente, estes valores serão irrelevantes, importando apenas as
relações entre eles. Porém, para outros casos devemos dispor de todos os
UN
dados da malha.
Para incluir as condiçoes de contorno em nossa análise numérica pelo
método dos volumes finitos, vamos considerar agora uma partição P de vo-
lume, desta vez situada junto a uma das fornteiras. A figura 3.4 mostra um
SC

exemplo em que P é uma partição junto à fronteira à esquerda do domínio.

3.4.1 CONDIÇÕES DE DIRICHLET OU DO PRI-


RA

MEIRO TIPO
As condições de contorno de Dirichlet são aplicáveis quando os valores das
variáveis dependentes são conhecido na fronteira.
Considere a figura 3.4. Trabalhando com a temperatura, seja TwP o valor
conhecido da temperatura na fronteira wP da figura. Sendo qw o fluxo difusivo
que cruza a fronteira esquerda da partição P . Vimos na equação 3.3.1, página
25, que o fluxo que cruza a fronteira esquerda de uma partição P qualquer é
aproximado por:
" #
∂T kw kw
qw = k = TP − TW
∂x w
δxw δxw
Mas no caso da figura 3.4, W = wP , TW = TwP e δxw = ∆xP
2
= δxwP .
Assim,

R. Heringer – 37
3. Volumes Finitos 3.4. Condições de Contorno

O
Figura 3.9: Nó P na fronteira esquerda.

kwP
H
kwP
qwP =
UN
TP − TwP
δxwP δxwP
Lembre-se que TwP não é incógnita e sim um dado do problema de valor
de contorno prescrito. Usando o resultado acima nas equações 3.27, temos
SC

ρ c ∆VP ke ∆Ae kwP ∆Aw kn ∆An ks ∆As


!
+ + + + − SP ∆VP TP
∆t δxe δxwP δyn δys
RA

ke ∆Ae kw ∆Aw kn ∆An ks ∆As


= TE + P TwP + TN + TS ,
δxe δxwP δyn δys
ρ c ∆VP 0
+ TP + SC ∆VP
∆t
(3.36)
onde destacamos em vermelho as consequências da temperatura prescrita em
k P ∆Aw
wP . Note que o termo wδxwP
TwP não é incógnito. Sendo assim agruparemos
este termo com os termos fontes, como segue:

R. Heringer – 38
3. Volumes Finitos 3.4. Condições de Contorno

ρ c ∆VP ke ∆Ae kwP ∆Aw kn ∆An ks ∆As


!
+ + + + − SP ∆VP TP
∆t δxe δxwP δyn δys
ke ∆Ae kn ∆An ks ∆As
= TE + TN + TS
δxe δyn δys
ρ c ∆VP 0 kw ∆Aw
+ TP + SC ∆VP + P TwP
∆t δxwP
(3.37)
Usando notação de coeficientes,

aP TP = ae TE + an TN + as TS + b (3.38)

onde,
ke ∆Ae

O
ae = , (3.39)
δxe
aw = 0, note que fazer aw = 0 é uma das maneiras de se obter a equação 3.38
H (3.40)
kn ∆An
UN
an = , (3.41)
δyn
ks ∆As
as = , (3.42)
δys
SC

kw ∆Aw ρ c ∆VP
b = a0P TP0 + SC ∆VP + P TwP , com a0P = , (3.43)
δxwP ∆t
ke ∆Ae kwP ∆Aw kn ∆An ks ∆As ρ c ∆VP
!
aP = + + + + − SP ∆VP .
RA

δxe δxwP δyn δys ∆t


(3.44)

Note que o fluxo que cruza a fronteira wP foi incluida na resolução nu-
mérica como se fosse um termo fonte em P .

3.4.2 CONDIÇÕES DE NEUMANN OU DO SEGUNDO


TIPO
A condição de Neumann é aplicável quando o fluxo é conhecido na fronteira.
No caso do campo de temperatura isso implica que conhecemos o fluxo de
calor na fronteira. Considerando a figura 3.4, e que QwP este valor conhecido,
então,
qwP = QwP

R. Heringer – 39
3. Volumes Finitos 3.4. Condições de Contorno

Ou seja, comparando com os resultados discretizados,


kwP kwP
qwP = TP − TwP = QwP
δxwP δxwP
Como consequência, temos
ρ c ∆VP ke ∆Ae kn ∆An ks ∆As
!
+ + + − SP ∆VP TP
∆t δxe δyn δys
ke ∆Ae kn ∆An ks ∆As ρ c ∆VP 0
= TE + TN + TS + TP + SC ∆VP + QwP
δxe δyn δys ∆t
(3.45)
Ou, usando notação de coeficientes,

aP TP = ae TE + an TN + as TS + b (3.46)

onde,

O
ke ∆Ae
ae = , H (3.47)
δxe
aw = 0, note que fazer aw = 0 é uma das maneiras de se obter a equação 3.46
UN
(3.48)
kn ∆An
an = , (3.49)
δyn
ks ∆As
SC

as = , (3.50)
δys
ρ c ∆VP
b = a0P TP0 + SC ∆VP + QwP , com a0P = , (3.51)
∆t
RA

ke ∆Ae kn ∆An ks ∆As ρ c ∆VP


!
aP = + + + − SP ∆VP . (3.52)
δxe δyn δys ∆t

3.4.3 CONDIÇÕES DO TERCEIRO TIPO


Este tipo de condição de contorno é geralmente aplicável quando a fronteira
está em contato com fluidos e a transferência de calor para a vizinhança é
convectivo. Este tipo de transporte pode ser modelado pela lei de resfria-
mento de Newton, que diz

qwP = h (TwP − T∞ )
Onde consideramos a notação da figura 3.4, de forma que TwP é a temperatura
na face wP . h é o coeficiente de transferência de calor por convecção, e T∞ é
a temperatura do fluido da vizinhança.

R. Heringer – 40
3. Volumes Finitos 3.4. Condições de Contorno

A equação acima dá o fluxo que cruza a fronteira. Vimos antes que este
fluxo pode também ser contabilizado avaliando a condução da fronteira wP
para o ponto P por condução:
" #
∂T kwP kwP
qwP = k = TP − TwP
∂x wP
δxwP δxwP
Note que TwP não é disponível, ao contrário de T∞ que, ao se usar o
modelo de resfriamento de Newton, subentende-se que pode ser obtido. Para
colocar a condição de contorno apenas em função de TP e T∞ , basta igualar
as duas últimas equações e rearranjar para obter
1
qwP = ! (TP − T∞ )
1 δxwP

h kwP
Comparando com os resultados da discretização da equação difusão bidi-

O
mensional em regime transiente com geração de energia no sistema cartesiano,
podemos fazer H
 
UN
 ρ c ∆VP ke ∆Ae ∆Aw kn ∆An ks ∆As
 
+ + !+ + − SP ∆VP 

 TP

 ∆t δxe 1 δxwP δyn δys



h kwP
ke ∆Ae kn ∆An ks ∆As
SC

= TE + TN + TS
δxe δyn δys
ρ c ∆VP 0 ∆Aw
+ TP + SC ∆VP + ! T∞
∆t 1 δxwP
RA


h kwP
(3.53)
Usando notação de coeficientes,

aP TP = ae TE + an TN + as TS + b (3.54)

R. Heringer – 41
3. Volumes Finitos 3.5. Sistema Algébrico de Equações

onde,
ke ∆Ae
ae = , (3.55)
δxe
aw = 0, note que fazer aw = 0 é uma das maneiras de se obter a equação 3.54
(3.56)
kn ∆An
an = , (3.57)
δyn
ks ∆As
as = , (3.58)
δys
∆Aw ρ c ∆VP
b = a0P TP0 + SC ∆VP + ! T∞ , com a0P = , (3.59)
1 δxwP ∆t

h kwP
 

 ke ∆Ae ∆Aw kn ∆An ks ∆As ρ c ∆VP

O
 
aP = + !+ + + − SP ∆VP 

.

 δxe

1 δxwP δyn δys ∆t


h kwP
H (3.60)
UN

3.5 SISTEMA ALGÉBRICO DE EQUAÇÕES


SC

Neste parágrafo vamos usar os resultados das discretizações anteriores e apre-


sentar o sistema de equações algébricas correspondente. Um exemplo numé-
rico aplicado à malha da figura 3.5 servirá de exemplo.
RA

O sistema algébrico com N + 1 equações e N + 1 incógnitas, numeradas


por conveniência de 0 a N , pode ser obtido diretamente das equações discre-
tizadas. Por exemplo, para regime permanente usa-se a equação 3.3 para os
pontos internos e equações como 3.38 para os pontos de fronteira. Usando
as notações das figuras 3.5 e 3.4, faremos como segue:

Integração para o volume 0: a0 T0 + a1 T1 + a2 T3 + ... + aN TN = b0


Integração para o volume 1: a0 T0 + a1 T1 + a2 T3 + ... + aN TN = b1
..
.
Integração para o volume N : a0 T0 + a1 T1 + a2 T3 + ... + aN TN = bN
onde bi , i = 0, 1, . . . , N , são constantes conhecidas.
Usando as equações 3.3 e/ou 3.38, podemos adequar os valores dos coe-
ficientes, como segue:

R. Heringer – 42
3. Volumes Finitos 3.5. Sistema Algébrico de Equações

• Nó 0: aP TP = a0 T0 , aw = aw0 = 0, ae TE = a0e T1 , as = as0 =


0, an TN = a0n T4 ,
com os demais coeficientes são nulos.

• Nó 1: aP TP = a1 T1 , aw TW = a1w T0 , ae TE = a1e T2 , as = as0 =


0, an TN = a1n T5 ,
com os demais coeficientes são nulos.
...

• Nó 5: aP TP = a5 T5 , aw TW = a5w T4 , ae TE = a5e T6 , as TS = a5s T2 , an TN =


a5n T9 ,
com os demais coeficientes são nulos.
...

• Nó N : aP TP = aN TN , aw TW = aN w T(N −1) , ae = aeN = 0, as TS =


aN s T(N −Nx ) ,

O
an = anN = 0, com os demais coeficientes são nulos.
H
Aqui, Nx é o número de nós na direção x, de maneira que T(N −Nx ) é a
temperatura do nó ao sul do nó N . Em nosso caso, cada equação foi gerada
UN
pela integração da equação diferencial para cada partição de volume 0 a N ,
como indicado.
O exemplo seguinte ilustra o que foi dito.
SC
RA

R. Heringer – 43
3. Volumes Finitos 3.5. Sistema Algébrico de Equações

Exemplo 3.1 : Calcule a equação algébrica associada ao modelo mate-


mático de condução bidimensional de calor em regime permanente dado
pelas equações 2.5 à 2.9, para cada uma das 16 partições da malha apre-
sentada na figura 3.5.

Resposta
Para responder à questão, é suficiente calcular os coeficientes da equação
3.3 para cada nó da malha. Para tanto, sabemos que as dimensões do
domínio são L = M = 100 mm. Sabemos também que é uma malha
uniforme que contém 16 partições, 4 divisões na direção x e 4 na direção y.
Como a malha é uniforme, então ∆x = ∆y = δx = δy = 100/4 = 25 mm
para todos os nós. Calcula-se então os coeficientes como na equação 3.3
para cada uma das 16 partições de nossa malha computacional, fazendo
P = 0, P = 1, etc.

O
Para os nós juntos às fronteiras, aplica-se à condição de Dirichlet, pois
neste exemplo as temperaturas são prescritas nas fronteiras. Sendo as-
H
sim, os coeficientes das equações algébricas para esses nóes devem ser
calculados segundo a equação 3.36.
UN
Feito isso, teremos como resultado da discretização de nossa equação
diferencial, para a malha proposta, um sistema algébrico contendo 16
equações e 16 incógnitas (T0 , T1 , . . . , T15 ) como segue.
SC

Nó 0: 6 T0 − T1 − T4 = 150
Nó 1: − T0 + 5 T1 − T2 − T5 = 100
Nó 2: − T1 + 5 T2 − T3 − T6 = 100
RA

Nó 3: − T2 + 6 T3 − T7 = 250
Nó 4: − T0 + 5 T4 − T5 − T8 = 50
Nó 5: − T1 − T4 + 4 T5 − T6 − T9 = 0
Nó 6: − T2 − T5 + 4 T6 − T7 − T10 = 0
Nó 7: − T3 − T6 + 5 T7 − T11 = 150
Nó 8: − T4 + 5 T8 − T9 − T12 = 50
Nó 9: − T5 − T8 + 4 T9 − T10 − T13 = 0
Nó 10: − T6 − T9 + 4 T10 − T11 − T14 = 0
Nó 11: − T7 − T10 + 5 T11 − T15 = 150
Nó 12: − T8 + 6 T12 − T13 = 250
Nó 13: − T9 − T12 + 5 T13 − T14 = 200
Nó 14: − T10 − T13 + 5 T14 − T15 = 200
Nó 15: − T11 − T14 + 6 T15 = 350
R. Heringer – 44
3. Volumes Finitos 3.5. Sistema Algébrico de Equações

Vamos agora colocar o sistema algébrico em sua forma matricial. Antes,


porém, para simplificar a escrita e tornar inequívoco que, por exemplo, o
coeficiente a0 da equação do volume 1 não é o mesmo a0 da equação 2 e
de qualquer das outras equações, vamos incluir um índice correspondente ao
número da equação, como segue:

Equação 0: a0,0 T0 + a0,1 T1 + a0,2 T2 + · · · + a0,N TN = b0


Equação 1: a1,0 T0 + a1,1 T1 + a1,2 T2 + · · · + a1,N TN = b1
..
.
Equação N : aN ,0 T0 + aN ,1 T1 + aN ,2 T2 + · · · + aN ,N TN = bN

Podemos simplificar a escrita ainda mais usando a forma matricial:

O
· · · a0,N
    
a0,0 a0,1 a0,2 T0
H b0

a1,0 a1,1 a1,2 · · · a1,N   T1 
 
 b1 
 
.. .. ..   ..  =  .. 
.. 


...    
. . . .  .   . 

UN

aN ,0 aN ,1 aN ,2 · · · aN ,N TN bN
Ou ainda
At = b (3.61)
SC

onde:

· · · a0,N
     
a0,0 a0,1 a0,2 T0 b0
RA


a1,0 a1,1 a1,2 · · · a1,N   T1 
 
 b1 
 
A = .. .. .. ..  t =  ..  b = 
 .. 
 

..  

 . . . . . 

 . 

 . 
aN ,0 aN ,1 aN ,2 · · · aN ,N TN bN

Embora usemos a letra T maiúscula para a temperatura, nas definições


acima adotamos letra maiúscula em negrito para matriz e minúscula em ne-
grito para vetores, o que é usual nos textos de álgebra. Vetor aqui é uma
matriz de uma única coluna ou uma única linha e tem as mesmas proprieda-
des, no espaço de 16 dimensões no qual está definido, dos vetores definidos
no R3 aos quais estamos habituados na física (vetor velocidade, etc).

R. Heringer – 45
3. Volumes Finitos 3.6. Resolução do Sistema Algébrico

Exemplo 3.2 : Calcule os componentes da matriz A e do vetor b, para


o caso do exemplo 1).
Para escrever a matriz A basta buscar na resposta do exercício 1 os
valores dos coeficientes aij que multiplicam as temperaturas. A parcela
ij ausente daquelas equações correspondem à coeficientes nulos (aij = 0)
em nossa matriz. Os componentes bj do vetor b são as constantes do
lado direito de cada equação naquele exercício. Temos então,
    
6 −1 0 0 −1 0 0 0 0 0 0 0 0 0 0 0 T0 100
−1 5 −1 0 0 −1 0 0 0 0 0 0 0 0 0 0 T   60
  1   
    
 0 −1 5 −1 0 0 −1 0 0 0 0 0 0 0 0 0 T2   60
    
 0 0 −1 6 0 0 0 −1 0 0 0 0 0 0 0 0 T3  140
    
−1 0 0 0 5 −1 0 0 −1 0 0 0 0 0 0 0 T4 
    
 40
    
 0 −1 0 0 −1 4 −1 0 0 −1 0 0 0 0 0 0 T5   0
    

O
 0 0 −1 0 0 −1 4 −1 0 0 −1 0 0 0 0 0 T6   0
    
    
 0 0 0 −1 0 0 −1 5 0 0 0 −1 0 0 0 0 T7   80
  
 0 0 0 0 −1 0 0 0 5 −1 0 0 −1 0 0 0 T  H =  
 40
  8   
    
 0 0 0 0 0 −1 0 0 −1 4 −1 0 0 −1 0 0 T9   0
    
 0 0 0 0 0 0 −1 0 0 −1 4 −1 0 0 −1 0 T10 
UN
 0
    
 0 0 0 0 0 0 0 −1 0 0 −1 5 0 0 0 −1 T11   80
    
    
 0 0 0 0 0 0 0 0 −1 0 0 0 6 −1 0 0 T12  140
    
 0 0 0 0 0 0 0 0 0 −1 0 0 −1 5 −1 0 T  100
   13   
    
SC

 0 0 0 0 0 0 0 0 0 0 −1 0 0 −1 5 −1 T14  100


0 0 0 0 0 0 0 0 0 0 0 −1 0 0 −1 6 T15 180
(3.62)
.
RA

3.6 RESOLUÇÃO DO SISTEMA ALGÉBRICO


Obtido o sistema de equações algébricas associadas à equação diferencial, o
passo seguinte é a resolução deste sistema. Nos problemas típicos de enge-
nharia as matrizes envolvidas podem ser muito grandes, contando as vezes
com milhões de componentes. Sendo assim, usa-se algoritmos para a reso-
lução computacional destes sistemas. Além disso, métodos diretos não são
muito eficazes ou aplicáveis. Existem por outro lado vários métodos itera-
tivos. A escolha entre um ou outro depende da configuração da matriz de
coeficientes. No presente texto veremos o método de Gauss-Seidel e, no
caminho, apresentaremos o também o método de Jacobi.

R. Heringer – 46
3. Volumes Finitos 3.6. Resolução do Sistema Algébrico

Como visto no curso de Álgebra, há métodos diretos e métodos ite-


rativos para resolução de sistemas lineares de equações. Métodos diretos
são soluções analíticas do sistema de equações.
Um método iterativo é aquele em que, partindo de uma tentativa inicial
de solução para um problema, dispomos de um certo conjunto de operações
cujo resultado é uma outra solução aproximada do problema (a qual espera-
mos seja melhor do que a anterior), e que, por sua vez é usada para reali-
mentar o procedimento recursivamente. Cada passagem pelo procedimento
é uma iteração. O método será convergente se as iterações sucessivas con-
vergirem (tenderem) para uma solução única. As iterações param quando for
satisfeito um critério de convergência ou critério de parada. Um conjunto
de operações sucessivas e seu critério de parada é chamado algoritmo.
Passemos a apresentar o método de Jacobi e o método de Gauss-
Seidel.

O
3.6.1 MÉTODO DE JACOBI
H
Retomemos o sistema de N + 1 equações e N + 1 incógnitas. Arbitraremos
uma tentativa inicial de solução T0 = T00 , T1 = T10 , . . . , TN = TN0 , ou seja,
UN
Tj = Tj0 com j = 0, 1, . . . , N . Os superíndices 0 indicam valores arbitrados
inicialmente.
Com este conjunto de valores iniciais arbitrados usaremos as equações
algébricas para calcular um conjunto de soluções da seguinte forma:
SC

1
!
T01 = (−a0,1 T10 − a0,2 T20 − · · · − a0,N TN0 + b0 )
a0,0 !
RA

1
T11 = (−a1,0 T00 − a1,2 T20 − · · · − a1,N TN0 + b1 )
a1,1
..
.
1
!
 
TN1 = 0
−aN ,0 T00 − aN ,1 T10 − · · · − aN ,(N −1) T(N −1) + bN
aN ,N
(3.63)
Os superíndices 1 indicam que são valores obtidos usando a tentativa inicial
Tj0 . Obviamente, dificilmente Tj1 será uma boa solução para o problema,
já que foram obtidas a partir de uma tentativa inicial arbitrária. Podemos
melhorar nosso resultado, se usarmos o conjunto Tj1 para calcularmos Tj2 em
uma nova iteração (iteração 2):

R. Heringer – 47
3. Volumes Finitos 3.6. Resolução do Sistema Algébrico

1
!
T02 = (−a0,1 T11 − a0,2 T21 − · · · − a0,N TN1 + b0 )
a0,0 !
1
T12 = (−a1,0 T01 − a1,2 T21 − · · · − a1,N TN1 + b1 )
a1,1
..
.
1
!
 
TN2 = −aN ,0 T01 − aN ,1 T11 − · · · − aN ,(N −1) T(N
1
−1) + bN
aN ,N
(3.64)
Poderemos seguir neste processo iterativo sempre usando os resultados de
uma iteração anterior k para obtermos os resultados da iteração k+1, como
segue:

O
1 
!

(k+1)
T0 = −a0,1 T1k − a0,2 T2k − · · · − a0,N TNk + b0
a0,0 !
T1
(k+1)
=
1 
a1,1
−a1,0 T0k − a1,2 T2k − · · · − a1,N TNk + b1
H

..
UN
.
1
!
 
(k+1)
TN = −aN ,0 T0k − aN ,1 T1k − · · · − aN ,(N −1) T(N
k
−1) + bN
aN ,N
(3.65)
SC

Com isso esperamos que, à cada iteração, o resultado obtido seja melhor do
que o anterior, ou seja, esperamos que o procedimento iterativo convirja para
uma solução única, a solução do problema.
RA

Em geral, note que para a (k + 1)ésima iteração, podemos escrever a


equação para o n − ésimo nó (ou seja, para a temperatura do nó j = n)
como segue:


1 
 
Tn(k+1) = bn − an0 T0k − an1 T1k − · · · − an(n−1) T(n−1)
k
ann | {z }
j <n
 (3.66)
k
− an(n+1) T(n+1) − ··· − anN TNk .
| {z }
j >n

Ou, mais suscintamente,

R. Heringer – 48
3. Volumes Finitos 3.6. Resolução do Sistema Algébrico

 
1  n−1 N
  X   
Tn(k+1) = anj Tjk − anj Tjk . (3.67)
X
bn −
ann j=0 j=n+1
| {z }
Valor de -L no algoritmo

Para obtermos as temperaturas de todos os nós, devemos resolver todas


as equações n = 0, 1, . . ., N .
O procedimento iterativo acima é dito método de Jacobi e a equação 3.67
é sua equação recursiva. O algoritmo associado ao método de Jacobi para
nosso caso pode ser como segue (em nosso exemplo, N = 15).

Algoritmo 1: Algoritmo simples para o método de Jacobi


para j de 0 à N faça
Tj = Tj0 . (chute inicial para T de cada nó)

O
fim
k=0 H
enquanto o critério de parada não for satisfeito faça
para n de 0 à N faça
UN
L=0
para j de 0 à N faça
se j 6= n então
L = L + anj Tjk
SC

fim
fim
1
 
Tn(k+1)
= (bn − L)
RA

ann
k = k + 1.
fim
fim
Imprima Tj para j = 0, 1, · · · , N .
O critério de parada pode ser, por exemplo, enquanto k ≤ Klimite .

3.6.2 MÉTODO DE GAUSS-SEIDEL


Considere as equações equações 3.65 que permitem calcular o campo de tem-
peratura na iteração k + 1, tendo disponível o campo de temperatura cal-
culado na iteração anterior k. Note que, se as equações forem resolvidas na
(k+1)
ordem em que estão apresentadas, quando calculamos T0 para o nó 0
(1º equação) temos que usar os valores de T para os outros nós disponíveis
da iteração anterior. No entanto, na segunda equação, usada para calcular

R. Heringer – 49
3. Volumes Finitos 3.6. Resolução do Sistema Algébrico

(k+1) (k+1)
T1 do nó 1, a temperatura T0 da presente iteração k + 1 já está dis-
ponível, pois já foi calculada usando a primeira equação. Analogamente, na
(k+1) (k+1)
terceira equação, usada para calcular T2 do nó 2, as temperaturas T0
(k+1)
e T1 da presente iteração k+1 já estão disponíveis, pois já foram calcula-
das usando a primeira e segunda equações. De modo geral, ao calcularmos
a n-ésima equação na (k + 1)ésima iteração para obtermos Tn(k+1) , já conhe-
(k+1) (k+1) (k+1)
cemos T0 , T1 , . . ., T(n−1) da presente iteração. Sendo assim, esses
valores são uma melhor aproximação para o cálculo de Tn(k+1) do que aqueles
da iteração anterior. Essa é a idéia de base do Método de Gauss-Seidel. A
equação a seguir ilustra esse método:


1 
 
(k+1) (k+1) (k+1)
Tn(k+1) = bn − an0 T0 − an1 T1 − · · · − an(n−1) T(n−1)
ann | {z }
Parcelas com valores de T já conhecidos na presente iteração k+1

O

k
− an(n+1) T(n+1) − · · · − anN TNk  H
| {z }
Valores de T não conhecidos na iteração k+1
(3.68)
UN
Suscintamente,
 
1  n−1 N
 X   
Tn(k+1) = anj Tjk+1 − anj Tjk  (3.69)
X
bn −
ann
SC

j=0 j=n+1
| {z } | {z }
j<n j>n

A expressão 12 é a equação recursiva associada ao método de Gauss-Seidel


RA

para nosso caso.


Em geral, para um sistema linear com N equações e N incógnitas

Ax = b,

a equação recursiva do método de Gauss-Seidel será


 
1  n−1 N
 
X   
x(k+1) = anj xk+1 anj xkj .
X
n bn − j −
ann j=1 j=n+1

O algoritmo associado ao método de Gauss-Seidel para nosso caso pode


ser como segue.

R. Heringer – 50
3. Volumes Finitos 3.6. Resolução do Sistema Algébrico

Algoritmo 2: Algoritmo simples para o método de Gauss-Seidel


para j de 0 à N faça
Tj = Tj0 (chute inicial para T de cada nó)
fim
k=0
enquanto o critério de parada não for satisfeito faça
para n de 0 à N faça
L=0
G=0
para j de 0 à (n−1) faça
(k+1)
L = L + anj Tj
fim
para j de (n+1) à N faça
G = G + anj Tjk

O
fim
1
 
Tn(k+1)
= (bn − L − G)
ann H
fim
k = k + 1;
UN
fim
Imprima Tj para j = 0, 1, . . ., N .
O critério de parada pode ser, por exemplo, enquanto k ≤ Klimite .
SC
RA

R. Heringer – 51
Capítulo 4

CÓDIGOS
COMPUTACIONAIS

O
Nesta seção apresentaremos alguns exemplos de códigos em linguagem C para
resolução numérica de casos de difusão. Embora haja referência à tempera-
H
tura, os códigos apresentados podem ser usados para difusão, de modo geral.
São possíveis várias propostas para programação do algoritmo acima. As
propostas apresentadas abaixo são didáticas e por isso mantidas com poucos
UN
recursos para serem simples.

4.1 CÓDIGO COMPUTACIONAL PARA O


SC

MÉTODO DE GAUSS-SEIDEL
Consideremos o sistema algébrico descrito pela equação matricial 3.62, página
RA

46, repetido abaixo:

52
4. Códigos Computacionais 4.1. Código para o Método de Gauss-Seidel

    
6 −1 0 0 −1 0 0 0 0 0 0 0 0 0 0 0 T0 100
−1 5 −1 0 0 −1 0 0 0 0 0 0 0 0 0 0 T   60
  1   
    
 0 −1 5 −1 0 0 −1 0 0 0 0 0 0 0 0 0 T2   60
    
 0 0 −1 6 0 0 0 −1 0 0 0 0 0 0 0 0 T3  140
    
−1 0 0 0 5 −1 0 0 −1 0 0 0 0 0 0 0 T4 
    
 40
    
 0 −1 0 0 −1 4 −1 0 0 −1 0 0 0 0 0 0 T5   0
    
 0 0 −1 0 0 −1 4 −1 0 0 −1 0 0 0 0 0 T6   0
    
    
 0 0 0 −1 0 0 −1 5 0 0 0 −1 0 0 0 0 T7   80
  
 0 0 0 0 −1 0 0 0 5 −1 0 0 −1 0 0 0 T  =  
 40
  8   
    
 0 0 0 0 0 −1 0 0 −1 4 −1 0 0 −1 0 0 T9   0
    
 0 0 0 0 0 0 −1 0 0 −1 4 −1 0 0 −1 0 T10   0
    
 0 0 0 0 0 0 0 −1 0 0 −1 5 0 0 0 −1 T11   80
    
    
 0 0 0 0 0 0 0 0 −1 0 0 0 6 −1 0 0 T12  140
    

O
 0 0 0 0 0 0 0 0 0 −1 0 0 −1 5 −1 0 T  100
   13   
    
 0 0 0 0 0 0 0 0 0 0 −1 0 0 −1 5 −1 T14  100
0 0 0 0 0 0 0 0 0 0 H 0 −1 0 0 −1 6 T15 180

A seguir apresentamos um código escrito em linguagem C que calcula e


UN
imprime na tela as temperaturas T0 , T1 , · · · , T15 (vetor t) do sistema acima,
usando o método de Gauss-Seidel. Os componentes da matriz A e do vetor
b são fornecidos.
/∗
SC

1
2 P r o f Romulo H e r i n g e r
3 UFPB/CT
4 LABORATORIO DE MODELAGEM EM MATERIAIS
DISCIPLINA : MODELAGEM EM MATERIAIS
RA

5
6 Exemplo : Metodo de Gauss−S e i d e l
7 ∗/
8
9 #i n c l u d e <s t d i o . h>
10 #i n c l u d e < s t d l i b . h>
11 #i n c l u d e <math . h>
12
13 #d e f i n e NumeroDePontosDirecaoX 4
14 #d e f i n e NumeroDePontosDirecaoY 4
15

16 /∗ Fim das d e f i n i c o e s da malha ∗/


17
18 #d e f i n e EPSILON 1 . e −15
19
20 #d e f i n e PrimeiroPonto 0
21 #d e f i n e NumeroPontos ( NumeroDePontosDirecaoX ∗
NumeroDePontosDirecaoY )

R. Heringer – 53
4. Códigos Computacionais 4.1. Código para o Método de Gauss-Seidel

22 #d e f i n e UltimoPonto ( NumeroPontos + PrimeiroPonto − 1 )


23
24 /∗ V a r i a v e i s g l o b a i s ∗/
25 d o u b l e Phi [ NumeroPontos ] ;
26
27 // Matriz dos c o e f i c i e n t e s a i j f o r n e c i d a
28 d o u b l e A[ NumeroPontos ] [ NumeroPontos ] =
29 {
30 { 6 , −1 , 0 , 0 , −1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ,
31 {−1, 5 , −1 , 0 , 0 , −1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ,
32 { 0 , −1 , 5 , −1 , 0 , 0 , −1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ,
33 { 0 , 0 , −1 , 6 , 0 , 0 , 0 , −1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ,
34 {−1, 0 , 0 , 0 , 5 , −1 , 0 , 0 , −1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ,
35 { 0 , −1 , 0 , 0 , −1 , 4 , −1 , 0 , 0 , −1 , 0 , 0 , 0 , 0 , 0 , 0 } ,
36 { 0 , 0 , −1 , 0 , 0 , −1 , 4 , −1 , 0 , 0 , −1 , 0 , 0 , 0 , 0 , 0 } ,
37 { 0 , 0 , 0 , −1 , 0 , 0 , −1 , 5 , 0 , 0 , 0 , −1 , 0 , 0 , 0 , 0 } ,
38 { 0 , 0 , 0 , 0 , −1 , 0 , 0 , 0 , 5 , −1 , 0 , 0 , −1 , 0 , 0 , 0 } ,
39 { 0 , 0 , 0 , 0 , 0 , −1 , 0 , 0 , −1 , 4 , −1 , 0 , 0 , −1 , 0 , 0 } ,

O
40 { 0 , 0 , 0 , 0 , 0 , 0 , −1 , 0 , 0 , −1 , 4 , −1 , 0 , 0 , −1 , 0 } ,
41 { 0 , 0 , 0 , 0 , 0 , 0 , 0 , −1 , 0 , 0 , −1 , 5 , 0 , 0 , 0 , −1} ,
42 { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , −1 , 0 , 0 , 0 , 6 , −1 , 0 , 0 } ,
H
43 { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , −1 , 0 , 0 , −1 , 5 , −1 , 0 } ,
44 { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , −1 , 0 , 0 , −1 , 5 , −1} ,
UN
45 { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , −1 , 0 , 0 , −1 , 6}
46 };
47
48 // Vetor das c o n s t a n t e s b j f o r n e c i d o
d o u b l e b [ NumeroPontos ] =
SC

49
50 {150 , 100 , 100 , 250 , 50 , 0 , 0 , 150 , 50 , 0 , 0 , 150 , 250 , 200 ,
200 , 350};
51

// Chute i n i c i a l
RA

52
53 double PhiI 0 . ;
54
55 /∗ Funcao p r i n c i p a l : Método de Gauss−S e i d e l ∗/
56 i n t main ( )
57 {
58 d o u b l e Phi0 [ NumeroPontos ] ;
59 double d i f , somatorio1 , somatorio2 ;
60 int i , j , f , p ,k , l ; ;
61 int m = 0;
62 f o r ( i =0; i<=UltimoPonto ; i ++){
63 Phi0 [ i ] = P h i I ;
64 Phi [ i ] = P h i I ;
65 }
66 do{
67 dif = 0.;
68 f o r ( i =0; i<=UltimoPonto ; i ++){
69 somatorio1 = 0 . ;

R. Heringer – 54
4. Códigos Computacionais4.2. Código para Difusão em Regime Permanente

70 f o r ( j =0; j <i ; j ++){


71 s o m a t o r i o 1 += A[ i ] [ j ] ∗ Phi [ j ] ;
72 }
73 somatorio2 = 0 . ;
74 f o r ( j =( i +1) ; j<=UltimoPonto ; j ++){
75 s o m a t o r i o 2 += A[ i ] [ j ] ∗ Phi0 [ j ] ;
76 }
77 Phi [ i ] = ( b [ i ] − s o m a t o r i o 1 − s o m a t o r i o 2 ) /A[ i ] [ i ] ;
78 d i f += f a b s ( Phi0 [ i ] − Phi [ i ] ) ;
79 };
80 p r i n t f ( " I t e r a c a o ␣%d , ␣ d i f ␣=␣ %8.2 e \n " ,++m, d i f ) ;
81 f o r ( i =0; i<=UltimoPonto ; i ++){
82 Phi0 [ i ] = Phi [ i ] ;
83 }
84
85 } w h i l e ( d i f >= EPSILON) ;
86 f o r ( i =0; i<=UltimoPonto ; i ++){
87 p r i n t f ( " \n%d\ t %6.2 l f " , i , Phi [ i ] ) ;

O
88 }
89 p r i n t f ( " \n " ) ;
90 return 1; H
91 }
UN

4.2 CÓDIGO COMPUTACIONAL PARA O


SC

DIFUSÃO BIDIMENSIONAL EM RE-


GIME PERMANENTE
RA

Consideremos agora o modelo matemático para o processo de transferência


de calor por condução, bidimensional, em um sólido fixo em relação a um
referencial cartesiano (x, y), com temperaturas conhecidas impostas nas fron-
teiras, em regime permanente, apresentado pelas equações 2.5 à 2.9, página
13.
São fornecidas as dimensões do domínio computacional, bem como o nú-
mero de partições da malha computacional. Na função coeficientes() o có-
digo calcula os coeficientes algébricos necessários para cálculo da temperatura
nos nós de uma malha com (M × N) nós. A seguir função gaussSeidel(),
cujo funcionamento foi visto na subseção anterior, lê estes valores e que cal-
cula as temperaturas T0 , T1 , · · · , T15 . As temperaturas são impressas na tela
pela função saida().
1 /∗
2 P r o f Romulo H e r i n g e r

R. Heringer – 55
4. Códigos Computacionais4.2. Código para Difusão em Regime Permanente

3 UFPB/CT
4 LABORATORIO DE MODELAGEM EM MATERIAIS
5 DISCIPLINA : MODELAGEM EM MATERIAIS
6 Exercicio 3
7 R e s o l u c a o de equacao d i f e r e n c i a l da d i f u s a o 2−D em r e g i m e
permanente , sem g e r a c a o
8 − Metodo dos Volumes F i n i t o s ;
9 − R e s o l u c a o do s i s t e m a l i n e a r p e l o Metodo de Gauss−S e i d e l ;
10 − Malha u n i f o r m e ;
11 Out . 2015
12 v e r s a o 1 ( sem i n t e r a c a o com u s u a r i o )
13 ∗/
14

15 #i n c l u d e <s t d i o . h>
16 #i n c l u d e < s t d l i b . h>
17 #i n c l u d e <math . h>
18
19 #d e f i n e ON 1

O
20 #d e f i n e OFF 0
21
22 /∗ D e f i n i c o e s do u s u a r i o ∗/ H
23 #d e f i n e EPSILON 1 . e−9
24
UN
25 #d e f i n e A l t u r a 0 . 0 6
26 #d e f i n e Largura 0 . 0 6
27
28 #d e f i n e X0 0 .
#d e f i n e Y0 0 .
SC

29
30
31 #d e f i n e Gama 8 0 . 2 // c o n d u t i v i d a d e t e r m i c a
32

// C o n d i c o e s de c o n t o r n o
RA

33
34 #d e f i n e PhiE 75.
35 #d e f i n e PhiW 25.
36 #d e f i n e PhiN 100.
37 #d e f i n e PhiS 50.
38
39 #d e f i n e P h i I 0 . // Chute i n i c i a l metodo Gauss−S e i d e l
40
41 #d e f i n e NumeroDePontosDirecaoX 10
42 #d e f i n e NumeroDePontosDirecaoY 10
43

44 #d e f i n e ModoDepuracao OFF
45
46 /∗ Fim das d e f i n i c o e s do u s u a r i o ∗/
47
48 #d e f i n e PrimeiroPonto 0
49 #d e f i n e NumeroPontos ( NumeroDePontosDirecaoX ∗
NumeroDePontosDirecaoY )

R. Heringer – 56
4. Códigos Computacionais4.2. Código para Difusão em Regime Permanente

50 #d e f i n e UltimoPonto ( NumeroPontos + PrimeiroPonto − 1 )


51 #d e f i n e UltimoPontoDirecaoX ( NumeroDePontosDirecaoX +
PrimeiroPonto − 1 )
52 #d e f i n e UltimoPontoDirecaoY ( NumeroDePontosDirecaoY +
PrimeiroPonto − 1 )
53
54 /∗ V a r i a v e i s g l o b a i s ∗/
55 d o u b l e x [ NumeroPontos ] , y [ NumeroPontos ] ;
56 d o u b l e Deltay , D el t ax ;
57 d o u b l e DVolume , DAreae , DAreaw , DArean , DAreas ;
58 d o u b l e d e l t a x e [ NumeroPontos ] , deltaxw [ NumeroPontos ] , d e l t a y n [
NumeroPontos ] , d e l t a y s [ NumeroPontos ] ;
59

60 d o u b l e Phi [ NumeroPontos ] ;
61 d o u b l e A[ NumeroPontos ] [ NumeroPontos ] , b [ NumeroPontos ] ;
62
63 int malha ( v o i d ) ;
64 int c o e f i c i e n t e s ( void ) ;

O
65 int g a u s s S e i d e l ( void ) ;
66 int saida ( void ) ;
67
68
69
/∗ Funcao p r i n c i p a l
i n t main ( )
∗/
H
UN
70 {
71 register int i ;
72 malha ( ) ;
73 coeficientes () ;
gaussSeidel () ;
SC

74
75 saida () ;
76 return 1;
77 }
RA

78
79 /∗ Geracao de malha ∗/
80 i n t malha ( v o i d )
81 {
82 register int i , j , p;
83 f o r ( p=PrimeiroPonto ; p<=UltimoPonto ; p++)
84 {
85 x[p] = 0.;
86 y[p] = 0.;
87 }
88 /∗ Malha r e t a n g u l a r u n i f o r m e ∗/
89 D el ta y = A l t u r a / NumeroDePontosDirecaoY ;
90 D el ta x = Largura / NumeroDePontosDirecaoX ;
91 DVolume = D e lt ax ∗ D el ta y ;
92 DAreae = De lt a y ;
93 DAreaw = De lt a y ;
94 DArean = D e lt ax ;
95 DAreas = D e lt ax ;

R. Heringer – 57
4. Códigos Computacionais4.2. Código para Difusão em Regime Permanente

96 /∗ ∗/
97 f o r ( j=PrimeiroPonto ; j<=UltimoPontoDirecaoY ; j ++)
98 {
99 f o r ( i=PrimeiroPonto ; i<=UltimoPontoDirecaoX ; i ++)
100 {
101 p = i+j ∗ NumeroDePontosDirecaoX ;
102 d e l t a x e [ p ] = ( i <UltimoPontoDirecaoX ) ? D el t ax :
D el ta x / 2 . ;
103 deltaxw [ p ] = ( i >PrimeiroPonto ) ? D el ta x :
D el ta x / 2 . ;
104 d e l t a y n [ p ] = ( j <UltimoPontoDirecaoY ) ? D el t ay :
D el ta y / 2 . ;
105 d e l t a y s [ p ] = ( j >PrimeiroPonto ) ? D el ta y :
D el ta y / 2 . ;
106
107 x [ p ] = ( i >PrimeiroPonto ) ? ( x [ p−1] + deltaxw [ p ] ) :
deltaxw [ p ] ;
108 y [ p ] = ( j >PrimeiroPonto ) ? ( y [ p−NumeroDePontosDirecaoX

O
] + deltays [ p ]) : deltays [ p ] ;
109 }
110 } H
111 f o r ( p=PrimeiroPonto ; p<=UltimoPonto ; p++)
112 {
UN
113 x [ p ] += X0 ;
114 y [ p ] += Y0 ;
115 }
116 return 1;
}
SC

117
118
119 /∗ C o n s t r o i m a t r i z A i j e v e t o r b j segundo metodo dos Volumes
Finitos ∗/
i n t c o e f i c i e n t e s ( void )
RA

120
121 {
122 register int i = 0 , j = 0 , p = 0 , k , l ;
123 i n t i 0 = 0 , iL = 0 , P = 0 , E = 0 , W = 0 , N = 0 , S = 0 ;
124 d o u b l e ap [ NumeroPontos ] ;
125 d o u b l e bAux ;
126 d o u b l e ae [ NumeroPontos ] , aw [ NumeroPontos ] , an [ NumeroPontos ] ,
a s [ NumeroPontos ] ;
127
128 f o r ( i=PrimeiroPonto ; i<=UltimoPonto ; i ++)
129 {
130 ae [ p ] = 0 . ;
131 aw [ p ] = 0 . ;
132 an [ p ] = 0 . ;
133 as [ p ] = 0 . ;
134 ap [ p ] = 0 . ;
135 b[p] = 0.;
136 }

R. Heringer – 58
4. Códigos Computacionais4.2. Código para Difusão em Regime Permanente

137 /∗ Pontos i n t e r n o s ∗/
138 f o r ( j=PrimeiroPonto ; j<=UltimoPontoDirecaoY ; j ++)
139 {
140 f o r ( i=PrimeiroPonto ; i<=UltimoPontoDirecaoX ; i ++)
141 {
142 p = i+j ∗ NumeroDePontosDirecaoX ;
143 /∗ C o e f i c i e n t e s ∗/
144 ae [ p ] = DAreae ∗ Gama / d e l t a x e [ p ] ;
145 aw [ p ] = DAreaw ∗ Gama / deltaxw [ p ] ;
146 an [ p ] = DArean ∗ Gama / d e l t a y n [ p ] ;
147 a s [ p ] = DAreas ∗ Gama / d e l t a y s [ p ] ;
148
149 ap [ p ] = ae [ p ] + aw [ p ] + an [ p ] + a s [ p ] ;
150 b [ p ] = 0 . ; // Equacao L a p l a c e
151 }
152 }
153
154 /∗ Pontos nas f r o n t e i r a s ∗/

O
155 /∗ F r o n t e i r a s h o r i z o n t a i s ∗/
156 f o r ( i=PrimeiroPonto ; i<=UltimoPontoDirecaoX ; i ++)
157 { H
158 /∗ F r o n t e i r a y = 0 , p h i p r e s c r i t o ∗/
159 p = i;
UN
160 as [ p ] = 0 . ;
161 b [ p ] += PhiS ∗ ( DAreas ∗ Gama / d e l t a y s [ p ] ) ;
162 /∗ F r o n t e i r a y = H, p h i p r e s c r i t o ∗/
163 p = i+UltimoPontoDirecaoY ∗ NumeroDePontosDirecaoX ;
an [ p ] = 0 . ;
SC

164
165 b [ p ] += PhiN ∗ ( DArean ∗ Gama / d e l t a y n [ p ] ) ;
166 }
167 /∗ F r o n t e i r a s v e r t i c a i s ∗/
f o r ( j=PrimeiroPonto ; j<=UltimoPontoDirecaoY ; j ++)
RA

168
169 {
170 /∗ F r o n t e i r a x = 0 , p h i p r e s c r i t o ∗/
171 p = j ∗ NumeroDePontosDirecaoX ;
172 aw [ p ] = 0 . ;
173 b [ p ] += PhiW ∗ ( DAreaw ∗ Gama / deltaxw [ p ] ) ;
174 /∗ F r o n t e i r a x = L , p h i p r e s c r i t o ∗/
175 p = j ∗ NumeroDePontosDirecaoX+UltimoPontoDirecaoX ;
176 ae [ p ] = 0 . ;
177 b [ p ] += PhiE ∗ ( DAreae ∗ Gama / d e l t a x e [ p ] ) ;
178 }
179
180 /∗ Preenchendo A i j ∗/
181 f o r ( k=PrimeiroPonto ; k<=UltimoPonto ; k++)
182 {
183 f o r ( l=PrimeiroPonto ; l<=UltimoPonto ; l ++)
184 {
185 A[ k ] [ l ] = 0 . ;

R. Heringer – 59
4. Códigos Computacionais4.2. Código para Difusão em Regime Permanente

186 }
187 }
188 j = PrimeiroPonto ;
189 f o r ( i=PrimeiroPonto ; i<=UltimoPonto ; i ++)
190 {
191 i 0 = PrimeiroPonto + j ∗ NumeroDePontosDirecaoX ;
192 iL = UltimoPontoDirecaoX + j ∗ NumeroDePontosDirecaoX ;
193
194 P = i;
195 E = P + 1;
196 W= P − 1;
197 N = P + NumeroDePontosDirecaoX ;
198 S = P − NumeroDePontosDirecaoX ;
199
200 A[ P ] [ P ] = ap [ P ] ;
201 i f ( i <iL ) A[ P ] [ E ] = −ae [ P ] ;
202 i f ( i >i 0 ) A[ P ] [W] = −aw [ P ] ;
203 i f ( j <UltimoPontoDirecaoY ) A[ P ] [ N] = −an [ P ] ;

O
204 i f ( j >PrimeiroPonto ) A[ P ] [ S ] = −a s [ P ] ;
205
206 /∗ Apresentando s i s t e m a a l g e b r i c o para c o n f e r e n c i a ∗/
H
207 i f ( ModoDepuracao ) {
208 i f ( i==PrimeiroPonto ) p r i n t f ( " S i s t e m a ␣ a l g e b r i c o ␣ de ␣
UN
equacoes :\ n" ) ;
209 p r i n t f ( " %6.2 l f ␣T%d␣ " , ap [ P ] , P+1) ;
210 i f ( i <iL ) p r i n t f ( "−␣ %6.2 l f ␣T%d␣ " , ae [ P ] , E+1) ;
211 i f ( i >i 0 ) p r i n t f ( "−␣ %6.2 l f ␣T%d␣ " , aw [ P ] , W+1) ;
i f ( j <UltimoPontoDirecaoY ) p r i n t f ( "−␣ %6.2 l f ␣T%d␣ " , an [ P
SC

212
] , N+1) ;
213 i f ( j >PrimeiroPonto ) p r i n t f ( "−␣ %6.2 l f ␣T%d␣ " , a s [ P
] , S+1) ;
p r i n t f ( "=␣ %6.2 l f \n " , b [ P ] ) ;
RA

214
215 }
216 /∗ ∗/
217 i f ( i==iL ) j ++;
218 }
219 /∗ Para v e r i f i c a c a o de A i j ∗/
220 i f ( ModoDepuracao ) {
221 p r i n t f ( " \n\n " ) ;
222 p r i n t f ( " m a t r i z (A) ␣∗ ␣ v e t o r ( x ) ␣=␣ v e t o r ( b ) : \ n " ) ;
223 p r i n t f ( " Matriz ␣ A i j : \ n " ) ;
224 f o r ( k=PrimeiroPonto ; k<=UltimoPonto ; k++){
225 f o r ( l=PrimeiroPonto ; l<=UltimoPonto ; l ++){
226 p r i n t f ( " %6.2 l f ␣ " , A[ k ] [ l ] ) ;
227 }
228 p r i n t f ( " \tT%d\ t %6.2 l f \n " , ( k+1) , b [ l ] ) ;
229 }
230 }
231

R. Heringer – 60
4. Códigos Computacionais4.2. Código para Difusão em Regime Permanente

232 return 1;
233 }
234
235 /∗ Gauss−S e i d e l ∗/
236 i n t g a u s s S e i d e l ( void ) {
237 d o u b l e Phi0 [ NumeroPontos ] ;
238 d o u b l e d i f , soma1 , soma2 ;
239 int i , j , f , p;
240 int m = 0;
241 f o r ( i=PrimeiroPonto ; i<=UltimoPonto ; i ++){
242 Phi0 [ i ] = P h i I ;
243 Phi [ i ] = P h i I ;
244 }
245 i f ( ModoDepuracao ) p r i n t f ( " \n\nMetodo␣ Gauss−S e i d e l \n " ) ;
246 do{
247 dif = 0.;
248 f o r ( i=PrimeiroPonto ; i<=UltimoPonto ; i ++){
249 soma1 = 0 . ;

O
250 f o r ( j=PrimeiroPonto ; j <i ; j ++){
251 soma1 += A[ i ] [ j ] ∗ Phi [ j ] ;
252 } H
253 soma2 = 0 . ;
254 f o r ( j =( i +1) ; j<=UltimoPonto ; j ++){
UN
255 soma2 += A[ i ] [ j ] ∗ Phi0 [ j ] ;
256 }
257 Phi [ i ] = ( b [ i ] − soma1 − soma2 ) /A[ i ] [ i ] ;
258 d i f += f a b s ( Phi0 [ i ] − Phi [ i ] ) ;
};
SC

259
260 i f ( ModoDepuracao ) p r i n t f ( " I t e r a c a o ␣%d , ␣ d i f ␣=␣ %8.2 e \n " ,++
m, d i f ) ;
261 f o r ( i =0; i<=UltimoPonto ; i ++){
Phi0 [ i ] = Phi [ i ] ;
RA

262
263 }
264 } w h i l e ( d i f >= EPSILON) ;
265 i f ( ModoDepuracao ) {
266 p r i n t f ( " \n\nx\ ty \ t Ph i " ) ;
267 f o r ( i=PrimeiroPonto ; i<=UltimoPonto ; i ++){
268 p r i n t f ( " \n%6.4 l f \ t %6.4 l f \ t %6.2 l f " , x [ i ] , y [ i ] , Phi [ i ] ) ;
269 }
270 p r i n t f ( " \n " ) ;
271 }
272 return 1;
273 }
274
275 /∗ S a i d a de dados ∗/
276 i n t saida ( void ) {
277 int i , j , p , f ;
278 p r i n t f ( " \nx\ ty \ tP hi " ) ;
279 f o r ( j=PrimeiroPonto ; j<=UltimoPontoDirecaoY ; j ++)

R. Heringer – 61
4. Códigos Computacionais4.3. Código para Difusão em Regime Permanente

280 {
281 i f ( j==PrimeiroPonto ) {
282 f o r ( f=PrimeiroPonto ; f<=UltimoPontoDirecaoX ; f ++){
283 p r i n t f ( " \n%6.4 l f \ t %6.4 l f \ t %6.2 l f " , x [ f ] , Y0 , PhiS ) ;
284 }
285 }
286 f o r ( i=PrimeiroPonto ; i<=UltimoPontoDirecaoX ; i ++)
287 {
288 p = i+j ∗ NumeroDePontosDirecaoX ;
289 i f ( i==PrimeiroPonto ) {
290 p r i n t f ( " \n%6.4 l f \ t %6.4 l f \ t %6.2 l f " ,X0 , y [ p ] , PhiW) ;
291 }
292 p r i n t f ( " \n%6.4 l f \ t %6.4 l f \ t %6.2 l f " , x [ p ] , y [ p ] , Phi [ p ] ) ;
293 i f ( i==UltimoPontoDirecaoX ) {
294 p r i n t f ( " \n%6.4 l f \ t %6.4 l f \ t %6.2 l f " , ( X0+Largura ) , y [ p
] , PhiE ) ;
295 }
296 }

O
297 i f ( j==UltimoPontoDirecaoY ) {
298 f o r ( i=PrimeiroPonto ; i<=UltimoPontoDirecaoX ; i ++){
299 p r i n t f ( " \n%6.4 l f \ t %6.4 l f \ t %6.2 l f " , x [ i ] , ( Y0+A l t u r a ) ,
H
PhiN ) ;
300 }
UN
301 }
302 }
303 p r i n t f ( " \n " ) ;
304 return 1;
}
SC

305
RA

4.3 CÓDIGO COMPUTACIONAL PARA O


DIFUSÃO BIDIMENSIONAL EM RE-
GIME TRANSIENTE
Consideremos agora o modelo matemático para o processo de transferência
de calor por condução, bidimensional, em um sólido fixo em relação a um
referencial cartesiano (x, y), com temperaturas conhecidas impostas nas fron-
teiras, em regime transiente, apresentado pelas equações 2.10 à 2.15, página
14.

1 /∗
2 P r o f Romulo H e r i n g e r
3 UFPB/CT
4 LABORATORIO DE MODELAGEM EM MATERIAIS

R. Heringer – 62
4. Códigos Computacionais4.3. Código para Difusão em Regime Permanente

5 DISCIPLINA : MODELAGEM EM MATERIAIS


6 Exercicio 3
7 R e s o l u c a o de equacao d i f e r e n c i a l da d i f u s a o 2−D em r e g i m e
transiente
8 − Metodo dos Volumes F i n i t o s ;
9 − R e s o l u c a o do s i s t e m a l i n e a r p e l o Metodo de Gauss−S e i d e l ;
10 − Malha u n i f o r m e ;
11 Out 2015
12 v e r s a o 1 ( sem i n t e r a c a o com u s u a r i o )
13 ∗/
14
15 #i n c l u d e <s t d i o . h>
16 #i n c l u d e < s t d l i b . h>
17 #i n c l u d e <math . h>
18
19 #d e f i n e ON 1
20 #d e f i n e OFF 0
21

O
22 /∗ D e f i n i c o e s do u s u a r i o ∗/
23 #d e f i n e EPSILON 1 . e−9
24
25
26
#d e f i n e
#d e f i n e
Altura 0.06
Largura 0 . 0 6
H
UN
27 #d e f i n e DTempo . 0 5
28 #d e f i n e TempoInicio 0 .
29 #d e f i n e TempoFim 5 0 .
30
#d e f i n e X0 0 .
SC

31
32 #d e f i n e Y0 0 .
33
34 #d e f i n e Gama 8 0 . 2 // c o n d u t i v i d a d e t e r m i c a
#d e f i n e Rho 7 0 0 0 . // massa e s p e c i f i c a
RA

35
36 #d e f i n e c 4 5 0 . // c a l o r e s p e c i f i c o
37
38 // Condicao i n i c i a l
39 #d e f i n e P h i I 0 .
40
41 // C o n d i c o e s de c o n t o r n o
42 #d e f i n e PhiE 75.
43 #d e f i n e PhiW 25.
44 #d e f i n e PhiN 100.
45 #d e f i n e PhiS 50.
46
47 #d e f i n e l i n z d S p 0 .
48 #d e f i n e l i n z d S c 0 .
49
50 #d e f i n e NumeroDePontosDirecaoX 10
51 #d e f i n e NumeroDePontosDirecaoY 10
52

R. Heringer – 63
4. Códigos Computacionais4.3. Código para Difusão em Regime Permanente

53 #d e f i n e ModoDepuracao OFF
54
55 /∗ Fim das d e f i n i c o e s do u s u a r i o ∗/
56
57 #d e f i n e PrimeiroPonto 0
58 #d e f i n e NumeroPontos ( NumeroDePontosDirecaoX ∗
NumeroDePontosDirecaoY )
59 #d e f i n e UltimoPonto ( NumeroPontos + PrimeiroPonto − 1 )
60 #d e f i n e UltimoPontoDirecaoX ( NumeroDePontosDirecaoX +
PrimeiroPonto − 1 )
61 #d e f i n e UltimoPontoDirecaoY ( NumeroDePontosDirecaoY +
PrimeiroPonto − 1 )
62

63 /∗ V a r i a v e i s g l o b a i s ∗/
64 d o u b l e Tempo = TempoInicio , D e l t a t = DTempo ;
65 d o u b l e x [ NumeroPontos ] , y [ NumeroPontos ] ;
66 d o u b l e Deltay , D el t ax ;
67 d o u b l e DVolume , DAreae , DAreaw , DArean , DAreas ;

O
68 d o u b l e d e l t a x e [ NumeroPontos ] , deltaxw [ NumeroPontos ] , d e l t a y n [
NumeroPontos ] , d e l t a y s [ NumeroPontos ] ;
69
70
71
d o u b l e Phi [ NumeroPontos ] ;
H
d o u b l e A[ NumeroPontos ] [ NumeroPontos ] , b [ NumeroPontos ] ;
UN
72
73 int malha ( v o i d ) ;
74 int c o e f i c i e n t e s ( void ) ;
75 int g a u s s S e i d e l ( void ) ;
int saida ( void ) ;
SC

76
77
78 /∗ Funcao p r i n c i p a l ∗/
79 i n t main ( )
{
RA

80
81 register int i ;
82 f o r ( i=PrimeiroPonto ; i<=UltimoPonto ; i ++){
83 Phi [ i ] = P h i I ;
84 }
85 w h i l e (Tempo<TempoFim ) {
86 Tempo += D e l t a t ;
87 malha ( ) ;
88 coeficientes () ;
89 gaussSeidel () ;
90 saida () ;
91 };
92 return 1;
93 }
94
95 /∗ Geracao de malha ∗/
96 i n t malha ( v o i d )
97 {

R. Heringer – 64
4. Códigos Computacionais4.3. Código para Difusão em Regime Permanente

98 register int i , j , p;
99 f o r ( p=PrimeiroPonto ; p<=UltimoPonto ; p++)
100 {
101 x[p] = 0.;
102 y[p] = 0.;
103 }
104 /∗ Malha r e t a n g u l a r u n i f o r m e ∗/
105 D el ta y = A l t u r a / NumeroDePontosDirecaoY ;
106 D el ta x = Largura / NumeroDePontosDirecaoX ;
107 DVolume = D e lt ax ∗ D el ta y ;
108 DAreae = De lt a y ;
109 DAreaw = De lt a y ;
110 DArean = D e lt ax ;
111 DAreas = D e lt ax ;
112 /∗ ∗/
113 f o r ( j=PrimeiroPonto ; j<=UltimoPontoDirecaoY ; j ++)
114 {
115 f o r ( i=PrimeiroPonto ; i<=UltimoPontoDirecaoX ; i ++)

O
116 {
117 p = i+j ∗ NumeroDePontosDirecaoX ;
118 d e l t a x e [ p ] = ( i <UltimoPontoDirecaoX ) ? D el t ax
H :
D el ta x / 2 . ;
119 deltaxw [ p ] = ( i >PrimeiroPonto ) ? D el ta x :
UN
D el ta x / 2 . ;
120 d e l t a y n [ p ] = ( j <UltimoPontoDirecaoY ) ? D el t ay :
D el ta y / 2 . ;
121 d e l t a y s [ p ] = ( j >PrimeiroPonto ) ? D el ta y :
D el ta y / 2 . ;
SC

122
123 x [ p ] = ( i >PrimeiroPonto ) ? ( x [ p−1] + deltaxw [ p ] ) :
deltaxw [ p ] ;
y [ p ] = ( j >PrimeiroPonto ) ? ( y [ p−NumeroDePontosDirecaoX
RA

124
] + deltays [ p ]) : deltays [ p ] ;
125 }
126 }
127 f o r ( p=PrimeiroPonto ; p<=UltimoPonto ; p++)
128 {
129 x [ p ] += X0 ;
130 y [ p ] += Y0 ;
131 }
132 return 1;
133 }
134
135 /∗ C o n s t r o i m a t r i z A i j e v e t o r b j segundo metodo dos Volumes
Finitos ∗/
136 i n t c o e f i c i e n t e s ( void )
137 {
138 register int i = 0 , j = 0 , p = 0 , k , l ;
139 i n t i 0 = 0 , iL = 0 , P = 0 , E = 0 , W = 0 , N = 0 , S = 0 ;

R. Heringer – 65
4. Códigos Computacionais4.3. Código para Difusão em Regime Permanente

140 d o u b l e ap [ NumeroPontos ] , ap0 [ NumeroPontos ] , Sp [ NumeroPontos


];
141 d o u b l e Sc [ NumeroPontos ] , bAux ;
142 d o u b l e ae [ NumeroPontos ] , aw [ NumeroPontos ] , an [ NumeroPontos ] ,
a s [ NumeroPontos ] ;
143
144 f o r ( i=PrimeiroPonto ; i<=UltimoPonto ; i ++)
145 {
146 Sp [ p ] = 0 . ;
147 Sc [ p ] = 0 . ;
148 ae [ p ] = 0 . ;
149 aw [ p ] = 0 . ;
150 an [ p ] = 0 . ;
151 as [ p ] = 0 . ;
152 ap0 [ p ] = 0 . ;
153 ap [ p ] = 0 . ;
154 b[p] = 0.;
155 }

O
156 /∗ Pontos i n t e r n o s ∗/
157 f o r ( j=PrimeiroPonto ; j<=UltimoPontoDirecaoY ; j ++)
158 { H
159 f o r ( i=PrimeiroPonto ; i<=UltimoPontoDirecaoX ; i ++)
160 {
UN
161 p = i+j ∗ NumeroDePontosDirecaoX ;
162 /∗ C o e f i c i e n t e s ∗/
163 ae [ p ] = DAreae ∗ Gama / d e l t a x e [ p ] ;
164 aw [ p ] = DAreaw ∗ Gama / deltaxw [ p ] ;
an [ p ] = DArean ∗ Gama / d e l t a y n [ p ] ;
SC

165
166 a s [ p ] = DAreas ∗ Gama / d e l t a y s [ p ] ;
167
168 /∗ Termo f o n t e l i n e a r i z a d o ∗/
Sp [ p ] = l i n z d S c ;
RA

169
170 Sc [ p ] = l i n z d S p ;
171
172 ap0 [ p ] = Rho ∗ c ∗ DVolume / D e l t a t ;
173 ap [ p ] = ae [ p ] + aw [ p ] + an [ p ] + a s [ p ] + ap0 [ p ] − Sp [ p ]
∗ DVolume ;
174 b [ p ] = Sc [ p ] ∗ DVolume + ap0 [ p ] ∗ Phi [ p ] ;
175 }
176 }
177
178 /∗ Pontos nas f r o n t e i r a s ∗/
179 /∗ F r o n t e i r a s h o r i z o n t a i s ∗/
180 f o r ( i=PrimeiroPonto ; i<=UltimoPontoDirecaoX ; i ++)
181 {
182 /∗ F r o n t e i r a y = 0 , p h i p r e s c r i t o ∗/
183 p = i;
184 as [ p ] = 0 . ;
185 b [ p ] += PhiS ∗ ( DAreas ∗ Gama / d e l t a y s [ p ] ) ;

R. Heringer – 66
4. Códigos Computacionais4.3. Código para Difusão em Regime Permanente

186 /∗ F r o n t e i r a y = H, p h i p r e s c r i t o ∗/
187 p = i+UltimoPontoDirecaoY ∗ NumeroDePontosDirecaoX ;
188 an [ p ] = 0 . ;
189 b [ p ] += PhiN ∗ ( DArean ∗ Gama / d e l t a y n [ p ] ) ;
190 }
191 /∗ F r o n t e i r a s v e r t i c a i s ∗/
192 f o r ( j=PrimeiroPonto ; j<=UltimoPontoDirecaoY ; j ++)
193 {
194 /∗ F r o n t e i r a x = 0 , p h i p r e s c r i t o ∗/
195 p = j ∗ NumeroDePontosDirecaoX ;
196 aw [ p ] = 0 . ;
197 b [ p ] += PhiW ∗ ( DAreaw ∗ Gama / deltaxw [ p ] ) ;
198 /∗ F r o n t e i r a x = L , p h i p r e s c r i t o ∗/
199 p = j ∗ NumeroDePontosDirecaoX+UltimoPontoDirecaoX ;
200 ae [ p ] = 0 . ;
201 b [ p ] += PhiE ∗ ( DAreae ∗ Gama / d e l t a x e [ p ] ) ;
202 }
203

O
204 /∗ Preenchendo A i j ∗/
205 f o r ( k=PrimeiroPonto ; k<=UltimoPonto ; k++)
206 { H
207 f o r ( l=PrimeiroPonto ; l<=UltimoPonto ; l ++)
208 {
UN
209 A[ k ] [ l ] = 0 . ;
210 }
211 }
212 j = PrimeiroPonto ;
f o r ( i=PrimeiroPonto ; i<=UltimoPonto ; i ++)
SC

213
214 {
215 i 0 = PrimeiroPonto + j ∗ NumeroDePontosDirecaoX ;
216 iL = UltimoPontoDirecaoX + j ∗ NumeroDePontosDirecaoX ;
RA

217
218 P = i;
219 E = P + 1;
220 W= P − 1;
221 N = P + NumeroDePontosDirecaoX ;
222 S = P − NumeroDePontosDirecaoX ;
223
224 A[ P ] [ P ] = ap [ P ] ;
225 i f ( i <iL ) A[ P ] [ E ] = −ae [ P ] ;
226 i f ( i >i 0 ) A[ P ] [W] = −aw [ P ] ;
227 i f ( j <UltimoPontoDirecaoY ) A[ P ] [ N] = −an [ P ] ;
228 i f ( j >PrimeiroPonto ) A[ P ] [ S ] = −a s [ P ] ;
229
230 /∗ Apresentando s i s t e m a a l g e b r i c o para c o n f e r e n c i a ∗/
231 i f ( ModoDepuracao ) {
232 i f ( i==PrimeiroPonto ) p r i n t f ( " S i s t e m a ␣ a l g e b r i c o ␣ de ␣
equacoes :\ n" ) ;
233 p r i n t f ( " %6.2 l f ␣T%d␣ " , ap [ P ] , P+1) ;

R. Heringer – 67
4. Códigos Computacionais4.3. Código para Difusão em Regime Permanente

234 i f ( i <iL ) p r i n t f ( "−␣ %6.2 l f ␣T%d␣ " , ae [ P ] , E+1) ;


235 i f ( i >i 0 ) p r i n t f ( "−␣ %6.2 l f ␣T%d␣ " , aw [ P ] , W+1) ;
236 i f ( j <UltimoPontoDirecaoY ) p r i n t f ( "−␣ %6.2 l f ␣T%d␣ " , an [ P
] , N+1) ;
237 i f ( j >PrimeiroPonto ) p r i n t f ( "−␣ %6.2 l f ␣T%d␣ " , a s [ P
] , S+1) ;
238 p r i n t f ( "=␣ %6.2 l f \n " , b [ P ] ) ;
239 }
240 /∗ ∗/
241 i f ( i==iL ) j ++;
242 }
243 /∗ Para v e r i f i c a c a o de A i j ∗/
244 i f ( ModoDepuracao ) {
245 p r i n t f ( " \n\n " ) ;
246 p r i n t f ( " m a t r i z (A) ␣∗ ␣ v e t o r ( x ) ␣=␣ v e t o r ( b ) : \ n " ) ;
247 p r i n t f ( " Matriz ␣ A i j : \ n " ) ;
248 f o r ( k=PrimeiroPonto ; k<=UltimoPonto ; k++){
249 f o r ( l=PrimeiroPonto ; l<=UltimoPonto ; l ++){

O
250 p r i n t f ( " %6.2 l f ␣ " , A[ k ] [ l ] ) ;
251 }
252 p r i n t f ( " \tT%d\ t %6.2 l f \n " , ( k+1) , b [ l ] ) ;
H
253 }
254 }
UN
255
256 return 1;
257 }
258
/∗ Gauss−S e i d e l ∗/
SC

259
260 i n t g a u s s S e i d e l ( void ) {
261 d o u b l e Phi0 [ NumeroPontos ] ;
262 d o u b l e d i f , soma1 , soma2 ;
int i , j , f , p;
RA

263
264 int m = 0;
265 f o r ( i=PrimeiroPonto ; i<=UltimoPonto ; i ++){
266 Phi0 [ i ] = P h i I ;
267 Phi [ i ] = P h i I ;
268 }
269 i f ( ModoDepuracao ) p r i n t f ( " \n\nMetodo␣ Gauss−S e i d e l \n " ) ;
270 do{
271 dif = 0.;
272 f o r ( i=PrimeiroPonto ; i<=UltimoPonto ; i ++){
273 soma1 = 0 . ;
274 f o r ( j=PrimeiroPonto ; j <i ; j ++){
275 soma1 += A[ i ] [ j ] ∗ Phi [ j ] ;
276 }
277 soma2 = 0 . ;
278 f o r ( j =( i +1) ; j<=UltimoPonto ; j ++){
279 soma2 += A[ i ] [ j ] ∗ Phi0 [ j ] ;
280 }

R. Heringer – 68
4. Códigos Computacionais4.3. Código para Difusão em Regime Permanente

281 Phi [ i ] = ( b [ i ] − soma1 − soma2 ) /A[ i ] [ i ] ;


282 d i f += f a b s ( Phi0 [ i ] − Phi [ i ] ) ;
283 };
284 i f ( ModoDepuracao ) p r i n t f ( " I t e r a c a o ␣%d , ␣ d i f ␣=␣ %8.2 e \n " ,++
m, d i f ) ;
285 f o r ( i =0; i<=UltimoPonto ; i ++){
286 Phi0 [ i ] = Phi [ i ] ;
287 }
288 } w h i l e ( d i f >= EPSILON) ;
289 i f ( ModoDepuracao ) {
290 p r i n t f ( " \n\nx\ ty \ t Ph i " ) ;
291 f o r ( i=PrimeiroPonto ; i<=UltimoPonto ; i ++){
292 p r i n t f ( " \n%6.4 l f \ t %6.4 l f \ t %6.2 l f " , x [ i ] , y [ i ] , Phi [ i ] ) ;
293 }
294 p r i n t f ( " \n " ) ;
295 }
296 return 1;
297 }

O
298

299 /∗ S a i d a de dados ∗/
300 i n t saida ( void ) { H
301 int i , j , p , f ;
302 i f (Tempo>1. e10 ) {
UN
303 p r i n t f ( " \n\ nRegime ␣ permanente " ) ;
304 } else {
305 p r i n t f ( " \n\nTempo␣=␣%l f ␣ s " ,Tempo) ;
306 }
p r i n t f ( " \nx\ ty \ tP hi " ) ;
SC

307
308 f o r ( j=PrimeiroPonto ; j<=UltimoPontoDirecaoY ; j ++)
309 {
310 i f ( j==PrimeiroPonto ) {
f o r ( f=PrimeiroPonto ; f<=UltimoPontoDirecaoX ; f ++){
RA

311
312 p r i n t f ( " \n%6.4 l f \ t %6.4 l f \ t %6.2 l f " , x [ f ] , Y0 , PhiS ) ;
313 }
314 }
315 f o r ( i=PrimeiroPonto ; i<=UltimoPontoDirecaoX ; i ++)
316 {
317 p = i+j ∗ NumeroDePontosDirecaoX ;
318 i f ( i==PrimeiroPonto ) {
319 p r i n t f ( " \n%6.4 l f \ t %6.4 l f \ t %6.2 l f " ,X0 , y [ p ] , PhiW) ;
320 }
321 p r i n t f ( " \n%6.4 l f \ t %6.4 l f \ t %6.2 l f " , x [ p ] , y [ p ] , Phi [ p ] ) ;
322 i f ( i==UltimoPontoDirecaoX ) {
323 p r i n t f ( " \n%6.4 l f \ t %6.4 l f \ t %6.2 l f " , ( X0+Largura ) , y [ p
] , PhiE ) ;
324 }
325 }
326 i f ( j==UltimoPontoDirecaoY ) {
327 f o r ( i=PrimeiroPonto ; i<=UltimoPontoDirecaoX ; i ++){

R. Heringer – 69
4. Códigos Computacionais4.3. Código para Difusão em Regime Permanente

328 p r i n t f ( " \n%6.4 l f \ t %6.4 l f \ t %6.2 l f " , x [ i ] , ( Y0+A l t u r a ) ,


PhiN ) ;
329 }
330 }
331 }
332 p r i n t f ( " \n " ) ;
333 return 1;
334 }

O
H
UN
SC
RA

R. Heringer – 70

Você também pode gostar