Sie sind auf Seite 1von 9

Universidade Federal do ABC

Engenharia Aeroespacial

4ª Atividade de Laboratório:
Métodos Conservativos para PDE’s
Não-Lineares

Relatório para a disciplina ESZS035-17 - Dinâmica de


Fluidos Computacional - Prof. Dr. Marcelo T. Hayashi.

Aluno: Leonardo Rodrigues Dias


RA: 11009814

São Bernardo do Campo, 2017


1 Definição do Problema
Para uma função f (u) = u2 /2, é dada a equação de Burgers invı́scida unidimensional
em sua forma conservativa:
∂u ∂f (u)
+ = 0, (1)
∂t ∂x
e em sua forma não-conservativa:

∂u ∂u
+u = 0, (2)
∂t ∂x

onde u é uma quantidade escalar com solução inicial



u para x < xc
1
u(x, 0) = u0 (x) = (3)
u
2 para x ≥ xc

As Eqs. (1) e (2) são resolvidadas analiticamente e também numericamente, a partir


do MATLAB, para um domı́nio espacial 0 ≤ x ≤ 3 discretizado uniformemente com
∆x = 0.015 e um domı́nio temporal 0 ≤ t ≤ 2 com ∆t = 0.01.

2 Solução Analı́tica
A solução analı́tica do problema é dada por:

u(x, t) = u0 (x − vt), (4)

sendo v a velocidade de propagação da descontinuidade, neste caso dada por:

u1 + u2
v= . (5)
2

Aplicando a condição inicial dada, temos:



u
1 para x − vt < xc
u(x, t) = (6)
u
2 para x − vt ≥ xc

que pode ser facilmente implementada no MATLAB (Apêndice A).

1
3 Solução Numérica
Foi utilizado, para ambas as formas da equação de Burgers (Eq.s (1) e (2)), uma
discretização upwind de primeira ordem, i.e., primeira ordem no espaço e forward de
primeira ordem no tempo (já que a descontinuidade se propaga com velocidade |v| no
sentido positivo do eixo x).

3.1 Upwind de primeira ordem da forma conservativa


Para esse esquema, podemos escrever a Eq. (1) discretizada da forma:
h i2 
(n+1) (n) ∆t (n)
i2 h
(n)
uj = uj − uj+1 − uj−1 . (7)
2∆x

3.2 Upwind de primeira ordem da forma não-conservativa


A equação de diferenças da Eq. (2) pode ser escrita da seguinte maneira:

(n+1) (n) ∆t (n) h (n) (n)


i
uj = uj − u uj+1 − uj−1 . (8)
∆x j

2
4 Resultados

Figura 1: Soluções exata e numérica da forma conservativa

Figura 2: Soluções exata e numérica da forma não-conservativa

É possı́vel perceber, da Figura 1, que a solução numérica da forma conservativa da


equação de Burgers não é exatamente descontı́nua, apresentando uma leve divergência da
solução analı́tica quando analisamos as proximidades da descontinuidade. No restante do
domı́nio, no entanto, o resultado é praticamente exato e se propaga com velocidade igual
à da solução analı́tica. Já a solução numérica da forma não-conservativa (Figura 2) difere

3
completamente da solução real, com a descontinuidade se mantendo estacionária ao longo
do tempo.
Se houvessemos optado por uma discretização espacial centrada em vez da upwind
aqui utilizada, as soluções, tanto para a forma conservativa quanto para a forma não-
conservativa, provavelmente apresentariam um comportamento fortemente dispersivo,
como aconteceu ao utilizarmos um esquema desse tipo na 3ª atividade de laboratório.
Isso deve ocorrer pois a equação de Burgers também representa uma quantidade se pro-
pagando no espaço em um sentido especı́fico. Neste caso, possuimos ainda uma variação
abrupta dos valores da função em um intervalo pequeno de espaço, que deve contribuir
para que o resultado divirja rapidamente.

4
A Código do MATLAB para solução analı́tica

1 % dados
2 u_1 = 1; u_2 = 0; x_c = 0.5;
3
4 % intervalos de discretizaç~
ao
5 dx = 0.015; dt = 0.01;
6
7 % domı́nio
8 x_max = 3; t_max = 2;
9 X = round ( x_max / dx ) ; % numero de intervalos espaciais
10
11 % discretizaç~ a o espacial
12 x = zeros (1 , X +1) ;
13 for j = 1: X
14 x ( j +1) = x ( j ) + dx ;
15 end
16
17 v = ( u_1 + u_2 ) /2; % velocidade de propagaç~
a o da
descontinuidade
18
19 u = zeros (1 , X +1) ;
20 for t = 0: dt : t_max
21 for j = 1: X +1
22 if x ( j ) - v * t < x_c
23 u ( j ) = u_1 ;
24 elseif x ( j ) - v * t >= x_c
25 u ( j ) = u_2 ;
26 end
27 end
28 % plot após cada passo de tempo
29 plot (x ,u , ' LineWidth ' ,1.5)
30 title ([ ' t = ' , num2str ( t ) ]) ; xlim ([0 x_max ]) ; ylim ([ -0.5
1.5]) ;
31 xlabel ( ' x ' ) ; ylabel ( ' u ' ) ; grid
32 pause ( dt )
33 end

