Universidade Federal do ABC

Aula 2
Formulações via diferenças finitas
EN3224 Dinâmica de Fluidos
Computacional

EN3224 Dinâmica de Fluidos Computacional
Pergunta do dia:
Como escrever um programa de
computador que resolva

    v   0
t

  v 
    v  v   p     g
t
  E 
   E v     kT   q     pv   v      v :   g  v
t

?
EN3224 Dinâmica de Fluidos Computacional
Introdução
• Os computadores somente podem executar
operações aritméticas padrão e operações lógicas.
• As diferenciais de variáveis dependentes que
aparecem em EDPs precisam ser traduzidas para
expressões de diferenças finitas que as aproximam.

dy
y( x  x)  y( x)
 lim
dx x0
x
EN3224 Dinâmica de Fluidos Computacional
Métodos de aproximação de diferenciais
1. Expansão em séries de Taylor
2. Expansão em polinômios de grau n
3. Equações de diferenças finitas

EN3224 Dinâmica de Fluidos Computacional
DIFERENÇAS FINITAS VIA
EXPANSÕES DE SÉRIES DE TAYLOR
EN3224 Dinâmica de Fluidos Computacional
Expansão em séries de Taylor
Dada um função analítica f(x), a expansão em
série de Taylor de f(x+x) é dada por
f (x)  f (x)  f
f ( x  x)  f ( x)  (x) 


2
3
x
2! x
3! x
2

2

(x) n  n f
f ( x  x)  f ( x)  
n
n! x
n 1


EN3224 Dinâmica de Fluidos Computacional

3

3
A primeira diferencial
f (x) 2  2 f (x)3  3 f
f ( x  x)  f ( x)  (x) 


2
3
x
2! x
3! x

Isolando a primeira diferencial, obtemos
f
f ( x  x)  f ( x) x  2 f (x) 2  3 f




2
3
x
x
2! x
3! x

f
f ( x  x)  f ( x)

 O(x)
x
x
EN3224 Dinâmica de Fluidos Computacional

Soma de todos
os termos com
potências
positivas de x
A primeira diferencial
para frente...

f
f(x)
f(x+x)

f
f ( x  x)  f ( x)

 O(x)
x
x

x
EN3224 Dinâmica de Fluidos Computacional

x+x

x
A primeira diferencial
para trás...

f
f(x-x)
f(x)

f
f ( x)  f ( x  x)

 O(x)
x
x

x-x
EN3224 Dinâmica de Fluidos Computacional

x

x
Intervalos discretos iguais
Introdução da indexação:
O índice i (discreto) indica
intervalos de valor x.

f
fi
fi+1

f i 1  f i
f

 O(x)
x i
x
f i  f i 1
f

 O(x)
x i
x

xi

xi+1

x
EN3224 Dinâmica de Fluidos Computacional

x
O que isso quer dizer...
f i 1  f i
f

 O(x)
x i
x
for ( i=imin; i<imax; i++ ) {
dfdx[i] = ( fx[i+1] – fx[i] ) / (x[i+1] – x[i]);
}

O erro O(x) faz parte do “risco” assumido por quem
está fazendo a modelagem.
EN3224 Dinâmica de Fluidos Computacional
A “diferença das diferenças”
f (x)  f (x)  f
f ( x  x)  f ( x)  x 


2
3
x
2! x
3! x
2

2

3

3

f (x)  f (x)  f
f ( x  x)  f ( x)  x 


2
3
x
2! x
3! x
2

2

3

3

(negativa apenas nas potências ímpares de x)

f
(x)  f
f ( x  x)  f ( x  x)  2x  2

3
x
3! x
3

EN3224 Dinâmica de Fluidos Computacional

3
Aproximação da diferença central
Isolando a primeira diferencial:
f
f ( x  x)  f ( x  x)
2

 O(x)
x
2x

ou

f i 1  f i 1
f

 O(x) 2
x i
2x

EN3224 Dinâmica de Fluidos Computacional

Aproximação de
diferença central da
primeira derivada
A segunda derivada
Partindo da expansão em série de Taylor
f (x)  f (x)  f
f ( x  x)  f ( x)  x 


2
3
x
2! x
3! x
2

2

3

3

Calculamos a expansão para f(x+2x):
f (2x) 2  2 f (2x)3  3 f
f ( x  2x)  f ( x)  (2x) 


2
3
x
2! x
3! x

EN3224 Dinâmica de Fluidos Computacional
A segunda derivada
Queremos calcular -2f(x+x) + f(x+2x):
f
(x) 2  2 f
(x)3  3 f
2 f ( x  x)  2 f ( x)  (2x)  2
2

2
3
x
2! x
3! x
f (2x) 2  2 f (2x)3  3 f
f ( x  2x)  f ( x)  (2x) 


2
3
x
2! x
3! x

Resultado:
2 f
3 f
 2 f ( x  x)  f ( x  2x)   f ( x)  (x) 2 2  (x)3 3  
x
x
EN3224 Dinâmica de Fluidos Computacional
A segunda derivada
 f
f ( x  2x)  2 f ( x  x)  f ( x)

 O(x)
2
2
x
(x)
2

ou
f i  2  2 f i 1  f i
2 f

 O(x)
2
2
x i
(x)

para frente

f i  2 f i 1  f i 2
2 f

 O(x)
2
2
x i
(x)

para trás

EN3224 Dinâmica de Fluidos Computacional
Aproximação via diferença central
da segunda derivada
Somando
f (x)  f (x)  f
f ( x  x)  f ( x)  x 


2
3
x
2! x
3! x
2

e

2

3

3

f (x)  f (x)  f
f ( x  x)  f ( x)  x 


2
3
x
2! x
3! x
2

2

3

3

Resultado:
2 f
f ( x  x)  2 f ( x)  f ( x  x)

 O(x) 2
x 2
(x) 2
EN3224 Dinâmica de Fluidos Computacional
Aproximação via diferença central
da segunda derivada
2 f
f ( x  x)  2 f ( x)  f ( x  x)
2

 O(x)
