Um ambiente "Jupyter Sandbox" acoplado ao Xcompact3d, um código acadêmico de alta ordem para Fluidodinâmica Computacional

Resumo

Este trabalho visa quebrar muitas das barreiras de entrada em um código acadêmico que resolva Navier-Stokes, acoplando-o a um ambiente Jupyter sandbox. Para alunos de fluidodinâmica computacional, ele fornece experiência prática direta e um local seguro para praticar e aprender, enquanto para usuários avançados e desenvolvedores de código, funciona como uma ferramenta de prototipagem rápida.

Publicação
JupyterCon 2020

Descrição

Iniciantes podem enfrentar muitas barreiras de entrada em um código acadêmico para Fluidodinâmica Computacional (CFD), por exemplo:

  • A decomposição de domínio de cálculo para computação paralela em um sistema de memória distribuída;
  • Programação, compilação, teste e depuração em linguagens de programação como Fortran ou C;
  • O receio de estragar qualquer coisa no código fonte;
  • Critérios de estabilidade de diferentes métodos numéricos;
  • Falta de documentação e outros.

Esse trabalho visa quebrar essas barreiras ao construir uma camada Python, ou mais especificamente Jupyter Notebook, sobre o código CFD, programado originalmente em Fortran.

Para tanto, o código CFD de alta ordem Xcompact3d foi modificado para aceitar toda a configuração do escoamento sob investigação de uma fonte externa, incluindo parâmetros físicos e numéricos, condição inicial e condições de contorno, e uma geometria sólida que pode ser inserida no domínio cartesiano por meio do método das fronteiras imersas (IBM, do inglês Immersed Boundary Method). A configuração do escoamento, por sua vez, é fornecida a partir de um Jupyter Notebook, aproveitando a documentação embutida com células Markdown (incluindo facilmente figuras, tabelas e equações $\LaTeX$), visualização e interatividade com widgets e bibliotecas de plotagem, além da versatilidade e legibilidade da programação em Python. Além disso, os parâmetros de entrada podem ser verificados quanto à consistência e compatibilidade. O conhecimento prévio de NumPy e Matplotlib é suficiente para começar com as configurações de escoamento exemplificadas. No entanto, não há limitação para estendê-lo para ferramentas mais avançadas como Pandas, Xarray, Dask, Numba, Holoview, Plotly e muitos outros do ecossistema Jupyter. Na verdade, o Jupyter CFD Sandbox foi incorporado ao pacote Python Xcompact3d-toolbox.

O resultado da metodologia apresentada nesse trabalho pode beneficiar usuários de diferentes níveis:

  • Para alunos de fluidodinâmica computacional, oferece experiência prática direta e um local seguro para praticar e aprender;
  • Para usuários avançados e desenvolvedores de código, ele funciona como uma ferramenta de prototipagem rápida, onde é possível testar conceitos e, em seguida, comparar os resultados para validar quaisquer implementações futuras no solucionador numérico.

Além disso, é um avanço importante em termos de reprodutibilidade de pesquisa, e pode ser portado para qualquer outro solucionador numérico, (avise-nos se você fizer isso).

Tutoriais e diversas configurações de escoamento estão disponíveis na Documentação do Xcompact3d-toolbox.

Felipe N. Schuch
Felipe N. Schuch
Application Engineer

Possuo experiência na aplicação e também no desenvolvimento de ferramentas computacionais capazes de resolver problemas complexos, além de realizar o processamento, visualização e comunicação dos dados produzidos por essas soluções.

Próximo
Anterior

Relacionados