jcm.dycore

Pluggable dynamical-core backends for jax-gcm.

The DynamicalCore protocol in jcm.dycore.base defines the contract between jcm.model.Model and a specific dycore implementation. Backends live under this package (dinosaur, pyses, …) and register themselves with the factory registry in jcm.dycore.registry.

The boundary between physics and dynamics is gridpoint on both sides on the dycore’s own native horizontal layout. Physics arrays are shaped (nlev, *horizontal_shape) where horizontal_shape comes from the dycore — a regular (nlon, nlat) for the dinosaur spectral backend, (nelem, gll, gll) for a cubed-sphere spectral-element backend, etc. There is no horizontal regrid at the physics-dynamics seam; lat/lon regridding (when it happens) is a dycore-internal step on the way to xarray output.

See docs/source/design.rst for the architecture overview.

Modules

base

The DynamicalCore protocol.

base_test

Contract tests for the DynamicalCore protocol.

dinosaur

Dinosaur-backed implementation of the DynamicalCore protocol.

protocol_test

Protocol-canary tests on a non-lat/lon horizontal layout.

registry

Name → factory registry for dynamical-core backends.