2
2
x
(x)

f i 1  2 f i  f i 1
 f

 O(x) 2
x 2 i
(x) 2
2

EN3224 Dinâmica de Fluidos Computacional

Aproximação de
diferença central da
segunda derivada
Derivadas de ordem superior
Introduzindo a notação:
 x f i  f i 1  f i
 x f i  f i  f i 1

(diferença para frente)
(diferença para trás)

As diferenças de várias ordens podem ser
expressas por expressões recursivas:
nx f i  nx1  x f i 

 n f i   n 1  x f i 
x
x
EN3224 Dinâmica de Fluidos Computacional
Derivadas de ordem superior
Fórmulas de recorrências derivadas das séries de Taylor:
nx f i
n f

 Ox 
n
n
x i x 

(para frente)

n fi
n f
 x n  Ox 
x n i x 

(para trás)

 f

n
x i
n

 f

n
x i
n

nx f i  n   n f i  n
x
2

2x 

2

n

nx f

i  ( n 1)

 n f
x
2

2x 

n

(diferença central,
n par)

 Ox 

i  ( n 1)

2

2

 Ox 

EN3224 Dinâmica de Fluidos Computacional

2

(diferença central,
n ímpar)
Mais precisão?
Até aqui, foram considerados apenas os termos até a primeira
ordem da série de Taylor.
Pode-se aumentar a precisão (diminuir o erro) considerando-se
mais termos da expansão em série de Taylor.
Como resultado, obtém-se expressões mais trabalhosas, mas
mais precisas. Exemplo:

f  f ( x  2x)  4 f ( x  x)  3 f ( x)

 O(x) 2
x
2x
Aproximação de segunda ordem para
frente da primeira derivada
EN3224 Dinâmica de Fluidos Computacional
DIFERENÇAS FINITAS VIA
EXPANSÕES DE POLINÔMIOS
EN3224 Dinâmica de Fluidos Computacional
Expansão em polinômios
Dada um função analítica f(x), pode-se
considerar que em um dado intervalo a
função possa ser aproximada por um
polinômio de grau n.
Por exemplo

f ( x)  Ax  Bx  C
2

EN3224 Dinâmica de Fluidos Computacional
Exemplo
f ( x)  Ax  Bx  C
2

xi  0
xi 1  x
xi  2  2x
f ( xi )  C
f ( xi 1 )  Ax   Bx   C
2

f ( xi  2 )  A2x   B2x   C
2

Aproximação via polinômio de segunda ordem.
EN3224 Dinâmica de Fluidos Computacional
A primeira derivada
C  fi

fi  C

 f i  2  4 f i 1  3 f i
B
2x 
f i  2  2 f i 1  f i
A
2
2x 

f i 1  Ax   Bx   C
2

f i  2  A2x   B2x   C
2

Aproximação via polinômio de segunda ordem:
f
 2 Ax  B
x

xi=0

f  f i  2  4 f i 1  3 f i

x
2x

EN3224 Dinâmica de Fluidos Computacional
A segunda derivada
C  fi

fi  C

 f i  2  4 f i 1  3 f i
B
2x 
f i  2  2 f i 1  f i
A
2
2x 

f i 1  Ax   Bx   C
2

f i  2  A2x   B2x   C
2

Aproximação via polinômio de segunda ordem:
 f
 2A
2
x
2

f i  2  2 f i 1  f i
2 f

2
x
(x) 2

EN3224 Dinâmica de Fluidos Computacional
Espaçamento não uniforme
f ( x)  Ax  Bx  C
2

xi  0
xi 1  x
xi  2  (1   )x
f ( xi )  C
f ( xi 1 )  Ax   Bx   C
2

f ( xi  2 )  A1    x   B1   x  C
2

EN3224 Dinâmica de Fluidos Computacional

2
A primeira derivada
fi  C
f i 1  Ax   Bx   C
2

f i  2  A1    x   B1   x  C
2

2

C  fi

Aproximação via
polinômio de
segunda
ordem:
f
 2 Ax  B
x





 f i  2  1    f i 1   2  2 f i
B
 1   x
f i  2  1    f i 1  f i
A
 1   x 2
2

 f i  2  (1   ) 2 f i 1   (  2) f i
f

x i
 (1   )x
EN3224 Dinâmica de Fluidos Computacional
A segunda derivada
fi  C
f i 1  Ax   Bx   C
2

f i  2  A1    x   B1   x  C
2

2

C  fi

Aproximação via
polinômio de
segunda
ordem:
 f
 2A
2
x
2





 f i  2  1    f i 1   2  2 f i
B
 1   x
f i  2  1    f i 1  f i
A
 1   x 2
2

 f i  2  (1   ) f i 1  f i 
2 f
 2

2
x
 (1   )(x) 2


EN3224 Dinâmica de Fluidos Computacional
EQUAÇÕES DE DIFERENÇAS FINITAS

EN3224 Dinâmica de Fluidos Computacional
Equações de diferenças finitas
Usaremos as expressões apresentadas para
reescrever as EDPs da Mecânica dos Fluidos.
Nosso interesse é obter expressões que possam
ser incluídas em algoritmos e programas
escritos em linguagens de programação.

EN3224 Dinâmica de Fluidos Computacional
Um estudo de caso
Consideremos a EDP:

Dependência
no tempo

 f  f
f
  2  2
 x
t
y

2

 é uma
constante

EN3224 Dinâmica de Fluidos Computacional

2






Duas
dependências
no espaço
Convenções / notação
y

y

tempo
“n”

tempo
“n+1”

i,j+1

i,j+1

i-1,j
y

i-1,j
i,j

i,j
i+1,j

i+1,j

i,j-1

i,j-1

x

f

t

n
i, j

x

f i ,nj1

EN3224 Dinâmica de Fluidos Computacional

x
Primeira derivada no tempo
 f  f
f
  2  2
 x
t
y

2

f
f

t

2

n 1
i, j






f

t

n
i, j

 O(t )
Diferença para
frente de primeira
ordem

