Breeze.jl

Limited area LES-to-mesoscale atmosphere simulations based on Oceananigans.
https://github.com/numericalearth/breeze.jl

Category: Atmosphere
Sub Category: Atmospheric Composition and Dynamics

Keywords from Contributors

climate climate-science data-assimilation ocean

Last synced: about 9 hours ago
JSON representation

Repository metadata

🌪 Limited area LES-to-mesoscale atmosphere simulations based on Oceananigans

README.md

Breeze is a library for simulating atmospheric flows and weather phenomena, such as clouds and hurricanes, on both CPUs and GPUs.
Built on Oceananigans, Breeze extends its grids, solvers, and advection schemes with atmospheric dynamics, thermodynamics, microphysics, and radiation.

Learn more in the documentation and examples, or get in touch on the NumericalEarth Slack or GitHub discussions.

Installation

Breeze is a registered Julia package. First install Julia; suggested version 1.12. See juliaup README for how to install 1.12 and make that version the default.

Then launch Julia and type

julia> using Pkg

julia> Pkg.add("Breeze")

If you want to live on the cutting edge, you can use
Pkg.add(; url="https://github.com/NumericalEarth/Breeze.jl.git", rev="main") to install from main.
For more information, see the Pkg.jl documentation.

Quick start

A warm bubble rising through a neutral atmosphere in 15 lines:

using Breeze, Oceananigans.Units, CairoMakie

grid = RectilinearGrid(CPU(); size=(256, 256), x=(-10e3, 10e3), z=(0, 10e3),
                       topology=(Periodic, Flat, Bounded))

reference = ReferenceState(grid; potential_temperature=300)
model = AtmosphereModel(grid; dynamics=AnelasticDynamics(reference), advection=WENO(order=5))
set!(model, θ = (x, z) -> 300 + 2cos(π/2 * min(1, √(x^2 + (z - 2000)^2) / 2000))^2)

simulation = Simulation(model; Δt=2, stop_time=25minutes)
conjure_time_step_wizard!(simulation, cfl=0.7)
run!(simulation)

heatmap(liquid_ice_potential_temperature(model), colormap=:thermal, axis=(; aspect=2))

Swap CPU() for GPU() to run on an NVIDIA GPU.

Features

  • Anelastic dynamics with a pressure Poisson solver that filters sound waves
  • Compressible dynamics with split-explicit acoustic substepping (horizontally explicit, vertically implicit) using SSP-RK3 or Wicker-Skamarock RK3
  • Moist thermodynamics with liquid-ice potential temperature and static energy formulations
  • Cloud microphysics: saturation adjustment, Kessler, one- and two-moment bulk schemes via CloudMicrophysics.jl
  • Radiative transfer: gray, clear-sky, and all-sky solvers via RRTMGP.jl
  • High-order advection including bounds-preserving WENO schemes
  • LES turbulence closures for subgrid-scale mixing
  • Surface physics: Coriolis forces, bulk drag, heat and moisture fluxes
  • Kinematic driver and parcel model for rapid prototyping of microphysics and radiation schemes
  • GPU-first: use GPU() to run very fast on NVIDIA GPUs

Selected examples

Below we've included thumbnails that link to a few of Breeze's examples.
Check out the documentation for the full list.

For instance, by increasing the resolution of the cloudy Kelvin-Helmholtz instability
to Nx=1536 and Nz=1024 and decreasing the timestep to Δt = 0.1, we get

https://github.com/user-attachments/assets/f47ff268-b2e4-401c-a114-a0aaf0c7ead3

Or cranking up the resolution of the thermal bubble example to size = (1024, 512):

https://github.com/user-attachments/assets/c9a0c9c3-c199-48b8-9850-f967bdcc4bed

We ran the BOMEX example at 25 m resolution and a 2x bigger grid, and used the data to produce a visualization of the resulting clouds:

https://github.com/user-attachments/assets/3c378cc7-c71b-420d-b301-33d45c7521e2

Roadmap and a call to action

Our goal is to build a very fast, easy-to-learn, productive tool for atmospheric research, teaching, and forecasting, as well as a platform for the development of algorithms, numerical methods, parameterizations, microphysical schemes, and atmosphere model components.
This goal can't be achieved by the efforts of a single group, project, or even a single community.
Such a lofty aim can only be realized by a wide-ranging and sustained collaboration of passionate people.
Maybe that includes you - consider it!
Model development is hard but rewarding, and builds useful skills for a myriad of pursuits.

The goals of the current group of model developers include developing

  • Advanced microphysics: Predicted Particle Property (P3) bulk microphysics, spectral bin schemes, and Lagrangian superdroplet methods for high-fidelity cloud and precipitation modeling.
  • Terrain-following coordinates: Smooth sigma coordinates for flow over complex topography
  • Open boundaries and nesting: Open boundary conditions are useful for both idealized simulations and realistic one- and two-way nested simulations for high-resolution downscaling.
  • Coupled atmosphere-ocean simulations: Support for high-resolution coupled atmosphere-ocean simulations via NumericalEarth.jl.

If you have ideas, dreams, or criticisms that can make Breeze and its future better, don't hesitate to speak up by opening issues and contributing pull requests.

