Changelog

This document provides a brief summary of changes in each released version of pyqg-jax. More information and release builds are also available on the GitHub releases page.

v0.9.0 (Unreleased)

  • Add enstrophy spectrum calculation ens_spec_vals()

  • Improve some error messages (include additional details)

  • Precision enum members now have attributes dtype_real and dtype_complex storing the dtypes used at each precision level.

  • Update AB3Stepper and EulerStepper to ensure consistent behavior regardless of the dt parameter’s precision and preventing errors when it does not have weak type (i.e. when it is not a Python float).

  • Breaking: Require Python 3.10 or later

Note

In this release, state class __init__ parameters are now keyword-only. If you are obtaining these from model classes as recommended this should require no changes. However if you construct these classes manually, make sure all arguments are passed as keyword arguments. This affects PseudoSpectralState, FullPseudoSpectralState, ParameterizedModelState and StepperState.

Note

Some of the internal changes in this release (to steppers and QGModel) may affect calculations and exact trajectories due to minor numeric changes and possible differences in JIT behavior.

v0.8.1

v0.8.0

  • Add EulerStepper

  • Add pyqg_jax.diagnostics module (see documentation and associated example for more information)

  • New Grid class for use with diagnostics

  • Fix incompatibility with JAX v0.4.24

  • Fix shape errors for models with non-square states (this setting is still less well-tested and not recommended)

Note

This release adds an internal, hidden static field to the PseudoSpectralState class. This field is an implementation detail, and if all instances are constructed from model classes (model.create_initial_state) this shouldn’t cause issues and should require no attention. However, if you were constructing these objects manually using their constructors this will be a breaking change.

v0.7.0

  • Add implementation of SQGModel from PyQG

  • Integrate with JAX pytree key paths

  • Improved summary formatting of built-in Python collections

  • Breaking: Drop support for Python 3.8

  • Breaking: Remove uq and vq attributes from FullPseudoSpectralState

v0.6.0

  • Clearer error messages when using model states with the wrong shape

  • Add implementation of BTModel from PyQG

v0.5.1

  • Add properties for missing full state attributes p and dqdt

  • Summarize state objects without using computed properties

v0.5.0

v0.4.0

v0.3.0

  • Add __repr__ methods to most classes showing nested states and models

  • Add a no-op noop parameterization

v0.2.0

  • Parameterizations now receive the “partial” model state, and call model.get_full_state to expand it

  • Fix propagation and unwrapping of parameterization states during time-stepping

  • Move NoStepValue into steppers module

  • Remove repeated names from parameterization functions

v0.1.0

Initial release