EN3224 Dinâmica de Fluidos Computacional
Segundas derivadas no espaço
 f  f
f
  2  2
 x
t
y

2

2






f
 f

2
y
2

 f

2
x
2

n
n
f i 1, j  2 f i ,nj  f i 1, j

(x) 2

n
i , j 1

2f  f
n
i, j
2

(y)
 O(x)

EN3224 Dinâmica de Fluidos Computacional

2

n
i , j 1

 O(y ) 2

Diferenças centrais
de segunda ordem
A expressão final
 f  f
f
  2  2
 x
t
y

2

2






EDP

Equação a
diferenças
finitas

f i ,nj1  f i ,nj
t

n
n
 f i 1, j  2 f i ,nj  f i 1, j f i ,nj 1  2 f i ,nj  f i ,nj 1 
 


2
2
(x)
(y )




 O t , (x) 2 , (y ) 2





EN3224 Dinâmica de Fluidos Computacional
Para frente e para trás no tempo
Formulação explícita (avança no tempo):
f i ,nj1  f i ,nj
t

n
 f i 1, j  2 f i ,nj  in1, j f i ,nj 1  2 f i ,nj  f i ,nj 1 
 


2
2
(x)
(y )




 O t , (x) 2 , (y ) 2





Formulação implícita (volta no tempo):
f i ,nj1  f i ,nj
t

n
 f i 1,1j  2 f i ,nj1  in11, j f i ,nj11  2 f i ,nj1  f i ,nj11 
 


2
2
(x)
(y )




 O t , (x) 2 , (y ) 2





EN3224 Dinâmica de Fluidos Computacional
Explícita x implícita
Explícita
• Tem apenas uma incógnita

f

n 1
i, j

Implícita
• Tem cinco incógnitas

f

n 1
i 1, j

, f
f

n 1
i , j 1

n 1
i 1, j

,f

,f

n 1
i, j

,

n 1
i , j 1

• Simples e rápida

• A solução exige que toda a
matriz seja resolvida
simultaneamente

• Instável

• Estável

EN3224 Dinâmica de Fluidos Computacional
Exemplo 1
4 f
Ache uma estimativa para frente para
x 4
Solução:
nx f i
n f
Partindo de

 Ox 
n
n
x i x 
Com n=4 obtemos
4 f
1

4x f i  Ox 
x 4 i x 4
EN3224 Dinâmica de Fluidos Computacional
Exemplo 1: resolução
n
n 1
Aplicando  x f i   x  x f i 

4x f i  3x  x f i   3x  f i 1  f i   2x  x f i 1   x f i 

 2x  f i  2  f i 1    f i 1  f i   2x  f i  2  2 f i 1  f i 

  x  x f i  2  2 x f i 1   x f i    x  f i 3  f i  2   2 f i  2  f i 1    f i 1  f i 
  x  f i 3  3 f i  2  3 f i 1  f i    x f i 3  3 x f i  2  3 x f i 1   x f i
 ( f i  4  f i 3 )  3( f i 3  f i  2 )  3( f i  2  f i 1 )   f i 1  f i 
 f i  4  4 f i 3  6 f i  2  4 f i 1  f i

4 f
1
 fi4  4 fi 3  6 fi 2  4 fi1  fi   Ox 

4
4
x i x 
EN3224 Dinâmica de Fluidos Computacional
Exemplo 2
Compare as expressões obtidas
para a representação de diferenças
finitas para frente

 f quando calculadas via:
3
x
3

de

a) Séries de Taylor
b) Fórmulas de recorrência
c) Polinômio do terceiro grau
EN3224 Dinâmica de Fluidos Computacional
 f
3
x
3

Exemplo 2: resolução

a) Expansão em série de Taylor
Precisaremos de três pontos:
1

f (x) 2  2 f (x)3  3 f
f ( x  x)  f ( x)  x 

 O(x) 4
x
2! x 2
3! x 3

2

f (2x) 2  2 f (2x)3  3 f
f ( x  2x)  f ( x)  2x 

 O(2x) 4
x
2! x 2
3! x 3

3

f (3x) 2  2 f (3x)3  3 f
f ( x  3x)  f ( x)  3x 

 O(3x) 4
x
2! x 2
3! x 3
EN3224 Dinâmica de Fluidos Computacional
 f
3
x
3

Exemplo 2: resolução

3 f
Podemos agora isolar
x 3
Somando a 1ª e
a 3ª expressão:

Somando a 1ª e
a 2ª expressão:

Somando estas
duas:

3 f i 1  f i 3

2 f
3 f
 2 f i  3(x) 2 2  4(x)3 3  O(x) 4
x
x

2 f
3 f
f i  2  2 f i 1   f i  (x) 2 2  (x)3 3  O(x) 4
x
x
f i 3  3 f i  2  3 f i  2  f i
3 f

 O(x)
3
3
x
(x)
EN3224 Dinâmica de Fluidos Computacional
Exemplo 2: resolução

 f
3
x
3

b) Usando fórmulas de recorrência:
 f
 f

 Ox 
n
x i x 
n

n
x i
n

 f
 f

 Ox 
3
x
x 
3

3
x i
3

3x f i  2x  x f i   2x  f i 1  f i    x  x f i 1   x f i 

  x  f i  2  f i 1    f i 1  f i    x  f i  2  2 f i 1  f i 

  x f i  2  2 x f i 1   x f i   f i 3  f i  2   2 f i  2  f i 1    f i 1  f i 
 f i 3  3 f i  2  3 f i 1  f i

f i 3  3 f i  2  3 f i 1  f i
3 f

 Ox 
3
3
x
x 
EN3224 Dinâmica de Fluidos Computacional
 f
3
x
3

Exemplo 2: resolução

c) Usando polinômio de terceiro grau

f ( x)  Ax  Bx  Cx  D
3

2

Precisaremos de quatro pontos:

xi  0
xi 1  x
xi  2  2x
xi 3  3x

EN3224 Dinâmica de Fluidos Computacional
Exemplo 2: resolução

 f
3
x
3

