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 from Contributors

climate data-assimilation climate-change land land-surface-model sciml ordinary-differential-equations ode differentialequations differential-equations

Last synced: about 15 hours ago
JSON representation

Repository metadata

CliMA model dycore

README.md

ClimaCore.jl

Docs Build docs build
Documentation dev
GHA CI gha ci
Buildkite CI buildkite ci
Code Coverage codecov
Downloads downloads
DOI zenodo

The Climate Modelling Alliance (CliMA) is developing a new Earth System Model (ESM), entirely written in the Julia language. The main goal of the project is to build an ESM that automatically learns from diverse data sources to produce accurate climate predictions with quantified uncertainties. The CliMA model targets both CPU and GPU architectures, using a common codebase. ClimaCore.jl constitutes the dynamical core (dycore) of the atmosphere and land models, providing discretization tools to solve the governing equations of the ESM component models.
ClimaCore.jl's high-level application programming interface (API) facilitates modularity and composition of differential operators and the definition of flexible discretizations. This, in turn, is coupled with low-level APIs that support different data layouts, specialized implementations, and flexible models for threading, to better face high-performance optimization, data storage, and scalability challenges on modern HPC architectures.

Technical aims and current support

  • Support both large-eddy simulation (LES) and general circulation model (GCM) configurations for the atmosphere.
  • A suite of tools for constructing space discretizations.
  • Horizontal spectral elements:
    • Supports both continuous Galerkin (CG) and discontinuous Galerkin (DG) spectral element discretizations.
  • Flexible choice of vertical discretization (currently staggered finite differences)
  • Support for different geometries (Cartesian, spherical), with governing equations discretized in terms of covariant vectors for curvilinear, non-orthogonal systems and Cartesian vectors for Euclidean spaces.
  • Field abstraction:
    • Scalar, vector or struct-valued
    • Stores values, geometry, and mesh information
    • Flexible memory layouts: Array-of-Structs (AoS), Struct-of-Arrays (SoA),Array-of-Struct-of-Arrays (AoSoA)
    • Useful overloads: sum (integral), norm, etc.
    • Compatible with DifferentialEquations.jl time steppers.
  • Composable operators via broadcasting: apply a function element-wise to an array; scalar values are broadcast over arrays
  • Fusion of multiple operations; can be specialized for custom functions or argument types (e.g. CuArray compiles and applies a custom CUDA kernel).
  • Operators (grad, div, interpolate) are “pseudo-functions”: Act like functions when broadcasted over a Field; fuse operators and function calls.
  • Add element node size dimensions to type domain
    • i.e., specialize on polynomial degree
    • important for GPU kernel performance.
  • Flexible memory layouts allow for flexible threading models (upcoming):
    • CPU thread over elements
    • GPU thread over nodes.

Versions before and including ClimaCore.jl v0.11.7 relied on WeakValueDicts.jl, which is not thread-safe and no longer maintained.
These versions are considered unsupported, and newer versions of ClimaCore.jl should be used.


Owner metadata


Committers metadata

Last synced: 3 days ago

Total Commits: 2,120
Total Committers: 46
Avg Commits per committer: 46.087
Development Distribution Score (DDS): 0.625

Commits in past year: 124
Committers in past year: 20
Avg Commits per committer in past year: 6.2
Development Distribution Score (DDS) in past year: 0.669

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
Dennis Yatunin d****n@g****m 56
imreddyTeja t****5@g****m 47
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
Ben Mackay j****y@c****u 13
Kevin Phan 9****v 10
nefrathenrici n****i@g****m 9
Tapio Schneider t****o@c****u 8
SimonDanisch s****h@p****m 8
Pete Bachant p****t@c****u 8
Haakon Ludvig Langeland Ervik 4****e 7
K Pamnany k****y@g****m 7
Oluchi Nzerem o****m@g****m 7
LenkaNovak l****a@c****u 4
bischtob t****f@p****e 4
Daniel-Huang d****g@c****u 4
dependabot[bot] 4****] 3
Akshay Sridhar a****r@c****u 3
costachris c****a@g****m 2
Akshay Sridhar a****r@A****l 2
kmdeck k****k@c****u 2
and 16 more...

Committer domains:


Issue and Pull Request metadata

Last synced: 5 days ago

Total issues: 347
Total pull requests: 1,132
Average time to close issues: 6 months
Average time to close pull requests: 23 days
Total issue authors: 38
Total pull request authors: 31
Average comments per issue: 2.35
Average comments per pull request: 2.36
Merged pull request: 747
Bot issues: 0
Bot pull requests: 53

Past year issues: 22
Past year pull requests: 98
Past year average time to close issues: about 1 month
Past year average time to close pull requests: 8 days
Past year issue authors: 11
Past year pull request authors: 20
Past year average comments per issue: 1.05
Past year average comments per pull request: 1.29
Past year merged pull request: 43
Past year bot issues: 0
Past year bot pull requests: 9

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

Top Issue Authors

  • charleskawczynski (147)
  • Sbozzolo (58)
  • simonbyrne (41)
  • sriharshakandala (15)
  • imreddyTeja (13)
  • juliasloan25 (11)
  • kmdeck (6)
  • nefrathenrici (5)
  • szy21 (4)
  • dennisYatunin (4)
  • waywardpidgeon (4)
  • petebachant (4)
  • akshaysridhar (3)
  • jb-mackay (3)
  • ph-kev (2)

Top Pull Request Authors

  • charleskawczynski (666)
  • Sbozzolo (119)
  • simonbyrne (62)
  • dennisYatunin (47)
  • imreddyTeja (38)
  • juliasloan25 (34)
  • github-actions[bot] (32)
  • sriharshakandala (32)
  • dependabot[bot] (21)
  • akshaysridhar (15)
  • petebachant (9)
  • Snowdog85123 (6)
  • valeriabarra (5)
  • szy21 (5)
  • nefrathenrici (4)

Top Issue Labels

  • bug (156)
  • enhancement (92)
  • performance (18)
  • GPU (14)
  • SDI (8)
  • 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 (54)
  • bugfix (54)
  • GPU (49)
  • Performance monitoring :mag::rocket: (31)
  • Inference (26)
  • documentation (21)
  • Release (18)
  • Latency (15)
  • feature (10)
  • CI (8)
  • Workflow :gear: :ocean: (8)
  • breaking :boom: (7)
  • Defensive programming :crossed_swords: (6)
  • House cleaning :broom: (6)
  • unit tests (6)
  • distributed (5)
  • enhancement (5)
  • github_actions (5)
  • Allocations (4)
  • Coverage (3)
  • Performance tests (3)
  • ClimaCorePlots (3)
  • error message (3)
  • julia (3)
  • remapping (3)
  • limiters (2)
  • Debugging (2)

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 3 months ago)
  • Last Synced: 2026-04-01T04:04:25.581Z (about 1 month 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 over 1 year ago)
  • Last Synced: 2026-04-01T04:03:39.638Z (about 1 month 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 over 1 year ago)
  • Last Synced: 2026-04-01T03:54:01.904Z (about 1 month 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 almost 2 years ago)
  • Last Synced: 2026-04-01T04:02:20.167Z (about 1 month 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: 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 almost 2 years ago)
  • Last Synced: 2026-04-01T03:58:09.074Z (about 1 month 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%
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 4 months ago)
  • Last Synced: 2026-04-01T03:58:09.625Z (about 1 month 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%

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 *

Score: 20.059325280115583