CliMA/Oceananigans.jl

🌊 Julia software for fast, friendly, flexible, ocean-flavored fluid dynamics on CPUs and GPUs

Oceananigans.jl – 在 Julia 中进行快速、灵活的海洋规模流体动力学模拟

是什么 – Oceananigans 是一个开源的 Julia 包,用于在笛卡尔或球壳网格上求解不可压缩 Boussinesq 方程(包括非静力学和静力学模型)。它使用有限体积法离散化,并可在 CPU 以及 CUDA 启用的 GPU 上运行,让研究人员只需通过几行代码即可原型化并运行高分辨率的海洋模拟。

核心能力

  • 模型NonhydrostaticModel, HydrostaticFreeSurfaceModel 以及相关变体。
  • 网格:直角坐标、曲线坐标和球壳网格,具有可配置的拓扑结构(周期性、平面等)。
  • 数值方法:一系列平流方案(例如 WENO, WENOVectorInvariant),Runge-Kutta 时间步进器,以及如 CATKEVerticalDiffusivityTKEDissipationVerticalDiffusivity 等湍流闭合模型。
  • GPU 加速:在加载 CUDA.jl 后,将 CPU() 切换为 GPU() 即可在 Nvidia GPU 上运行相同的代码,对于大型(约 10M 单元格)问题,可实现数量级规模的加速。
  • 可微分工作流:与 Enzyme.jl and Reactant.jl 的集成,使得模型组件的可微分性支持可用于数据同化或机器学习在环的 studies 运行。
  • 性能追踪:包含一个公开的仪表板,持续进行基准测试,记录许多模型配置下每个时间步长的墙钟时间。

入门指南

using Pkg; Pkg.add("Oceananigans")   # install
using Oceananigans

# a 2-D periodic turbulence test on the CPU
grid = RectilinearGrid(CPU(), size=(128,128), x=(0,2π), y=(0,2π), topology=(Periodic,Periodic,Flat))
model = NonhydrostaticModel(grid; advection=WENO())
set!(model, u = x->2rand()-1, v = x->2rand()-1)
sim = Simulation(model; Δt=0.01, stop_time=4)
run!(sim)

CPU() 替换为 GPU()(在 using CUDA 之后)即可在 GPU 上运行相同的实验。

文档与学习资源

  • 稳定版与开发版文档:https://clima.github.io/OceananigansDocumentation/stable
  • 文档中捆绑了示例脚本、教程-和-教程,以及完整的 API 参考。
  • 讨论、问答与社区提示信息可在 GitHub Discussions 页面与 NumericalEarth Slack 找到。
  • 一个 wiki 包含安装、GPU 使用与工作流最佳实践指南。

谁在使用 Oceananigans 被学术界与工业界群体用于研究、教学与原型气候系统建模。文档中维护了一个使用该包的精选选集,列出了使用该包的论文。

引用方式 studies 运行 如果你发布了依赖 Oceananigans 的研究成果,请引用概述论文(Wagner et al., 2025, arXiv:2502.14148)以及与你使用的功能相关的任何特定模型开发论文(例如 Silvestri 2026 关于 Runge-Kutta,Moses 2026 关于可微分建模,等等)。

社区与贡献

  • 在 Climate Modeling Alliance (CliMA) 框架下进行开放、社区驱动的开发。
  • 提供贡献者指南、代码规范、和 ColPrac 最佳实践徽章。
  • 贡献者可以通过 pull requests 进行贡献;关于新功能或错误的问题可以是在 GitHub 上发起的。 ast, GPU-ready ocean fluid-dynamics in Julia

License – MIT (宽松, 商业友好)。

Bottom line – Oceananigans 给海洋学和流体动力学研究人员提供了一个高性能、易于使用的 Julia 环境,用于构建和运行无论是简单的测试案例还是大规模、 GPU 加速的海洋模拟。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目