f i 3  A3x   B3x   C 3x   D
3

2

f i  2  A2x   B2x   C 2x   D
3

2

f i 1  Ax   Bx   C x   D
3

fi  D

2

D  fi
2 f i 3  9 f i  2  18 f i 1  11 f i
C
6x
 3 f i 3  12 f i  2  15 f i 1  6 f i
B
2
6x 
f i 3  3 f i  2  3 f i 1  f i
A
3
6x 
EN3224 Dinâmica de Fluidos Computacional
 f
3
x
3

Exemplo 2: resolução

As derivadas de f(x) são dadas por
f
 3 Ax 2  2 Bx  C
x

2 f
 6 Ax  2 B
2
x

3 f
 6A
3
x

f i 3  3 f i  2  3 f i 1  f i
3 f

 Ox 
3
3
x
x 
Com os três métodos obtivemos o mesmo
resultado.
EN3224 Dinâmica de Fluidos Computacional
Exemplo 3
f
Obtenha uma expressão de
para trás
x
com ordem (x)3

Solução:
A série de Taylor de f(x-x) é

f (x) 2  2 f (x)3  3 f
4
f ( x  x)  f ( x)  x 

 O(x)
2
3
x
2! x
3! x
EN3224 Dinâmica de Fluidos Computacional
Exemplo 3: resolução
f
Isolamos x :
x
2
2
3
3
f
(x)  f (x)  f
x
 f ( x)  f ( x  x) 

 O(x) 4
x
2! x 2
3! x 3
Usaremos
 2 f  f i 3  4 f i 2  5 f i 1  2 f i
2

 Ox 
2
2
x
x 

Diferença para trás de
segunda ordem da
segunda derivada

 3 f  f i 3  3 f i 2  3 f i 1  f i

 Ox 
3
3
x
x 

Diferença para trás de
primeira ordem da
terceira derivada

EN3224 Dinâmica de Fluidos Computacional
Exemplo 3: resolução
Substituindo:
f
(x) 2   f i 3  4 f i  2  5 f i 1  2 f i
2
x
 f i  f i 1 
 Ox  

2
x
2 
x 


(x)3   f i 3  3 f i  2  3 f i 1  f i

 Ox   O(x) 4

6 
x 3


f
6x
 2 f i 3  9 f i 2  18 f i 1  11  O(x) 4
x
f  2 f i 3  9 f i 2  18 f i 1  11

 O(x)3
x
6x
EN3224 Dinâmica de Fluidos Computacional
APROXIMAÇÕES DE DIFERENÇAS
FINITAS DE DERIVADAS PARCIAIS
MISTAS
EN3224 Dinâmica de Fluidos Computacional
Derivadas parciais mistas:
séries de Taylor
Considere a derivada parcial mista

2 f
xy

A expansão em série de Taylor para as duas variáveis x
e y de f(x+x,y+y) é dada pela expressão
f ( x  x, y  y )  f ( x, y )  x

f
f
 y
x
y

x 2  2 f  y 2  2 f

2!

x 2

y 2

2!



xy  2 f
3
3
2
 O x  , y 
2! xy
EN3224 Dinâmica de Fluidos Computacional


Derivadas parciais mistas:
séries de Taylor
Usando os índices i e j para representar o ponto (x,y)
na grade, a mesma expressão pode ser reescrita
como
f
f
2 f
f i 1, j 1  f i , j  x  y  xy
x
y
xy

x 2  2 f  y 2  2 f

2

x

2

2

y

2

EN3224 Dinâmica de Fluidos Computacional



 O x  , y 
3

3


Derivadas parciais mistas:
séries de Taylor
Pode-se aplicar o mesmo método e obter as
diferenciais em outras direções:
f
f
 2 f x   2 f y   2 f
3
3
f i 1, j 1  f i , j  x  y  xy


 O x  , y 
x
y
xy
2 x 2
2 y 2



f
f
 2 f x   2 f y   2 f
3
3
f i 1, j 1  f i , j  x  y  xy


 O x  , y 
x
y
xy
2 x 2
2 y 2



f
f
 2 f x   2 f y   2 f
3
3
f i 1, j 1  f i , j  x  y  xy


 O x  , y 
x
y
xy
2 x 2
2 y 2



2

2

2

EN3224 Dinâmica de Fluidos Computacional

2

2

2






Derivadas parciais mistas:
séries de Taylor
2 f
Isolando
nestas expressões, obtém-se
xy



f i 1, j 1  f i 1, j 1  f i 1, j 1  f i 1, j 1
2 f
2
2

 O x  , y 
xy
4(x)(y )

Diferenciais mistas de ordem superior podem ser
obtidas usando-se o mesmo método.

EN3224 Dinâmica de Fluidos Computacional


Diferenciais mistas com respeito a uma
variável independente
Considere a derivada parcial

2 f
  f 
  
xy x  x 

Usando a diferença central de ordem (y)2 para f
y
chega-se a
f i , j 1  f i , j 1
f
2

 Oy 
y
2y

Derivando em x:
2 f
  f i , j 1  f i , j 1 
2
 
 Oy 

xy x 
2y

EN3224 Dinâmica de Fluidos Computacional
Diferenciais mistas com respeito a uma
variável independente

2 f
  f i , j 1  f i , j 1 
1  f
f
2
2
 
 Oy  

 Oy 



xy x 
2y
2y  x i , j 1 x i , j 1 



2 para f
Aplicando-se diferença central de ordem (x)
x

chega-se a



2 f
1  f i 1, j 1  f i 1, j 1 f i 1, j 1  f i 1, j 1 
2
2


 O x  , y 


xy 2y 
2x
2x


E finalmente:





f i 1, j 1  f i 1, j 1  f i 1, j 1  f i 1, j 1
2 f
2
2

 O x  , y 
xy
4x y 
EN3224 Dinâmica de Fluidos Computacional


Diferenciais mistas com respeito a uma
variável independente
Usando diferenças para frente, chega-se a
2 f
  f    f i , j 1  f i , j 
  

  Oy 
 y  x