Relationship to Oceananigans

Breeze is built on Oceananigans.jl, an ocean modeling package that provides grids, fields, operators, advection schemes, time-steppers, turbulence closures, and output infrastructure.
Breeze extends Oceananigans with atmospheric dynamics, thermodynamics, microphysics, and radiation to create a complete atmosphere simulation capability.
The two packages share a common philosophy: fast, flexible, GPU-native Julia code with a user interface designed for productivity and experimentation.
To learn these foundational components of Breeze, please see the Oceananigans documentation.

If you're familiar with Oceananigans, you'll feel right at home with Breeze.
If you're new to both, Breeze is a great entry point—and the skills you develop transfer directly to ocean and climate modeling with Oceananigans and ClimaOcean.jl.

Citing

If you use Breeze for research, teaching, or fun, we'd be grateful if you give credit by citing the corresponding Zenodo record, e.g.,

Wagner, G. L. et al. (2026). NumericalEarth/Breeze.jl. Zenodo. DOI:10.5281/zenodo.18050353

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: Breeze.jl
message: >
  If you use Breeze.jl in your research, teaching, or for
  fun, please cite it using the metadata below.
type: software
authors:
  - family-names: Wagner
    given-names: Gregory L.
    orcid: 'https://orcid.org/0000-0001-5317-2445'
    affiliation: 'Aeolus Labs, Massachusetts Institute of Technology'
  - family-names: Constantinou
    given-names: Navid C.
    orcid: 'https://orcid.org/0000-0002-8149-4094'
    affiliation: University of Melbourne
  - family-names: Giordano
    given-names: Mosè
    orcid: 'https://orcid.org/0000-0002-7218-2873'
    affiliation: University College London
  - given-names: Kai-Yuan
    family-names: Cheng
    affiliation: Aeolus Labs
    orcid: 'https://orcid.org/0000-0002-4246-7659'
  - given-names: Madelaine G.
    family-names: Rosevear
    affiliation: University of Tasmania
    orcid: 'https://orcid.org/0000-0003-4254-843X'
  - given-names: Tobias
    family-names: Bischoff
    orcid: 'https://orcid.org/0000-0003-3930-2762'
    affiliation: Aeolus Labs
identifiers:
  - type: doi
    value: 10.5281/zenodo.18050353
    description: The concept DOI of the work
repository-code: 'https://github.com/NumericalEarth/Breeze.jl'
url: 'https://github.com/NumericalEarth/Breeze.jl'
keywords:
  - atmospheric modelling
  - large-eddy simulation
  - Julia
  - geophysical fluid dynamics
  - GPU computing
  - climate modelling
license: Apache-2.0

Owner metadata


Committers metadata

Last synced: 3 days ago

Total Commits: 555
Total Committers: 11
Avg Commits per committer: 50.455
Development Distribution Score (DDS): 0.577

Commits in past year: 555
Committers in past year: 11
Avg Commits per committer in past year: 50.455
Development Distribution Score (DDS) in past year: 0.577

Name Email Commits
Gregory L. Wagner g****r@g****m 235
Navid C. Constantinou n****y 139
Mosè Giordano 7****o 127
dependabot[bot] 4****] 24
kaiyuan-cheng 7****g 15
dkytezab d****e@g****m 6
Madi Rosevear m****r@u****u 3
github-actions[bot] 4****] 2
Nawibot 1****b 2
Jatan Buch j****n@a****h 1
Ian Butterworth i****h@g****m 1

Committer domains:


Issue and Pull Request metadata

Last synced: 15 days ago

Total issues: 1
Total pull requests: 11
Average time to close issues: 1 day
Average time to close pull requests: 7 days
Total issue authors: 1
Total pull request authors: 3
Average comments per issue: 2.0
Average comments per pull request: 0.73
Merged pull request: 8
Bot issues: 0
Bot pull requests: 0

Past year issues: 1
Past year pull requests: 11
Past year average time to close issues: 1 day
Past year average time to close pull requests: 7 days
Past year issue authors: 1
Past year pull request authors: 3
Past year average comments per issue: 2.0
Past year average comments per pull request: 0.73
Past year merged pull request: 8
Past year bot issues: 0
Past year bot pull requests: 0

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/numericalearth/breeze.jl

Top Issue Authors

  • bischtob (1)

Top Pull Request Authors

  • glwagner (9)
  • mmr0 (1)
  • navidcy (1)

Top Issue Labels

Top Pull Request Labels


Package metadata

juliahub.com: Breeze

🌪 Limited area LES-to-mesoscale atmosphere simulations based on Oceananigans

  • Homepage: https://numericalearth.github.io/BreezeDocumentation/dev
  • Documentation: https://docs.juliahub.com/General/Breeze/stable/
  • Licenses: Apache-2.0
  • Latest release: 0.4.3 (published 28 days ago)
  • Last Synced: 2026-03-25T18:17:28.788Z (3 days ago)
  • Versions: 12
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 4,020 Last month
  • Rankings:
    • Dependent repos count: 7.863%
    • Average: 20.854%
    • Dependent packages count: 33.845%

Score: 15.673666196832011