Pular para o conteúdo principal

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