GPU-ready IMEX and multirate ODE solvers for large-scale scientific models
53
stars
699
commits
Julia
primary language
Sep 12, 2026
updated
High-performance ODE solvers for climate model time-stepping. Designed for distributed and GPU computation with minimal memory footprint.
ClimaTimeSteppers.jl provides the time integration layer for ClimaAtmos.jl, ClimaLand.jl, and ClimaCoupler.jl.
using ClimaTimeSteppers
import ClimaTimeSteppers as CTS
# Define du/dt = -u (exponential decay)
f = ClimaODEFunction(; T_exp! = (du, u, p, t) -> (du .= -u))
prob = CTS.ODEProblem(f, [1.0], (0.0, 5.0), nothing)
# Solve with an explicit RK4 algorithm
alg = ExplicitAlgorithm(RK4())
sol = CTS.solve(prob, alg; dt = 0.1)
# Or step manually
integrator = CTS.init(prob, alg; dt = 0.1)
CTS.step!(integrator)
CTS.solve!(integrator)
For IMEX problems (e.g., stiff vertical diffusion + explicit horizontal advection), provide an implicit tendency with a Jacobian:
T_imp! = CTS.ODEFunction(T_imp!; jac_prototype = W, Wfact = Wfact!)
f = ClimaODEFunction(; T_exp!, T_imp!, dss!)
alg = IMEXAlgorithm(ARS343(), NewtonsMethod(; max_iters = 2))
See the documentation for the full tutorial.
ClimaTimeSteppers.jl is a registered Julia package:
using Pkg
Pkg.add("ClimaTimeSteppers")
See the contributor guide for information on contributing.
Before making significant changes, please also read the Agent Guide
and the repo-specific guide. The shared
CliMA engineering guidelines — covering documentation policy, code style,
performance, and testing — are vendored at docs/dev-guides/.
ClimaTimeSteppers.jl is a core component of the CliMA ecosystem and can have a significant impact on downstream packages. Before making a breaking release, a stable patch release must be exercised by user repos (ClimaAtmos, ClimaLand, ClimaCoupler) without new issues.
ClimaTimeSteppers.jl is part of the CliMA ecosystem:
Julia
100.0%
GPU-ready IMEX and multirate ODE solvers for large-scale scientific models
53
stars
699
commits
Julia
primary language
Sep 12, 2026
updated
High-performance ODE solvers for climate model time-stepping. Designed for distributed and GPU computation with minimal memory footprint.
ClimaTimeSteppers.jl provides the time integration layer for ClimaAtmos.jl, ClimaLand.jl, and ClimaCoupler.jl.
using ClimaTimeSteppers
import ClimaTimeSteppers as CTS
# Define du/dt = -u (exponential decay)
f = ClimaODEFunction(; T_exp! = (du, u, p, t) -> (du .= -u))
prob = CTS.ODEProblem(f, [1.0], (0.0, 5.0), nothing)
# Solve with an explicit RK4 algorithm
alg = ExplicitAlgorithm(RK4())
sol = CTS.solve(prob, alg; dt = 0.1)
# Or step manually
integrator = CTS.init(prob, alg; dt = 0.1)
CTS.step!(integrator)
CTS.solve!(integrator)
For IMEX problems (e.g., stiff vertical diffusion + explicit horizontal advection), provide an implicit tendency with a Jacobian:
T_imp! = CTS.ODEFunction(T_imp!; jac_prototype = W, Wfact = Wfact!)
f = ClimaODEFunction(; T_exp!, T_imp!, dss!)
alg = IMEXAlgorithm(ARS343(), NewtonsMethod(; max_iters = 2))
See the documentation for the full tutorial.
ClimaTimeSteppers.jl is a registered Julia package:
using Pkg
Pkg.add("ClimaTimeSteppers")
See the contributor guide for information on contributing.
Before making significant changes, please also read the Agent Guide
and the repo-specific guide. The shared
CliMA engineering guidelines — covering documentation policy, code style,
performance, and testing — are vendored at docs/dev-guides/.
ClimaTimeSteppers.jl is a core component of the CliMA ecosystem and can have a significant impact on downstream packages. Before making a breaking release, a stable patch release must be exercised by user repos (ClimaAtmos, ClimaLand, ClimaCoupler) without new issues.
ClimaTimeSteppers.jl is part of the CliMA ecosystem:
Julia
100.0%