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
- Host: GitHub
- URL: https://github.com/clima/climacore.jl
- Owner: CliMA
- License: apache-2.0
- Created: 2021-04-09T17:52:53.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2026-08-15T19:07:52.000Z (7 days ago)
- Last Synced: 2026-08-15T20:35:20.002Z (7 days ago)
- Topics: climate-modeling, dynamical-core, earth-system-model, finite-difference, gpu, high-performance-computing, julia, numerical-methods, pde, scientific-computing, spectral-elements
- Language: Julia
- Homepage: https://clima.github.io/ClimaCore.jl/dev
- Size: 69.1 MB
- Stars: 114
- Watchers: 2
- Forks: 18
- Open Issues: 241
- Releases: 144
-
Metadata Files:
- Readme: README.md
- Changelog: NEWS.md
- License: LICENSE
- Notice: NOTICE
- Agents: AGENTS.md
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 | |
| Version | |
| License | |
| Tests | |
| Code Coverage | |
| Downloads | |
| DOI |
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.
Fieldabstraction: 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 aField, 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:
- ClimaAtmos.jl — atmosphere model
- ClimaLand.jl — land model
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
- Name: Climate Modeling Alliance
- Login: CliMA
- Email: clima@caltech.edu
- Kind: organization
- Description: An alliance of scientists, engineers and applied mathematicians, dedicated to pioneering a new, data-informed approach to climate modeling
- Website: https://clima.caltech.edu
- Location:
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/43161188?v=4
- Repositories: 67
- Last ynced at: 2023-03-03T21:04:27.588Z
- Profile URL: https://github.com/CliMA
GitHub Events
Total
- Commit comment event: 50
- Create event: 303
- Delete event: 254
- Fork event: 9
- Issue comment event: 570
- Issues event: 184
- Pull request event: 460
- Pull request review comment event: 565
- Pull request review event: 602
- Push event: 3672
- Release event: 22
- Watch event: 24
Last Year
- Commit comment event: 9
- Create event: 61
- Delete event: 59
- Issue comment event: 34
- Issues event: 27
- Pull request event: 42
- Pull request review comment event: 80
- Pull request review event: 50
- Push event: 1111
- Release event: 4
- Watch event: 6
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 | 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:
- caltech.edu: 11
- unr.edu: 1
- wolfson.oxon.org: 1
- ec-intl.com: 1
- clima.gps.caltech.edu: 1
- pm.me: 1
- julialang.org: 1
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
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
- Total packages: 6
-
Total downloads:
- julia: 31,593 last-month
- Total dependent packages: 22 (may contain duplicates)
- Total dependent repositories: 0 (may contain duplicates)
- Total versions: 203
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
- actions/cache v1 composite
- actions/checkout v2 composite
- actions/upload-artifact v2 composite
- julia-actions/setup-julia latest composite
- actions/cache v1 composite
- actions/checkout v2 composite
- actions/upload-artifact v2 composite
- julia-actions/setup-julia latest composite
- actions/cache v1 composite
- actions/checkout v2 composite
- actions/upload-artifact v2 composite
- julia-actions/setup-julia latest composite
- actions/cache v1 composite
- actions/checkout v2 composite
- actions/upload-artifact v2 composite
- julia-actions/setup-julia latest composite
- actions/cache v1 composite
- actions/checkout v2 composite
- actions/upload-artifact v2 composite
- julia-actions/setup-julia latest composite
- actions/checkout v2 composite
- actions/checkout v3 composite
- julia-actions/julia-buildpkg v1 composite
- julia-actions/julia-invalidations v1 composite
- julia-actions/setup-julia v1 composite
- 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
- JuliaRegistries/TagBot v1 composite
- actions/checkout v2 composite
- julia-actions/setup-julia latest composite
- 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
- ClimaComms *
- ClimaCore *
- ClimaCorePlots *
- IntervalSets *
- Plots *
- Test *
- ClimaCore *
- WriteVTK *
- ClimaComms *
- ClimaCore *
- CommonDataModel *
- Dates *
- DiskArrays *
- LinearAlgebra *
- NCDatasets *
- PkgVersion *
- TempestRemap_jll *
- ClimaComms *
- ClimaCore *
- ClimaCoreVTK *
- IntervalSets *
- Test *
- 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 *
- actions/checkout v4 composite
- julia-actions/cache v2 composite
- julia-actions/julia-buildpkg v1 composite
- julia-actions/setup-julia v2 composite
- ClimaCore *
- FFTW *
- ClimaCore *
- ClimaCoreSpectra *
- FFTW *
- IntervalSets *
- Plots *
- Test *
- 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
- 365 dependencies
- 311 dependencies
- ClimaComms *
- ClimaCore *
- ClimaCoreMakie *
- GLMakie *
- IntervalSets *
- Makie *
- Test *
- ClimaComms *
- ClimaCore *
- RecipesBase *
- StaticArrays *
- TriplotBase *
- ClimaCore *
- ClimaCoreSpectra *
- ClimaCoreTempestRemap *
- FFTW *
- NCDatasets *
- Plots *
- 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 *
- 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 *
- 254 dependencies
- BenchmarkTools *
- CUDA *
- ClimaComms *
- ClimaCore *
- Colors *
- NVTX *
- BenchmarkTools *
- CUDA *
- ClimaCore *
- Plots *
- CairoMakie *
- ClimaComms *
- ClimaCore *
- ClimaCoreMakie *
- ClimaCorePlots *
- ClimaCoreSpectra *
- ClimaCoreTempestRemap *
- ClimaCoreVTK *
- Documenter *
- DocumenterCitations *
- FFTW *
- IntervalSets *
- LinearAlgebra *
- Literate *
- Makie *
- OrdinaryDiffEqSSPRK *
- Plots *
- ClimaCore *
- Makie *
- ClimaCore *
- ClimaCoreMakie *
- Downloads *
- GLMakie *
- GeoMakie *
- IJulia *
- IntervalSets *
- Makie *
- WGLMakie *
- actions/checkout v7 composite
Score: 20.083652361678187