Sobre o projeto

Oceananigans.jl é um pacote de software Julia para simulações de volumes finitos das equações de Boussinesq não hidrostáticas e hidrostáticas, voltado para dinâmica de fluidos de caráter oceânico. Ele suporta domínios cartesianos e de casca esférica e pode rodar em CPUs ou GPUs Nvidia compatíveis com CUDA, com execução em GPU habilitada ao carregar CUDA.jl e trocar o argumento de arquitetura de CPU() para GPU(). O projeto enfatiza uma interface de usuário flexível: simulações simples são curtas de expressar, enquanto configurações mais complexas permanecem possíveis. Um exemplo mínimo constrói um RectilinearGrid, cria um NonhydrostaticModel com advecção WENO, define campos de velocidade iniciais aleatórios, define uma Simulation com passo de tempo e tempo de parada, e a executa. A documentação cobre scripts de exemplo, tutoriais sobre objetos e funções-chave, explicações de métodos numéricos de volumes finitos, as equações dinâmicas resolvidas e uma referência de biblioteca para objetos e funções voltados ao usuário. Os recursos da comunidade incluem GitHub Discussions para ciência computacional e recursos experimentais, uma wiki com dicas sobre configuração do Julia, acesso a GPU e fluxos de trabalho produtivos, além de canais no Slack e histórico de issues/PRs. O desenvolvimento é conduzido pela comunidade, com contribuidores acadêmicos e da indústria; a infraestrutura de testes é fornecida pela atdepth e pela Climate Modeling Alliance. O pacote é licenciado sob MIT e instalável a partir do registro de pacotes Julia registrado, exigindo Julia 1.10 ou posterior. O README lista vários artigos de desenvolvimento de modelos cobrindo integração temporal Runge-Kutta, modelagem diferenciável do sistema terrestre, advecção de momento baseada em WENO, núcleos dinâmicos oceânicos em GPU e difusividade vertical CATKE, e convida à citação do artigo de visão geral. Benchmarks de desempenho são acompanhados em um painel público, com notas de que a saturação da GPU geralmente precisa de cerca de dez milhões de pontos de grade ou mais e que Float32 pode não ser sempre mais rápido que Float64 devido ao custo de conversão.