Cite como: Barba, Lorena A. e Forsyth, Gilbert F. (2018). CFD Python: as 12 etapas para as equações de Navier-Stokes. Journal of Open Source Education , 1 (9), 21, https://doi.org/10.21105/jose.00021
CFD Python , também conhecido como as 12 etapas de Navier-Stokes , é um módulo prático para aprender os fundamentos da Dinâmica de Fluidos Computacional (CFD), codificando soluções para as equações diferenciais parciais básicas que descrevem a física do fluxo de fluidos. O módulo fez parte de um curso ministrado pela Prof. Lorena Barba entre 2009 e 2013 no departamento de Engenharia Mecânica da Universidade de Boston (a Prof. Barba desde então mudou-se para a George Washington University).
O módulo pressupõe apenas conhecimentos básicos de programação (em qualquer linguagem) e alguma experiência em equações diferenciais parciais e mecânica dos fluidos. Os "passos" foram inspirados nas ideias do Dr. Rio Yokota, que fez pós-doutorado no laboratório do Prof. Barba até 2011, e as lições foram refinadas pela Prof. Barba e seus alunos ao longo de vários semestres ministrando o curso CFD. Escrevemos este conjunto de cadernos Jupyter em 2013 para ministrar um curso intensivo de dois dias em Mendoza, Argentina.
Guiando os alunos por essas etapas (sem pular nenhuma!), eles aprendem muitas lições valiosas. A natureza incremental dos exercícios significa que eles têm uma sensação de realização no final de cada tarefa e sentem que estão aprendendo com pouco esforço. À medida que progridem, eles praticam naturalmente a reutilização de código e aprendem gradualmente técnicas de programação e plotagem. À medida que analisam os seus resultados, aprendem sobre difusão numérica, precisão e convergência. Em cerca de quatro semanas de um curso regular, eles se tornam programadores moderadamente proficientes e ficam motivados a começar a discutir assuntos mais teóricos.
Em um curso universitário regular, os alunos podem concluir as aulas de CFD Python em 4 a 5 semanas. Sendo um tutorial intensivo, o módulo pode ser concluído em dois ou três dias completos, dependendo da experiência anterior do aluno. As lições também podem ser usadas para auto-estudo. Em todos os casos, os alunos devem seguir os exemplos trabalhados em cada lição, digitando novamente o código em um novo bloco de notas Jupyter, talvez fazendo anotações originais enquanto experimentam.
Inicie uma sessão interativa com este módulo usando o serviço Binder:
As etapas 1 a 4 estão em uma dimensão espacial. As etapas 5 a 10 estão em duas dimensões (2D). As etapas 11–12 resolvem a equação de Navier-Stokes em 2D. Três cadernos "bônus" cobrem a condição CFL para estabilidade numérica, operações de array com NumPy e definição de funções em Python.
Para usar essas lições, você precisa do Python 3 e da pilha padrão de Python científico: NumPy, Matplotlib, SciPy, Sympy. E, claro, você precisa do Jupyter – um ambiente computacional interativo que roda em um navegador da web.
Este minicurso é construído como um conjunto de notebooks Jupyter contendo materiais escritos e soluções elaboradas em código Python. Para trabalhar com o material, recomendamos que você comece cada lição com um caderno novo e siga em frente, digitando cada linha de código (não copie e cole!), e explore alterando parâmetros e vendo o que acontece.
Após a instalação, para garantir que seus pacotes estejam atualizados, execute os seguintes comandos em um terminal:
conda update conda
conda update jupyter numpy sympy scipy matplotlib
Se você preferir o Miniconda (uma versão mini do Anaconda que economiza espaço em disco), instale todas as bibliotecas necessárias para seguir este curso executando os seguintes comandos em um terminal:
conda update conda
conda install jupyter
conda install numpy scipy sympy matplotlib
pip install jupyter
Certifique-se também de ter as bibliotecas necessárias instaladas executando
pip install numpy scipy sympy matplotlib
Aceitamos contribuições via pull request – na verdade, vários usuários já enviaram pull requests fazendo correções ou pequenas melhorias. Você também pode abrir um problema se encontrar um bug ou tiver uma sugestão.
(c) 2017 Lorena A. Barba, Gilbert F. Forsyth. Todo o conteúdo está sob Creative Commons Attribution CC-BY 4.0 e todo o código está sob a cláusula BSD-3 (anteriormente sob MIT e alterado em 8 de março de 2018).
Ficaremos felizes se você reutilizar o conteúdo de alguma forma!