ClimaCore

Constitutes the dynamical core of the CliMA atmosphere and land models, providing discretization tools to solve the governing equations of the earth system model components.
https://github.com/clima/climacore.jl

Category: Climate Change
Sub Category: Earth and Climate Modeling

Keywords

climate-modeling dynamical-core earth-system-model finite-difference gpu high-performance-computing julia numerical-methods pde scientific-computing spectral-elements

Keywords from Contributors

climate data-assimilation atmospheric-modeling climate-change land-surface-model land hydrology snow soil vegetation

Last synced: about 4 hours ago
JSON representation

Repository metadata

GPU-capable dynamical core for the CliMA Earth System Model: spectral-element and finite-difference discretization tools

README.md

ClimaCore.jl

The dynamical core (dycore) of the CliMA Earth System Model: composable, GPU-capable tools for discretizing and solving partial differential equations on the sphere and in Cartesian domains.

Documentation stable dev
Version version
License license
Tests gha ci buildkite
Code Coverage codecov
Downloads Downloads
DOI zenodo

ClimaCore.jl provides the spatial discretization building blocks for the Climate Modeling Alliance (CliMA) Earth System Model, which is written entirely in Julia. It pairs a high-level API for composing differential operators and defining flexible discretizations with low-level APIs for data layouts, specialized implementations, and threading — targeting both CPU and GPU architectures from a single codebase.

Features

  • Spectral-element horizontal discretizations: continuous (CG) and discontinuous (DG) Galerkin spectral elements.
  • Flexible vertical discretization: staggered finite differences on center/face grids.
  • Multiple geometries: Cartesian and spherical domains, with governing equations expressed in covariant vectors for curvilinear systems and Cartesian vectors for Euclidean spaces.
  • Field abstraction: scalar-, vector-, or struct-valued fields carrying values, geometry, and mesh information, with flexible memory layouts (AoS, SoA, AoSoA) and useful overloads (sum, norm, ...).
  • Composable operators via broadcasting: differential operators (grad, div, interpolate, ...) act like functions when broadcast over a Field, fusing operators and function calls into a single pass.
  • GPU acceleration: broadcast expressions compile to custom CUDA kernels, with specialization on polynomial degree for kernel performance.
  • Time-stepper compatible: works with SciML/OrdinaryDiffEq time steppers.

Quick Example

import ClimaComms
ClimaComms.@import_required_backends
import ClimaCore: Domains, Meshes, Spaces, Fields, Geometry, Operators

FT = Float64

# Build a 1D column: interval domain -> mesh -> finite-difference space
domain = Domains.IntervalDomain(
    Geometry.ZPoint{FT}(0),
    Geometry.ZPoint{FT}(2π),
    boundary_names = (:bottom, :top),
)
mesh = Meshes.IntervalMesh(domain; nelems = 128)
space = Spaces.CenterFiniteDifferenceSpace(ClimaComms.device(), mesh)

# Define a field over the space and differentiate it with a composed operator
z = Fields.coordinate_field(space).z
θ = sin.(z)
grad = Operators.GradientC2F(
    bottom = Operators.SetValue(FT(0)),
    top = Operators.SetValue(FT(0)),
)
∂θ = @. Geometry.WVector(grad(θ))   # face-valued vertical gradient (≈ cos(z))

More runnable examples (column, plane, and sphere configurations) are in the examples/ directory.

Documentation

  • Stable docs — installation, introduction, mathematical framework, and API reference
  • Dev docs — latest development version
  • examples/ — runnable examples across geometries

Integration with CliMA models

ClimaCore.jl is the dynamical core used throughout the CliMA ecosystem, including:

Contributing

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.


Owner metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: 3 days ago

Total Commits: 2,201
Total Committers: 47
Avg Commits per committer: 46.83
Development Distribution Score (DDS): 0.639

Commits in past year: 176
Committers in past year: 17
Avg Commits per committer in past year: 10.353
Development Distribution Score (DDS) in past year: 0.67