xy x  
y


1  f
f 



  Oy 
y  x i , j 1 x i , j 


1  f i 1, j 1  f i , j 1 f i 1, j  f i , j 



  Ox, y 
y 
x
x

f i 1, j 1  f i , j 1  f i 1, j  f i , j
2 f

xy
xy
EN3224 Dinâmica de Fluidos Computacional
Exercícios
• Problemas 2.8 do Hoffmann “Computational
Fluid Dynamics Vol.I”

EN3224 Dinâmica de Fluidos Computacional

CFD Aula 2

  • 1.
    Universidade Federal doABC Aula 2 Formulações via diferenças finitas EN3224 Dinâmica de Fluidos Computacional EN3224 Dinâmica de Fluidos Computacional
  • 2.
    Pergunta do dia: Comoescrever um programa de computador que resolva      v   0 t   v      v  v   p     g t   E     E v     kT   q     pv   v      v :   g  v t ? EN3224 Dinâmica de Fluidos Computacional
  • 3.
    Introdução • Os computadoressomente podem executar operações aritméticas padrão e operações lógicas. • As diferenciais de variáveis dependentes que aparecem em EDPs precisam ser traduzidas para expressões de diferenças finitas que as aproximam. dy y( x  x)  y( x)  lim dx x0 x EN3224 Dinâmica de Fluidos Computacional
  • 4.
    Métodos de aproximaçãode diferenciais 1. Expansão em séries de Taylor 2. Expansão em polinômios de grau n 3. Equações de diferenças finitas EN3224 Dinâmica de Fluidos Computacional
  • 5.
    DIFERENÇAS FINITAS VIA EXPANSÕESDE SÉRIES DE TAYLOR EN3224 Dinâmica de Fluidos Computacional
  • 6.
    Expansão em sériesde Taylor Dada um função analítica f(x), a expansão em série de Taylor de f(x+x) é dada por f (x)  f (x)  f f ( x  x)  f ( x)  (x)    2 3 x 2! x 3! x 2 2 (x) n  n f f ( x  x)  f ( x)   n n! x n 1  EN3224 Dinâmica de Fluidos Computacional 3 3
  • 7.
    A primeira diferencial f(x) 2  2 f (x)3  3 f f ( x  x)  f ( x)  (x)    2 3 x 2! x 3! x Isolando a primeira diferencial, obtemos f f ( x  x)  f ( x) x  2 f (x) 2  3 f     2 3 x x 2! x 3! x f f ( x  x)  f ( x)   O(x) x x EN3224 Dinâmica de Fluidos Computacional Soma de todos os termos com potências positivas de x
  • 8.
    A primeira diferencial parafrente... f f(x) f(x+x) f f ( x  x)  f ( x)   O(x) x x x EN3224 Dinâmica de Fluidos Computacional x+x x
  • 9.
    A primeira diferencial paratrás... f f(x-x) f(x) f f ( x)  f ( x  x)   O(x) x x x-x EN3224 Dinâmica de Fluidos Computacional x x
  • 10.
    Intervalos discretos iguais Introduçãoda indexação: O índice i (discreto) indica intervalos de valor x. f fi fi+1 f i 1  f i f   O(x) x i x f i  f i 1 f   O(x) x i x xi xi+1 x EN3224 Dinâmica de Fluidos Computacional x
  • 11.
    O que issoquer dizer... f i 1  f i f   O(x) x i x for ( i=imin; i<imax; i++ ) { dfdx[i] = ( fx[i+1] – fx[i] ) / (x[i+1] – x[i]); } O erro O(x) faz parte do “risco” assumido por quem está fazendo a modelagem. EN3224 Dinâmica de Fluidos Computacional
  • 12.
    A “diferença dasdiferenças” f (x)  f (x)  f f ( x  x)  f ( x)  x    2 3 x 2! x 3! x 2 2 3 3 f (x)  f (x)  f f ( x  x)  f ( x)  x    2 3 x 2! x 3! x 2 2 3 3 (negativa apenas nas potências ímpares de x) f (x)  f f ( x  x)  f ( x  x)  2x  2  3 x 3! x 3 EN3224 Dinâmica de Fluidos Computacional 3
  • 13.
    Aproximação da diferençacentral Isolando a primeira diferencial: f f ( x  x)  f ( x  x) 2   O(x) x 2x ou f i 1  f i 1 f   O(x) 2 x i 2x EN3224 Dinâmica de Fluidos Computacional Aproximação de diferença central da primeira derivada
  • 14.
    A segunda derivada Partindoda expansão em série de Taylor f (x)  f (x)  f f ( x  x)  f ( x)  x    2 3 x 2! x 3! x 2 2 3 3 Calculamos a expansão para f(x+2x): f (2x) 2  2 f (2x)3  3 f f ( x  2x)  f ( x)  (2x)    2 3 x 2! x 3! x EN3224 Dinâmica de Fluidos Computacional
  • 15.
    A segunda derivada Queremoscalcular -2f(x+x) + f(x+2x): f (x) 2  2 f (x)3  3 f 2 f ( x  x)  2 f ( x)  (2x)  2 2  2 3 x 2! x 3! x f (2x) 2  2 f (2x)3  3 f f ( x  2x)  f ( x)  (2x)    2 3 x 2! x 3! x Resultado: 2 f 3 f  2 f ( x  x)  f ( x  2x)   f ( x)  (x) 2 2  (x)3 3   x x EN3224 Dinâmica de Fluidos Computacional
  • 16.
    A segunda derivada f f ( x  2x)  2 f ( x  x)  f ( x)   O(x) 2 2 x (x) 2 ou f i  2  2 f i 1  f i 2 f   O(x) 2 2 x i (x) para frente f i  2 f i 1  f i 2 2 f   O(x) 2 2 x i (x) para trás EN3224 Dinâmica de Fluidos Computacional
  • 17.
    Aproximação via diferençacentral da segunda derivada Somando f (x)  f (x)  f f ( x  x)  f ( x)  x    2 3 x 2! x 3! x 2 e 2 3 3 f (x)  f (x)  f f ( x  x)  f ( x)  x    2 3 x 2! x 3! x 2 2 3 3 Resultado: 2 f f ( x  x)  2 f ( x)  f ( x  x)   O(x) 2 x 2 (x) 2 EN3224 Dinâmica de Fluidos Computacional
  • 18.
    Aproximação via diferençacentral da segunda derivada 2 f f ( x  x)  2 f ( x)  f ( x  x) 2   O(x) 2 2 x (x) f i 1  2 f i  f i 1  f   O(x) 2 x 2 i (x) 2 2 EN3224 Dinâmica de Fluidos Computacional Aproximação de diferença central da segunda derivada
  • 19.
    Derivadas de ordemsuperior Introduzindo a notação:  x f i  f i 1  f i  x f i  f i  f i 1 (diferença para frente) (diferença para trás) As diferenças de várias ordens podem ser expressas por expressões recursivas: nx f i  nx1  x f i   n f i   n 1  x f i  x x EN3224 Dinâmica de Fluidos Computacional
  • 20.
    Derivadas de ordemsuperior Fórmulas de recorrências derivadas das séries de Taylor: nx f i n f   Ox  n n x i x  (para frente) n fi n f  x n  Ox  x n i x  (para trás)  f  n x i n  f  n x i n nx f i  n   n f i  n x 2 2x  2 n nx f i  ( n 1)  n f x 2 2x  n (diferença central, n par)  Ox  i  ( n 1) 2 2  Ox  EN3224 Dinâmica de Fluidos Computacional 2 (diferença central, n ímpar)
  • 21.
    Mais precisão? Até aqui,foram considerados apenas os termos até a primeira ordem da série de Taylor. Pode-se aumentar a precisão (diminuir o erro) considerando-se mais termos da expansão em série de Taylor. Como resultado, obtém-se expressões mais trabalhosas, mas mais precisas. Exemplo: f  f ( x  2x)  4 f ( x  x)  3 f ( x)   O(x) 2 x 2x Aproximação de segunda ordem para frente da primeira derivada EN3224 Dinâmica de Fluidos Computacional
  • 22.
    DIFERENÇAS FINITAS VIA EXPANSÕESDE POLINÔMIOS EN3224 Dinâmica de Fluidos Computacional
  • 23.
    Expansão em polinômios Dadaum função analítica f(x), pode-se considerar que em um dado intervalo a função possa ser aproximada por um polinômio de grau n. Por exemplo f ( x)  Ax  Bx  C 2 EN3224 Dinâmica de Fluidos Computacional
  • 24.
    Exemplo f ( x) Ax  Bx  C 2 xi  0 xi 1  x xi  2  2x f ( xi )  C f ( xi 1 )  Ax   Bx   C 2 f ( xi  2 )  A2x   B2x   C 2 Aproximação via polinômio de segunda ordem. EN3224 Dinâmica de Fluidos Computacional
  • 25.
    A primeira derivada C fi fi  C  f i  2  4 f i 1  3 f i B 2x  f i  2  2 f i 1  f i A 2 2x  f i 1  Ax   Bx   C 2 f i  2  A2x   B2x   C 2 Aproximação via polinômio de segunda ordem: f  2 Ax  B x xi=0 f  f i  2  4 f i 1  3 f i  x 2x EN3224 Dinâmica de Fluidos Computacional
  • 26.
    A segunda derivada C fi fi  C  f i  2  4 f i 1  3 f i B 2x  f i  2  2 f i 1  f i A 2 2x  f i 1  Ax   Bx   C 2 f i  2  A2x   B2x   C 2 Aproximação via polinômio de segunda ordem:  f  2A 2 x 2 f i  2  2 f i 1  f i 2 f  2 x (x) 2 EN3224 Dinâmica de Fluidos Computacional
  • 27.
    Espaçamento não uniforme f( x)  Ax  Bx  C 2 xi  0 xi 1  x xi  2  (1   )x f ( xi )  C f ( xi 1 )  Ax   Bx   C 2 f ( xi  2 )  A1    x   B1   x  C 2 EN3224 Dinâmica de Fluidos Computacional 2
  • 28.
    A primeira derivada fi C f i 1  Ax   Bx   C 2 f i  2  A1    x   B1   x  C 2 2 C  fi Aproximação via polinômio de segunda ordem: f  2 Ax  B x    f i  2  1    f i 1   2  2 f i B  1   x f i  2  1    f i 1  f i A  1   x 2 2  f i  2  (1   ) 2 f i 1   (  2) f i f  x i  (1   )x EN3224 Dinâmica de Fluidos Computacional
  • 29.
    A segunda derivada fi C f i 1  Ax   Bx   C 2 f i  2  A1    x   B1   x  C 2 2 C  fi Aproximação via polinômio de segunda ordem:  f  2A 2 x 2    f i  2  1    f i 1   2  2 f i B  1   x f i  2  1    f i 1  f i A  1   x 2 2  f i  2  (1   ) f i 1  f i  2 f  2  2 x  (1   )(x) 2   EN3224 Dinâmica de Fluidos Computacional
  • 30.
    EQUAÇÕES DE DIFERENÇASFINITAS EN3224 Dinâmica de Fluidos Computacional
  • 31.
    Equações de diferençasfinitas Usaremos as expressões apresentadas para reescrever as EDPs da Mecânica dos Fluidos. Nosso interesse é obter expressões que possam ser incluídas em algoritmos e programas escritos em linguagens de programação. EN3224 Dinâmica de Fluidos Computacional
  • 32.
    Um estudo decaso Consideremos a EDP: Dependência no tempo  f  f f   2  2  x t y  2  é uma constante EN3224 Dinâmica de Fluidos Computacional 2     Duas dependências no espaço
  • 33.
  • 34.
    Primeira derivada notempo  f  f f   2  2  x t y  2 f f  t 2 n 1 i, j     f t n i, j  O(t ) Diferença para frente de primeira ordem EN3224 Dinâmica de Fluidos Computacional
  • 35.
    Segundas derivadas noespaço  f  f f   2  2  x t y  2 2     f  f  2 y 2  f  2 x 2 n n f i 1, j  2 f i ,nj  f i 1, j (x) 2 n i , j 1 2f  f n i, j 2 (y)  O(x) EN3224 Dinâmica de Fluidos Computacional 2 n i , j 1  O(y ) 2 Diferenças centrais de segunda ordem
  • 36.
    A expressão final f  f f   2  2  x t y  2 2     EDP Equação a diferenças finitas f i ,nj1  f i ,nj t n n  f i 1, j  2 f i ,nj  f i 1, j f i ,nj 1  2 f i ,nj  f i ,nj 1      2 2 (x) (y )      O t , (x) 2 , (y ) 2   EN3224 Dinâmica de Fluidos Computacional
  • 37.
    Para frente epara trás no tempo Formulação explícita (avança no tempo): f i ,nj1  f i ,nj t n  f i 1, j  2 f i ,nj  in1, j f i ,nj 1  2 f i ,nj  f i ,nj 1      2 2 (x) (y )      O t , (x) 2 , (y ) 2   Formulação implícita (volta no tempo): f i ,nj1  f i ,nj t n  f i 1,1j  2 f i ,nj1  in11, j f i ,nj11  2 f i ,nj1  f i ,nj11      2 2 (x) (y )      O t , (x) 2 , (y ) 2   EN3224 Dinâmica de Fluidos Computacional
  • 38.
    Explícita x implícita Explícita •Tem apenas uma incógnita f n 1 i, j Implícita • Tem cinco incógnitas f n 1 i 1, j , f f n 1 i , j 1 n 1 i 1, j ,f ,f n 1 i, j , n 1 i , j 1 • Simples e rápida • A solução exige que toda a matriz seja resolvida simultaneamente • Instável • Estável EN3224 Dinâmica de Fluidos Computacional
  • 39.
    Exemplo 1 4 f Acheuma estimativa para frente para x 4 Solução: nx f i n f Partindo de   Ox  n n x i x  Com n=4 obtemos 4 f 1  4x f i  Ox  x 4 i x 4 EN3224 Dinâmica de Fluidos Computacional
  • 40.
    Exemplo 1: resolução n n1 Aplicando  x f i   x  x f i  4x f i  3x  x f i   3x  f i 1  f i   2x  x f i 1   x f i   2x  f i  2  f i 1    f i 1  f i   2x  f i  2  2 f i 1  f i    x  x f i  2  2 x f i 1   x f i    x  f i 3  f i  2   2 f i  2  f i 1    f i 1  f i    x  f i 3  3 f i  2  3 f i 1  f i    x f i 3  3 x f i  2  3 x f i 1   x f i  ( f i  4  f i 3 )  3( f i 3  f i  2 )  3( f i  2  f i 1 )   f i 1  f i   f i  4  4 f i 3  6 f i  2  4 f i 1  f i 4 f 1  fi4  4 fi 3  6 fi 2  4 fi1  fi   Ox   4 4 x i x  EN3224 Dinâmica de Fluidos Computacional
  • 41.
    Exemplo 2 Compare asexpressões obtidas para a representação de diferenças finitas para frente  f quando calculadas via: 3 x 3 de a) Séries de Taylor b) Fórmulas de recorrência c) Polinômio do terceiro grau EN3224 Dinâmica de Fluidos Computacional
  • 42.
     f 3 x 3 Exemplo 2:resolução a) Expansão em série de Taylor Precisaremos de três pontos: 1 f (x) 2  2 f (x)3  3 f f ( x  x)  f ( x)  x    O(x) 4 x 2! x 2 3! x 3 2 f (2x) 2  2 f (2x)3  3 f f ( x  2x)  f ( x)  2x    O(2x) 4 x 2! x 2 3! x 3 3 f (3x) 2  2 f (3x)3  3 f f ( x  3x)  f ( x)  3x    O(3x) 4 x 2! x 2 3! x 3 EN3224 Dinâmica de Fluidos Computacional
  • 43.
     f 3 x 3 Exemplo 2:resolução 3 f Podemos agora isolar x 3 Somando a 1ª e a 3ª expressão: Somando a 1ª e a 2ª expressão: Somando estas duas: 3 f i 1  f i 3 2 f 3 f  2 f i  3(x) 2 2  4(x)3 3  O(x) 4 x x 2 f 3 f f i  2  2 f i 1   f i  (x) 2 2  (x)3 3  O(x) 4 x x f i 3  3 f i  2  3 f i  2  f i 3 f   O(x) 3 3 x (x) EN3224 Dinâmica de Fluidos Computacional
  • 44.
    Exemplo 2: resolução f 3 x 3 b) Usando fórmulas de recorrência:  f  f   Ox  n x i x  n n x i n  f  f   Ox  3 x x  3 3 x i 3 3x f i  2x  x f i   2x  f i 1  f i    x  x f i 1   x f i    x  f i  2  f i 1    f i 1  f i    x  f i  2  2 f i 1  f i    x f i  2  2 x f i 1   x f i   f i 3  f i  2   2 f i  2  f i 1    f i 1  f i   f i 3  3 f i  2  3 f i 1  f i f i 3  3 f i  2  3 f i 1  f i 3 f   Ox  3 3 x x  EN3224 Dinâmica de Fluidos Computacional
  • 45.
     f 3 x 3 Exemplo 2:resolução c) Usando polinômio de terceiro grau f ( x)  Ax  Bx  Cx  D 3 2 Precisaremos de quatro pontos: xi  0 xi 1  x xi  2  2x xi 3  3x EN3224 Dinâmica de Fluidos Computacional
  • 46.
    Exemplo 2: resolução f 3 x 3 f i 3  A3x   B3x   C 3x   D 3 2 f i  2  A2x   B2x   C 2x   D 3 2 f i 1  Ax   Bx   C x   D 3 fi  D 2 D  fi 2 f i 3  9 f i  2  18 f i 1  11 f i C 6x  3 f i 3  12 f i  2  15 f i 1  6 f i B 2 6x  f i 3  3 f i  2  3 f i 1  f i A 3 6x  EN3224 Dinâmica de Fluidos Computacional
  • 47.
     f 3 x 3 Exemplo 2:resolução As derivadas de f(x) são dadas por f  3 Ax 2  2 Bx  C x 2 f  6 Ax  2 B 2 x 3 f  6A 3 x f i 3  3 f i  2  3 f i 1  f i 3 f   Ox  3 3 x x  Com os três métodos obtivemos o mesmo resultado. EN3224 Dinâmica de Fluidos Computacional
  • 48.
    Exemplo 3 f Obtenha umaexpressão de para trás x com ordem (x)3 Solução: A série de Taylor de f(x-x) é f (x) 2  2 f (x)3  3 f 4 f ( x  x)  f ( x)  x    O(x) 2 3 x 2! x 3! x EN3224 Dinâmica de Fluidos Computacional
  • 49.
    Exemplo 3: resolução f Isolamosx : x 2 2 3 3 f (x)  f (x)  f x  f ( x)  f ( x  x)    O(x) 4 x 2! x 2 3! x 3 Usaremos  2 f  f i 3  4 f i 2  5 f i 1  2 f i 2   Ox  2 2 x x  Diferença para trás de segunda ordem da segunda derivada  3 f  f i 3  3 f i 2  3 f i 1  f i   Ox  3 3 x x  Diferença para trás de primeira ordem da terceira derivada EN3224 Dinâmica de Fluidos Computacional
  • 50.
    Exemplo 3: resolução Substituindo: f (x)2   f i 3  4 f i  2  5 f i 1  2 f i 2 x  f i  f i 1   Ox    2 x 2  x    (x)3   f i 3  3 f i  2  3 f i 1  f i   Ox   O(x) 4  6  x 3  f 6x  2 f i 3  9 f i 2  18 f i 1  11  O(x) 4 x f  2 f i 3  9 f i 2  18 f i 1  11   O(x)3 x 6x EN3224 Dinâmica de Fluidos Computacional
  • 51.
    APROXIMAÇÕES DE DIFERENÇAS FINITASDE DERIVADAS PARCIAIS MISTAS EN3224 Dinâmica de Fluidos Computacional
  • 52.
    Derivadas parciais mistas: sériesde Taylor Considere a derivada parcial mista 2 f xy A expansão em série de Taylor para as duas variáveis x e y de f(x+x,y+y) é dada pela expressão f ( x  x, y  y )  f ( x, y )  x f f  y x y x 2  2 f  y 2  2 f  2! x 2 y 2 2!  xy  2 f 3 3 2  O x  , y  2! xy EN3224 Dinâmica de Fluidos Computacional 
  • 53.
    Derivadas parciais mistas: sériesde Taylor Usando os índices i e j para representar o ponto (x,y) na grade, a mesma expressão pode ser reescrita como f f 2 f f i 1, j 1  f i , j  x  y  xy x y xy x 2  2 f  y 2  2 f  2 x 2 2 y 2 EN3224 Dinâmica de Fluidos Computacional   O x  , y  3 3 
  • 54.
    Derivadas parciais mistas: sériesde Taylor Pode-se aplicar o mesmo método e obter as diferenciais em outras direções: f f  2 f x   2 f y   2 f 3 3 f i 1, j 1  f i , j  x  y  xy    O x  , y  x y xy 2 x 2 2 y 2  f f  2 f x   2 f y   2 f 3 3 f i 1, j 1  f i , j  x  y  xy    O x  , y  x y xy 2 x 2 2 y 2  f f  2 f x   2 f y   2 f 3 3 f i 1, j 1  f i , j  x  y  xy    O x  , y  x y xy 2 x 2 2 y 2  2 2 2 EN3224 Dinâmica de Fluidos Computacional 2 2 2   
  • 55.
    Derivadas parciais mistas: sériesde Taylor 2 f Isolando nestas expressões, obtém-se xy  f i 1, j 1  f i 1, j 1  f i 1, j 1  f i 1, j 1 2 f 2 2   O x  , y  xy 4(x)(y ) Diferenciais mistas de ordem superior podem ser obtidas usando-se o mesmo método. EN3224 Dinâmica de Fluidos Computacional 
  • 56.
    Diferenciais mistas comrespeito a uma variável independente Considere a derivada parcial 2 f   f     xy x  x  Usando a diferença central de ordem (y)2 para f y chega-se a f i , j 1  f i , j 1 f 2   Oy  y 2y Derivando em x: 2 f   f i , j 1  f i , j 1  2    Oy   xy x  2y  EN3224 Dinâmica de Fluidos Computacional
  • 57.
    Diferenciais mistas comrespeito a uma variável independente  2 f   f i , j 1  f i , j 1  1  f f 2 2    Oy     Oy     xy x  2y 2y  x i , j 1 x i , j 1     2 para f Aplicando-se diferença central de ordem (x) x chega-se a  2 f 1  f i 1, j 1  f i 1, j 1 f i 1, j 1  f i 1, j 1  2 2    O x  , y    xy 2y  2x 2x  E finalmente:   f i 1, j 1  f i 1, j 1  f i 1, j 1  f i 1, j 1 2 f 2 2   O x  , y  xy 4x y  EN3224 Dinâmica de Fluidos Computacional 
  • 58.
    Diferenciais mistas comrespeito a uma variável independente Usando diferenças para frente, chega-se a 2 f   f    f i , j 1  f i , j        Oy   y  x xy x   y   1  f f       Oy  y  x i , j 1 x i , j    1  f i 1, j 1  f i , j 1 f i 1, j  f i , j       Ox, y  y  x x  f i 1, j 1  f i , j 1  f i 1, j  f i , j 2 f  xy xy EN3224 Dinâmica de Fluidos Computacional
  • 59.
    Exercícios • Problemas 2.8do Hoffmann “Computational Fluid Dynamics Vol.I” EN3224 Dinâmica de Fluidos Computacional