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
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
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
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
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
regime transiente).
RA
R. Heringer – 4
Capítulo 2
MODELO MATEMÁTICO
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
E SIMPLIFICAÇÕES)
5
2. Modelo Matemático 2.1. Modelo Descritivo
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
R. Heringer – 6
2. Modelo Matemático 2.1. Modelo Descritivo
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
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
R. Heringer – 8
2. Modelo Matemático 2.1. Modelo Descritivo
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
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.
R. Heringer – 9
2. Modelo Matemático 2.2. Modelo Matemático
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
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
R. Heringer – 10
2. Modelo Matemático 2.2. Modelo Matemático
→
−
• −p ∇ · ~u : aquecimento/resfriamento por trabalho reversível;
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
→
−
∇ · ~q = 0.
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
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
∂ 2T ∂ 2T
+ = 0. (2.5)
∂x2 ∂y 2
R. Heringer – 12
2. Modelo Matemático 2.2. Modelo Matemático
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
R. Heringer – 13
2. Modelo Matemático 2.2. Modelo Matemático
a relação termodinâmica !
∂e
cv ≡ ,
∂T v
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
R. Heringer – 14
2. Modelo Matemático 2.2. Modelo Matemático
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
R. Heringer – 15
2. Modelo Matemático 2.2. Modelo Matemático
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
COMPUTACIONAIS
RA
17
3. Volumes Finitos 3.2. Malha Computacional
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
R. Heringer – 18
3. Volumes Finitos 3.2. Malha Computacional
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
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
R. Heringer – 20
3. Volumes Finitos 3.2. Malha Computacional
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
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
∂ 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
O
H
UN
SC
RA
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
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
R. Heringer – 25
3. Volumes Finitos 3.3. Discretização da Equação Diferencial
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
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
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
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
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
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
! !
∂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
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
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
R. Heringer – 30
3. Volumes Finitos 3.3. Discretização da Equação Diferencial
Z f Z nZ e
I1 = T − T 0
dx dy dz = TP − TP0 ∆xP ∆yP ∆zP
P b s w
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
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
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
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
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
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
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
R. Heringer – 38
3. Volumes Finitos 3.4. Condições de Contorno
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
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 .
R. Heringer – 39
3. Volumes Finitos 3.4. Condições de Contorno
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
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
O
aP = + !+ + + − SP ∆VP
.
δxe
1 δxwP δyn δys ∆t
−
h kwP
H (3.60)
UN
R. Heringer – 42
3. Volumes Finitos 3.5. Sistema Algébrico de Equações
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
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
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
R. Heringer – 45
3. Volumes Finitos 3.6. Resolução do Sistema Algébrico
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
R. Heringer – 46
3. Volumes Finitos 3.6. Resolução do Sistema Algébrico
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
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
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
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 .
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
Ax = b,
R. Heringer – 50
3. Volumes Finitos 3.6. Resolução do Sistema Algébrico
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.
MÉTODO DE GAUSS-SEIDEL
Consideremos o sistema algébrico descrito pela equação matricial 3.62, página
RA
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
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
R. Heringer – 53
4. Códigos Computacionais 4.1. Código para o Método de Gauss-Seidel
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
O
88 }
89 p r i n t f ( " \n " ) ;
90 return 1; H
91 }
UN
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
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
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
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
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
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
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
O
H
UN
SC
RA
R. Heringer – 70