Name Email Commits
Charles Kawczynski k****s@g****m 795
Simon Byrne s****e@g****m 474
Valeria Barra v****1@g****m 166
Gabriele Bozzola s****r@g****m 118
sriharshakandala s****s@g****m 115
Jake Bolewski j****i@g****m 107
imreddyTeja t****5@g****m 69
Dennis Yatunin d****n@g****m 62
Tapio Schneider t****o@c****u 40
Julia Sloan j****n@c****u 34
CompatHelper Julia c****y@j****g 28
Akshay Sridhar a****r@c****u 23
Zhaoyi Shen p****y@g****m 22
Jia He j****h@g****m 18
Kevin Phan 9****v 16
nefrathenrici n****i@g****m 15
Ben Mackay j****y@c****u 13
dependabot[bot] 4****] 8
SimonDanisch s****h@p****m 8
Pete Bachant p****t@c****u 8
Oluchi Nzerem o****m@g****m 7
K Pamnany k****y@g****m 7
Haakon Ludvig Langeland Ervik 4****e 7
LenkaNovak l****a@c****u 4
bischtob t****f@p****e 4
Daniel-Huang d****g@c****u 4
github-actions[bot] g****] 3
Akshay Sridhar a****r@c****u 3
Kaitlyn Alphonse k****e@e****m 2
costachris c****a@g****m 2
and 17 more...

Committer domains:


Issue and Pull Request metadata

Last synced: 1 day ago

Total issues: 369
Total pull requests: 1,206
Average time to close issues: 6 months
Average time to close pull requests: 23 days
Total issue authors: 39
Total pull request authors: 36
Average comments per issue: 2.33
Average comments per pull request: 2.29
Merged pull request: 797
Bot issues: 0
Bot pull requests: 60

Past year issues: 36
Past year pull requests: 109
Past year average time to close issues: 2 months
Past year average time to close pull requests: 17 days
Past year issue authors: 10
Past year pull request authors: 16
Past year average comments per issue: 1.11
Past year average comments per pull request: 1.15
Past year merged pull request: 67
Past year bot issues: 0
Past year bot pull requests: 11

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

Top Issue Authors

  • charleskawczynski (147)
  • Sbozzolo (58)
  • simonbyrne (41)
  • imreddyTeja (19)
  • sriharshakandala (15)
  • juliasloan25 (13)
  • ph-kev (7)
  • nefrathenrici (6)
  • kmdeck (6)
  • petebachant (5)
  • dennisYatunin (5)
  • Mikolaj-A-Kowalski (4)
  • akshaysridhar (4)
  • szy21 (4)
  • waywardpidgeon (4)

Top Pull Request Authors

  • charleskawczynski (666)
  • Sbozzolo (119)
  • simonbyrne (62)
  • imreddyTeja (60)
  • dennisYatunin (53)
  • github-actions[bot] (35)
  • juliasloan25 (34)
  • sriharshakandala (32)
  • dependabot[bot] (25)
  • tapios (17)
  • akshaysridhar (17)
  • petebachant (12)
  • ph-kev (11)
  • nefrathenrici (7)
  • haakon-e (6)

Top Issue Labels

  • bug (160)
  • enhancement (92)
  • performance (18)
  • GPU (14)
  • SDI (12)
  • tests (7)
  • Inference (5)
  • CI (5)
  • Allocations (4)
  • distributed (3)
  • documentation (3)
  • Purely single column support (2)
  • Latency (2)
  • Invalidations (1)
  • API (1)
  • Quality Assurance (1)
  • Release (1)
  • Workflow :gear: :ocean: (1)
  • Correctness :pencil2: (1)
  • Performance monitoring :mag::rocket: (1)
  • Dependencies (1)
  • feature (1)
  • refactor (1)
  • Continuous integration :gear: (1)
  • Low priority (1)
  • unit tests (1)

Top Pull Request Labels

  • refactor (90)
  • performance (76)
  • tests (74)
  • Dependencies (58)
  • bugfix (54)
  • GPU (49)
  • Launch Buildkite (36)
  • Performance monitoring :mag::rocket: (31)
  • Inference (26)
  • documentation (21)
  • Release (18)
  • Latency (15)
  • feature (10)
  • CI (8)
  • github_actions (8)
  • Workflow :gear: :ocean: (8)
  • breaking :boom: (7)
  • House cleaning :broom: (6)
  • unit tests (6)
  • Defensive programming :crossed_swords: (6)
  • distributed (5)
  • enhancement (5)
  • Allocations (4)
  • julia (4)
  • ClimaCorePlots (3)
  • Performance tests (3)
  • error message (3)
  • Coverage (3)
  • remapping (3)
  • Work-in-progress (3)

Package metadata

juliahub.com: ClimaCore

