README
ClimaAtmos.jl Logo

ClimaAtmos.jl

The atmosphere model of the CliMA Earth System Model: a GPU-capable global atmosphere model designed for calibration with data assimilation and machine learning.

ClimaAtmos.jl solves the compressible equations of atmospheric motion on cubed-sphere and column grids, with physics parameterizations for turbulence and convection (PROPHET, an extended prognostic EDMF scheme), cloud microphysics, and radiation. It is built on ClimaCore.jl and runs on CPUs and GPUs from a single codebase.

Documentationstable dev
Versionversion
Licenselicense
Testsgha ci buildkite
Code Coveragecodecov
DownloadsDownloads

Condensed water path from a global ClimaAtmos simulation

Condensed water path from a global simulation initialized with ERA5 on 8-31-25 00Z. Output every 30 minutes; ran for ~4 days.

Features

  • Global and single-column configurations: cubed-sphere grids with topography for global simulations; boxes, planes, and columns for process studies (BOMEX, DYCOMS, RICO, and other standard cases)
  • Turbulence and convection: TKE-based eddy diffusion and the PROPHET scheme (an extended, prognostic eddy-diffusivity mass-flux (EDMF) scheme), designed for calibration with data assimilation and machine learning
  • Cloud microphysics: 0-moment to 2-moment bulk schemes, plus the P3 ice scheme, via CloudMicrophysics.jl
  • Radiation: RRTMGP radiative transfer
  • ERA5 and GCM-driven initial conditions and forcing
  • Configurable diagnostics with NetCDF and HDF5 output
  • Restarts and checkpointing for long simulations
  • GPU support: runs on CPUs and NVIDIA GPUs from the same codebase
  • Composable configuration: script and YAML-config interfaces for every aspect of a simulation

Installation

ClimaAtmos.jl is a registered Julia package (recommended Julia: v1.11):

using Pkg
Pkg.add("ClimaAtmos")

Quick Example

The simplest simulation uses all defaults: it solves the dry compressible equations on a global cubed-sphere grid from a hydrostatically balanced, slightly perturbed state:

import ClimaAtmos as CA

simulation = CA.AtmosSimulation{Float32}(; t_end = "1days")
CA.solve_atmos!(simulation)

Every aspect of the simulation can be customized through keyword arguments, for example a single-column model:

grid = CA.ColumnGrid(Float32; z_elem = 30, z_max = 30000.0)
simulation = CA.AtmosSimulation{Float32}(; grid, t_end = "6hours")

See Your First Simulation in the documentation for a guided introduction.

Documentation

Integration with CliMA models

ClimaAtmos.jl is a component of the CliMA Earth System Model:

  • ClimaCore.jl: dynamical core and discretization tools
  • ClimaCoupler.jl: coupling to ocean, land, and sea ice components
  • Thermodynamics.jl: moist thermodynamics, shared across all CliMA components for energetic consistency
  • ClimaParams.jl: the single source of truth for all model parameters

See The CliMA Ecosystem in the documentation for the full architectural overview, including Insolation.jl, RRTMGP.jl, SurfaceFluxes.jl, and CloudMicrophysics.jl.

Contributing

If you're interested in contributing to ClimaAtmos, we welcome contributions of any size! Let us know by opening an issue if you'd like to work on a new feature.

Contributors should follow the shared CliMA engineering standards in docs/dev-guides/, which cover architecture, performance, code quality, documentation, and workflows. These are vendored from CliMA/DeveloperGuides. The repo's AGENTS.md is a starting point for AI agents with repo-specific guidance. See also the contributor's guide.