5
B Código do MATLAB para solução numérica da
forma conservativa

1 %% Parte 2 - Forward de primeira ordem e centrado de segunda


ordem
2
3 clc ; close all ; clear all
4
5 % dados
6 u_1 = 1;
7 u_2 = 0;
8 x_c = 0.5;
9
10 % intervalos de discretizaç~ ao
11 dx = 0.015;
12 dt = 0.01;
13
14 % pontos de amostragem
15 t_A = 1;
16 t_B = 2;
17
18 % domı́nio
19 x_max = 3; % 0 <= x <= 3
20 t_max = 2; % 0 <= t <= 2
21 X = round ( x_max / dx ) ; % numero de intervalos espaciais
22 T = round ( t_max / dt ) ; % numero de intervalos temporais
23
24 % discretizaç~ a o espacial
25 x = zeros (1 , X +1) ;
26 for j = 1: X
27 x ( j +1) = x ( j ) + dx ;
28 end
29
30 u_0 = zeros (1 , X +1) ;
31
32 % condiç~ a o de contorno
33 u_0 (1) = 1;

6
34
35 % condiç~
a o inicial
36 for j = 1: X +1
37 if x ( j ) < x_c
38 u_0 ( j ) = u_1 ;
39 elseif x ( j ) >= x_c
40 u_0 ( j ) = u_2 ;
41 end
42 end
43
44 %% Soluç~
a o numérica
45
46 u_n = u_0 ; u_n1 = u_0 ;
47 for n = 1: T
48 % soluç~ a o para os nós internos
49 for j = 2: X
50 u_n1 ( j ) = u_n ( j ) - (( dt /(2* dx ) ) *(( u_n ( j ) ) ^2 - ( u_n (j
-1) ) ^2) ) ;
51 end
52
53 if abs ( dt * n - t_A ) < 1e -10
54 u_A1 = u_n1 ;
55 end
56 if abs ( dt * n - t_B ) < 1e -10
57 u_B1 = u_n1 ;
58 end
59
60 u_n = u_n1 ;
61 end
62
63 l = 1; m = 1.35;
64 figure ( ' position ' , m *[0 , 0 , 350 , 262])
65 plot (x , u_A1 , ' color ' ,[1 0 0] , ' LineWidth ' ,l )
66 hold on
67 plot (x , u_B1 , ' color ' ,[0 0 1] , ' LineWidth ' ,l )
68 hold on
69

7
70 %% Soluç~ a o exata
71
72 v = ( u_1 + u_2 ) /2; % velocidade de propagaç~ a o da
descontinuidade
73
74 u = zeros (1 , X +1) ;
75 for t = 0: dt : t_max
76 for j = 1: X +1
77 if x ( j ) - v * t < x_c
78 u ( j ) = u_1 ;
79 elseif x ( j ) - v * t >= x_c
80 u ( j ) = u_2 ;
81 end
82 end
83
84 if abs ( t - t_A ) < 1e -10
85 u_A2 = u ;
86 end
87 if abs ( t - t_B ) < 1e -10
88 u_B2 = u ;
89 end
90 end
91
92 plot (x , u_A2 , ' -- ' , ' color ' ,[0 0 0.1724] , ' LineWidth ' ,l )
93 hold on
94 plot (x , u_B2 , ' -- ' , ' color ' ,[1 0.1034 0.7241] , ' LineWidth ' ,l )
95 hold off
96 % title ( ' Soluç~ a o numérica x Soluç~ a o analı́tica ' )
97 xlim ([0 x_max ]) ; ylim ([ -0.5 1.5])
98 xlabel ( ' x ' ) ; ylabel ( ' u ' )
99 legend ([ ' Numérica : t = ' , num2str ( t_A ) ] ,[ ' Numérica : t = ' ,
num2str ( t_B ) ] ,[ ' Exata : t = ' , num2str ( t_A ) ] ,[ ' Exata : t = ' ,
num2str ( t_B ) ])
100 legend ( ' Location ' , ' northeast ' )
101 grid
102 print ( ' relatório \ imagens \ ae . png ' , ' - dpng ' , ' - r300 ' )