CliMA model dycore

  • Homepage: https://clima.github.io/ClimaCore.jl/dev
  • Documentation: https://docs.juliahub.com/General/ClimaCore/stable/
  • Licenses: Apache-2.0
  • Latest release: 0.14.50 (published 7 months ago)
  • Last Synced: 2026-04-01T04:04:25.581Z (5 months ago)
  • Versions: 136
  • Dependent Packages: 15
  • Dependent Repositories: 0
  • Downloads: 22,102 Last month
  • Rankings:
    • Dependent packages count: 5.841%
    • Dependent repos count: 9.94%
    • Stargazers count: 12.011%
    • Average: 12.364%
    • Forks count: 21.666%
juliahub.com: ClimaCorePlots

CliMA model dycore

  • Homepage: https://clima.github.io/ClimaCore.jl/dev
  • Documentation: https://docs.juliahub.com/General/ClimaCorePlots/stable/
  • Licenses: Apache-2.0
  • Latest release: 0.2.11 (published almost 2 years ago)
  • Last Synced: 2026-04-01T04:03:39.638Z (5 months ago)
  • Versions: 13
  • Dependent Packages: 3
  • Dependent Repositories: 0
  • Downloads: 1,834 Last month
  • Rankings:
    • Dependent repos count: 9.94%
    • Stargazers count: 12.011%
    • Average: 15.052%
    • Dependent packages count: 16.592%
    • Forks count: 21.666%
juliahub.com: ClimaCoreTempestRemap

CliMA model dycore

  • Homepage: https://clima.github.io/ClimaCore.jl/dev
  • Documentation: https://docs.juliahub.com/General/ClimaCoreTempestRemap/stable/
  • Licenses: Apache-2.0
  • Latest release: 0.3.18 (published almost 2 years ago)
  • Last Synced: 2026-04-01T03:54:01.904Z (5 months ago)
  • Versions: 21
  • Dependent Packages: 3
  • Dependent Repositories: 0
  • Downloads: 2,020 Last month
  • Rankings:
    • Dependent repos count: 9.94%
    • Stargazers count: 12.011%
    • Average: 16.647%
    • Forks count: 21.666%
    • Dependent packages count: 22.97%
juliahub.com: ClimaCoreVTK

CliMA model dycore

  • Homepage: https://clima.github.io/ClimaCore.jl/dev
  • Documentation: https://docs.juliahub.com/General/ClimaCoreVTK/stable/
  • Licenses: Apache-2.0
  • Latest release: 0.7.6 (published about 2 years ago)
  • Last Synced: 2026-08-04T21:03:41.634Z (18 days ago)
  • Versions: 13
  • Dependent Packages: 1
  • Dependent Repositories: 0
  • Downloads: 1,207 Last month
  • Rankings:
    • Dependent repos count: 9.94%
    • Stargazers count: 12.011%
    • Average: 16.647%
    • Forks count: 21.666%
    • Dependent packages count: 22.97%
juliahub.com: ClimaCoreMakie

CliMA model dycore

  • Homepage: https://clima.github.io/ClimaCore.jl/dev
  • Documentation: https://docs.juliahub.com/General/ClimaCoreMakie/stable/
  • Licenses: Apache-2.0
  • Latest release: 0.4.7 (published 8 months ago)
  • Last Synced: 2026-04-01T03:58:09.625Z (5 months ago)
  • Versions: 15
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 3,604 Last month
  • Rankings:
    • Dependent repos count: 9.94%
    • Stargazers count: 12.011%
    • Average: 20.633%
    • Forks count: 21.666%
    • Dependent packages count: 38.915%
juliahub.com: ClimaCoreSpectra

CliMA model dycore

  • Homepage: https://clima.github.io/ClimaCore.jl/dev
  • Documentation: https://docs.juliahub.com/General/ClimaCoreSpectra/stable/
  • Licenses: Apache-2.0
  • Latest release: 0.1.4 (published about 2 years ago)
  • Last Synced: 2026-04-01T03:58:09.074Z (5 months ago)
  • Versions: 5
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 826 Last month
  • Rankings:
    • Dependent repos count: 9.94%
    • Stargazers count: 12.011%
    • Average: 20.633%
    • Forks count: 21.666%
    • Dependent packages count: 38.915%

Dependencies

.github/workflows/ClimaCoreMakie.yml actions
  • actions/cache v1 composite
  • actions/checkout v2 composite
  • actions/upload-artifact v2 composite
  • julia-actions/setup-julia latest composite
