Ideia Básica
Computação Científica em Julia¶
Simples, resolver as equações de Navier-Stokes:
- Vamos ficar em escoamento incompressível
- Vamos usar uma metodologia apenas
- Isso será feito de maneira construtiva
- A jornada é mais importante que o destino (neste caso pelo menos...)
Equações de Navier-Stokes incompressível¶
-
Segunda lei de Newton $$ \frac{\partial \pmb{u}}{\partial t} + \pmb{u}\cdot\nabla\pmb{u} = -\nabla p + \frac{1}{Re}\nabla^2\pmb{u} $$
-
Conservação de massa $$ \nabla\cdot\pmb{u} = 0 $$
Integrando as equações de Navier Stokes¶
Podemos reescrever as equações de Navier Stokes como: $$ \frac{\partial \pmb{u}}{\partial t} = -\nabla p + \frac{1}{Re}\pmb{L}(\pmb{u}) + \pmb{N}(\pmb{u}) $$
onde
$$ \pmb{L}(\pmb{u}) \equiv \nabla^2\pmb{u} = \nabla(\nabla\cdot\pmb{u}) - \nabla\times(\nabla\times\pmb{u})\\ \pmb{N}(\pmb{u}) \equiv - \pmb{u}\cdot\nabla\pmb{u} = -\frac{1}{2}\left[ \pmb{u}\cdot\nabla\pmb{u} + \nabla(\pmb{u}\cdot\pmb{u})\right] $$
Dado o campo de velocidades no instante $t_n$, como calcular isso no instante $t_{n+1}$
$$ \pmb{u}^{n+1} - \pmb{u}^{n}= -\int_{t_n}^{t_{n+1}} \nabla p \: dt + \frac{1}{Re}\int_{t_n}^{t_{n+1}} \pmb{L}(\pmb{u})\:dt + \int_{t_n}^{t_{n+1}} \pmb{N}(\pmb{u})\:dt $$
Termo da pressão:¶
$$ \int_{t_n}^{t_{n+1}} \nabla p \: dt = \Delta t \nabla\bar{p}^{n+1} $$ $\bar{p}^{n+1}$ é o campo escalar que garante que o campo de velocidades seja incompressível no instante n+1
Termo convectivo (Adams-Bashforth):¶
$$ \int_{t_n}^{t_{n+1}} \pmb{N}(\pmb{u})\:dt = \Delta t \sum_{q=0}^{J_e-1}\beta_q \pmb{N}(\pmb{u^{n-q}}) $$
Termo difusivo (Adams-Moulton):¶
$$ \int_{t_n}^{t_{n+1}} \pmb{L}(\pmb{u})\:dt = \Delta t \sum_{q=0}^{J_i-1}\gamma_q \pmb{L}(\pmb{u^{n+1-q}}) $$
O esquema de integração tem a seguinte forma:¶
$$ \frac{\pmb{\hat{u}}-\pmb{u^n}}{\Delta t} = \sum_{q=0}^{J_e-1}\beta_q \pmb{N}(\pmb{u^{n-q}})\\ \frac{\pmb{\hat{\hat{u}}}-\pmb{\hat{u}}}{\Delta t} = - \nabla \bar{p}^{n+1}\\ \frac{\pmb{u}^{n+1} - \pmb{\hat{\hat{u}}}}{\Delta t} = \frac{1}{Re} \sum_{q=0}^{J_i-1}\gamma_q \pmb{L}(\pmb{u^{n+1-q}})\\ $$
E a pressão? $$ \nabla^2\bar{p}^{n+1} = \nabla\cdot\left[\left(\frac{\pmb{\hat{u}}}{\Delta t} \right) + \frac{1}{Re} \sum_{q=0}^{J_i-1}\gamma_q \pmb{L}(\pmb{u^{n+1-q}})\right] $$
Este equacionamento não é para assustar mas sim mostrar algumas coisas¶
- Software numérico é construído a partir de elementos mais básicos que incluem:
- Integração numérica
- Diferenciação
- Aproximação
- Sistemas de equaões algébricas lineares (e não lineares)
- Resolvendo problemas simples permite ir longe: $$ \nabla^2 u + \lambda u = f(x) $$
Roteiro para $\nabla^2 u = f$¶
- $u^\delta(x) = \sum \hat{u}_k \phi_k(x) \approx u(x)$ - Aproximação e interpolação
- $\nabla^2 u^\delta - f = \varepsilon(x)$ - Erro da equação diferencial
- Resíduos ponderados $\int_\Omega w_i(x) \nabla^2 u^\delta \:dx = \int_\Omega f w_i(x)\:dx$
- Formulação fraca: $ -\int_\Omega \nabla w_i(x) \cdot \nabla u^\delta \:dx + \int_{\partial\Omega} w_i\frac{\partial u}{\partial n} = \int_\Omega f w_i(x)\:dx$
- Galerkin: $w_i(x) = \phi_i(x)$
- Sistema linear: $\left[A\right]\cdot\left\{\hat{u}\right\} = \left\{f\right\}$, $$A_{i,k} = -\int_\Omega\nabla\phi_i\cdot\nabla\phi_k\:dx + \int_{\partial\Omega}\phi_i\frac{\partial u}{\partial n}\\ f_i = \int_\Omega f\phi_i\:dx $$
O que vamos fazer:¶
- Aprender a aproximar funções (e dados): $$ u(x)\approx u^\delta(x) = \sum_{i=1}^N \hat{u}_i \phi_i(x) $$
- Aprender a calcular integrais: $$ \int_a^b u(x)\:dx \approx \sum_{i=1}^N \omega_i u(x_i) $$
- Aprender a calcular derivadas: $$ \frac{du(x)}{dx} $$
- Juntar tudo isso e tornar problemas mais difíceis em mais fáceis:
- Problema não linear -> Problema linear
- Equação diferencial parcial -> Equação diferencial ordinária
- Reduzir praticamente qualquer problema em um sequência de sistemas lineares.
Nesta jornada vamos tentar aprender a programar em Julia¶
- A linguagem de programação Julia
- Engenharia de Software: pode ser utilizado em muito mais do que software apenas!
- Pensar nas nossas ferramentas e ambiente
Comentários
Comments powered by Disqus