Skip to content

NumericalEarth/Breeze.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Breeze.jl

🌪 Fast and friendly Julia software for atmospheric fluid dynamics on CPUs and GPUs. https://numericalearth.github.io/BreezeDocumentation/stable

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

Breeze is a library for simulating atmospheric flows, convection, clouds, weather, and hurricanes on 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. Right now, Breeze.AtmosphereModel is in an early stage of development, and supports simple simulations that use the anelastic formulation of the Euler equations on RectilinearGrid. But we're working feverishly towards a future with bulk, bin and superdroplet microphysics, radiation, and a fully compressible formulation with acoustic substepping (and note, the roadmap and vision for Breeze is still something of a work in progress). Check out the documentation to see what we can do now, and watch this space (or get in touch to discuss!) its crystallization.

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

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. (2025). 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

Contributors 11

Languages