.github/workflows/ClimaCorePlots.yml actions
  • actions/cache v1 composite
  • actions/checkout v2 composite
  • actions/upload-artifact v2 composite
  • julia-actions/setup-julia latest composite
.github/workflows/ClimaCoreSpectra.yml actions
  • actions/cache v1 composite
  • actions/checkout v2 composite
  • actions/upload-artifact v2 composite
  • julia-actions/setup-julia latest composite
.github/workflows/ClimaCoreTempestRemap.yml actions
  • actions/cache v1 composite
  • actions/checkout v2 composite
  • actions/upload-artifact v2 composite
  • julia-actions/setup-julia latest composite
.github/workflows/ClimaCoreVTK.yml actions
  • actions/cache v1 composite
  • actions/checkout v2 composite
  • actions/upload-artifact v2 composite
  • julia-actions/setup-julia latest composite
.github/workflows/DocCleanup.yml actions
  • actions/checkout v2 composite
.github/workflows/Invalidations.yml actions
  • actions/checkout v3 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-invalidations v1 composite
  • julia-actions/setup-julia v1 composite
.github/workflows/JuliaFormatter.yml actions
  • actions/checkout v2.2.0 composite
  • dorny/paths-filter v2.9.1 composite
  • julia-actions/setup-julia latest composite
  • reviewdog/action-suggester v1 composite
  • styfle/cancel-workflow-action 0.4.0 composite
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/docs.yml actions
  • actions/checkout v2 composite
  • julia-actions/setup-julia latest composite
.github/workflows/UnitTests.yml actions
  • actions/checkout v2.2.0 composite
  • julia-actions/cache v1 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-runtest v1 composite
  • julia-actions/setup-julia v1 composite
  • styfle/cancel-workflow-action 0.4.0 composite
lib/ClimaCorePlots/test/Project.toml julia
  • ClimaComms *
  • ClimaCore *
  • ClimaCorePlots *
  • IntervalSets *
  • Plots *
  • Test *
lib/ClimaCoreVTK/Project.toml julia
  • ClimaCore *
  • WriteVTK *
lib/ClimaCoreTempestRemap/Project.toml julia
  • ClimaComms *
  • ClimaCore *
  • CommonDataModel *
  • Dates *
  • DiskArrays *
  • LinearAlgebra *
  • NCDatasets *
  • PkgVersion *
  • TempestRemap_jll *
lib/ClimaCoreVTK/test/Project.toml julia
  • ClimaComms *
  • ClimaCore *
  • ClimaCoreVTK *
  • IntervalSets *
  • Test *
perf/Project.toml julia
  • BenchmarkTools *
  • BlockArrays *
  • ClimaComms *
  • ClimaCore *
  • ClimaCorePlots *
  • ClimaCoreTempestRemap *
  • ClimaCoreVTK *
  • ClimaTimeSteppers *
  • Colors *
  • DiffEqCallbacks *
  • DocStringExtensions *
  • ForwardDiff *
  • GilbertCurves *
  • IntervalSets *
  • JLD2 *
  • JSON *
  • LazyBroadcast *
  • LinearAlgebra *
  • Logging *
  • NCDatasets *
  • NVTX *
  • PProf *
  • Plots *
  • PrettyTables *
  • Profile *
  • ProfileCanvas *
  • ProgressLogging *
  • QuadGK *
  • SciMLBase *
  • SnoopCompile *
  • SnoopCompileCore *
  • StaticArrays *
  • TerminalLoggers *
  • Test *
  • URIs *
.github/workflows/Downstream.yml actions
  • actions/checkout v4 composite
  • julia-actions/cache v2 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/setup-julia v2 composite
.github/workflows/cla.yml actions
lib/ClimaCoreSpectra/Project.toml julia
  • ClimaCore *
  • FFTW *
lib/ClimaCoreSpectra/test/Project.toml julia
  • ClimaCore *
  • ClimaCoreSpectra *
  • FFTW *
  • IntervalSets *
  • Plots *
  • Test *
.github/workflows/downgrade.yml actions
  • actions/checkout v4 composite
  • julia-actions/cache v2 composite
  • julia-actions/julia-buildpkg latest composite
  • julia-actions/julia-downgrade-compat v1 composite
  • julia-actions/julia-runtest latest composite
  • julia-actions/setup-julia latest composite
.buildkite/Manifest.toml julia
  • 365 dependencies
