À propos du projet

Oceananigans.jl est un package logiciel Julia pour les simulations en volumes finis des équations de Boussinesq non hydrostatiques et hydrostatiques, destiné à la dynamique des fluides d'inspiration océanique. Il prend en charge les domaines cartésiens et en coquille sphérique et peut s'exécuter sur des CPU ou des GPU Nvidia compatibles CUDA, l'exécution sur GPU étant activée en chargeant CUDA.jl et en remplaçant l'argument d'architecture CPU() par GPU(). Le projet met l'accent sur une interface utilisateur flexible : les simulations simples s'expriment en peu de lignes, tandis que des configurations plus complexes restent possibles. Un exemple minimal construit une RectilinearGrid, crée un NonhydrostaticModel avec advection WENO, définit des champs de vitesse initiaux aléatoires, définit une Simulation avec un pas de temps et un temps d'arrêt, puis l'exécute. La documentation couvre des scripts d'exemple, des tutoriels sur les objets et fonctions clés, des explications des méthodes numériques en volumes finis, les équations dynamiques résolues, et une référence de bibliothèque pour les objets et fonctions destinés aux utilisateurs. Les ressources communautaires incluent GitHub Discussions pour la science computationnelle et les fonctionnalités expérimentales, un wiki avec des conseils sur la configuration de Julia, l'accès aux GPU et les flux de travail productifs, ainsi que des canaux Slack et l'historique des issues/PR. Le développement est piloté par la communauté avec des contributeurs académiques et industriels ; l'infrastructure de tests est fournie par atdepth et le Climate Modeling Alliance. Le package est sous licence MIT et installable depuis le registre de packages Julia enregistré, nécessitant Julia 1.10 ou une version ultérieure. Le README liste plusieurs articles de développement de modèles couvrant le pas de temps Runge-Kutta, la modélisation différentiable du système Terre, l'advection de quantité de mouvement basée sur WENO, les cœurs dynamiques océaniques sur GPU et la diffusivité verticale CATKE, et invite à citer l'article de présentation. Les benchmarks de performance sont suivis sur un tableau de bord public, avec des notes indiquant que la saturation des GPU nécessite généralement environ dix millions de points de grille ou plus et que Float32 peut ne pas toujours être plus rapide que Float64 en raison de la surcharge de conversion.