Skip to content

NumericalEarth/Breeze.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

506 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Breeze.jl

πŸŒͺ Fast and friendly Julia software for atmospheric fluid dynamics on CPUs and GPUs. https://numericalearth.github.io/BreezeDocumentation/dev

Documentation Documentation DOI
Ask us anything ColPrac: Contributor's Guide on Collaborative Practices for Community Packages

Breeze is a library for simulating atmospheric flows and weather phenomena, such as clouds and hurricanes, on both CPUs and GPUs. Much of Breeze's power flows from Oceananigans, which provides a user interface, grids, fields, solvers, advection schemes, Lagrangian particles, physics, and more.

Breeze's AtmosphereModel currently supports anelastic dynamics, compressible dynamics, a kinematic driver, and a parcel model, all with strong-stability-preserving (SSP) RK3 time stepping. The anelastic and compressible dynamics can be used with a liquid-ice potential temperature formulation or static energy formulation and a variety of advection schemes including high-order and bounds-preserving WENO. Breeze provides abstractions for Coriolis forces, simple bulk drags, heat and moisture fluxes, and closures for large-eddy simulation. A main focus of Breeze development is to facilitate the prototyping and implementation of physics schemes through streamlined internal interfaces and automatic kinematic driver and parcel model capabilities. Breeze's current suite of schemes includes saturation adjustment, a Kessler scheme, one- and two-moment bulk microphysics schemes through an extension to the Climate Modeling Alliance's excellent CloudMicrophysics.jl package; several other schemes are under development. An extension to RRTMGP.jl provides solvers for gray, clear-sky, and all-sky radiative transfer. Breeze's examples include single column radiation, idealized thermal bubbles and inertia-gravity waves and Kelvin-Helmholtz, BOMEX shallow convection, RICO trade-wind cumulus, supercells, mountain waves, and more.

Learn more by reading on or checking out the documentation and examples. And don't hesitate to get in touch on the NumericalEarth slack or by opening a new discussion!

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.
  • οΈπŸ” Acoustic substepping and terrain-following coordinates: A compressible dynamical core with horizontally explicit, vertically-implicit acoustic substepping that efficiently resolves sound waves in flow over complex topography with smooth sigma coordinates
  • πŸ”¬ 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)[https://github.com/NumericalEarth/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.

Selected examples

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


Cloudy thermal bubble

BOMEX shallow convection

RICO trade-wind cumulus

Prescribed SST convection

Cloudy Kelvin-Helmholtz instability

Acoustic wave in shear flow

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")

which will install the latest stable version of Breeze that's compatible with your current environment.

You can check which version of Breeze you got via

Pkg.status("Breeze")

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

Using Breeze

Now we are ready to run any of the examples!

For instance, by increasing the resolution of the cloudy Kelvin-Helmholtz instability to Nx=1536 and Nz=1024, decrease the timestep to Ξ”t = 0.1, and running

julia> include("examples/cloudy_kelvin_helmholtz.jl")

to get

wave_clouds.mp4

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

julia> include("examples/dry_thermal_bubble.jl")

we get

thermal_bubble.mp4

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:

528887367-7f3058a5-76eb-4151-83ab-cba10ae32a62.mp4

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

About

πŸŒͺ Limited area LES-to-mesoscale atmosphere simulations based on Oceananigans

Resources

License

Stars

Watchers

Forks

Languages