lib/ClimaCoreMakie/examples/Manifest.toml julia
  • 311 dependencies
lib/ClimaCoreMakie/test/Project.toml julia
  • ClimaComms *
  • ClimaCore *
  • ClimaCoreMakie *
  • GLMakie *
  • IntervalSets *
  • Makie *
  • Test *
lib/ClimaCorePlots/Project.toml julia
  • ClimaComms *
  • ClimaCore *
  • RecipesBase *
  • StaticArrays *
  • TriplotBase *
lib/ClimaCoreSpectra/examples/Project.toml julia
  • ClimaCore *
  • ClimaCoreSpectra *
  • ClimaCoreTempestRemap *
  • FFTW *
  • NCDatasets *
  • Plots *
.buildkite/Project.toml julia
  • Adapt *
  • Aqua *
  • ArgParse *
  • AssociatedLegendrePolynomials *
  • BandedMatrices *
  • BenchmarkTools *
  • BlockArrays *
  • CUDA *
  • ClimaComms *
  • ClimaCore *
  • ClimaCorePlots *
  • ClimaCoreTempestRemap *
  • ClimaCoreVTK *
  • ClimaParams *
  • ClimaTimeSteppers *
  • Colors *
  • CountFlops *
  • CubedSphere *
  • DataStructures *
  • DiffEqCallbacks *
  • DocStringExtensions *
  • FastBroadcast *
  • ForwardDiff *
  • GaussQuadrature *
  • GilbertCurves *
  • IntervalSets *
  • JET *
  • JLD2 *
  • KrylovKit *
  • LazyBroadcast *
  • LinearAlgebra *
  • Logging *
  • MPI *
  • NCDatasets *
  • NVTX *
  • NullBroadcasts *
  • OrdinaryDiffEqSSPRK *
  • OrdinaryDiffEqTsit5 *
  • Plots *
  • PrettyTables *
  • Profile *
  • ProfileCanvas *
  • ProgressLogging *
  • QuadGK *
  • Random *
  • RecursiveArrayTools *
  • SafeTestsets *
  • SciMLBase *
  • SnoopCompile *
  • SnoopCompileCore *
  • SparseArrays *
  • StaticArrays *
  • Statistics *
  • StatsBase *
  • TerminalLoggers *
  • Test *
  • Thermodynamics *
  • ThreadsX *
Project.toml julia
  • Adapt *
  • BandedMatrices *
  • BlockArrays *
  • ClimaComms *
  • ClimaInterpolations *
  • CubedSphere *
  • DataStructures *
  • ForwardDiff *
  • GaussQuadrature *
  • GilbertCurves *
  • HDF5 *
  • InteractiveUtils *
  • IntervalSets *
  • KrylovKit *
  • LazyBroadcast *
  • LinearAlgebra *
  • MultiBroadcastFusion *
  • NVTX *
  • PkgVersion *
  • RecursiveArrayTools *
  • RootSolvers *
  • SparseArrays *
  • StaticArrays *
  • Statistics *
  • UnrolledUtilities *
benchmarks/bickleyjet/Manifest.toml julia
  • 254 dependencies
benchmarks/3d/Project.toml julia
  • BenchmarkTools *
  • CUDA *
  • ClimaComms *
  • ClimaCore *
  • Colors *
  • NVTX *
benchmarks/bickleyjet/Project.toml julia
  • BenchmarkTools *
  • CUDA *
  • ClimaCore *
  • Plots *
docs/Project.toml julia
  • CairoMakie *
  • ClimaComms *
  • ClimaCore *
  • ClimaCoreMakie *
  • ClimaCorePlots *
  • ClimaCoreSpectra *
  • ClimaCoreTempestRemap *
  • ClimaCoreVTK *
  • Documenter *
  • DocumenterCitations *
  • FFTW *
  • IntervalSets *
  • LinearAlgebra *
  • Literate *
  • Makie *
  • OrdinaryDiffEqSSPRK *
  • Plots *
lib/ClimaCoreMakie/Project.toml julia
  • ClimaCore *
  • Makie *
lib/ClimaCoreMakie/examples/Project.toml julia
  • ClimaCore *
  • ClimaCoreMakie *
  • Downloads *
  • GLMakie *
  • GeoMakie *
  • IJulia *
  • IntervalSets *
  • Makie *
  • WGLMakie *
.github/workflows/update_dev_guides.yml actions
  • actions/checkout v7 composite

Score: 20.083652361678187