Skip to main content

CliMT is a Toolkit for building Earth system models in Python.

Project description

CliMT

PyPI Continuous Integration Continuous Integration Coverage Documentation Status Zenodo DOI

CliMT is a Toolkit for building Earth system models in Python. CliMT stands for Climate Modelling and diagnostics Toolkit – it is meant both for creating models and for generating diagnostics (radiative fluxes for an atmospheric column, for example). However, since it might eventually include model components for purposes other than climate modelling (local area models, large-eddy simulation), we prefer to keep the abbreviation un-expanded!

CliMT hopes to enable researchers to easily perform online analysis and make modifications to existing models by increasing the ease with which models can be understood and modified. It also enables educators to write accessible models that serve as an entry point for students into Earth system modeling, while also containing state-of-the-art components.

Initially CliMT contains only components for the atmosphere, and does not yet include a coupler. But there are plans to extend CliMT to a fully coupled Earth system model in the future. The toolkit is also written in such a way that it could enable the development of non-climate models (e.g. weather prediction, large-eddy simulation). To do so requires only that the prognostic and diagnostic schemes are wrapped into the correct Python-accessible interface.

CliMT builds on Sympl, which provides the base classes and array and constants handling functionality. Thanks to Sympl and Pint, CliMT is also a fully units aware model. It is useful to know how Sympl works to use CliMT better. Read more about Sympl at https://sympl.readthedocs.io.

Installation

CliMT can be installed directly from the python package index using pip.

pip install climt

should work on most systems. From version 0.9.2 onwards, this command will install binary wheels, eliminating the requirement of a compiler on your system.

Detailed instructions for Mac and Linux systems are available in the documentation.

Features

  • CliMT is fully units-aware!

  • Uses the xarray DataArray abstraction to build self describing model arrays.

  • Provides different levels of abstraction towards building a climate model.

  • Like Sympl, CliMT consciously uses descriptive names in the user API to ensure model scripts are self-documenting.

  • Allows for quick prototyping of earth system model components.

  • Provides a clean and convenient interface to add new components.

Credits

This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.

History

v.0.14.8

Many of the changes in this version come from changes in Sympl 0.4.0. We recommend reading those changes in the Sympl documentation.

  • Updated component APIs to work with Sympl 0.4.0

  • Many components which previously required horizontal dimensions now use wildcard matches for column dimensions.

  • Switched many print statements to logging calls.

  • Fixed bugs in some components

Breaking Changes

  • get_constant and set_constant have been removed, use the ones in Sympl.

  • Emanuel convection scheme can no longer be set to perform dry adiabatic adjustment to the boundary layer. This has been implemented in a separate component.

  • ClimtPrognostic, ClimtImplicitPrognostic, ClimtDiagnostic, ClimtImplicit have been removed. Use the base types in Sympl.

  • State initialization has been entirely re-worked. get_default_state now takes in an optional grid state instead of options to do with the state grid. A function get_grid is provided which can create a grid state, or one can be created manually. A grid state is a state containing air pressure and sigma on mid and interface levels, as well as surface pressure.

  • Replaced references to “thermal_capacity” with references to “heat_capacity” in component quantity names.

v.0.14.7

  • Fix issue with pip v10 and pandas 0.22 conflicts

v.0.14.3

  • Fix release issue because of pip API change

v.0.14.1

  • Fix appveyor fail due to pip changes

v.0.14.0

  • Fixed broken version numbers

v.0.12.0

  • new release to fix version numbers and create zenodo ID

v.0.9.4

  • Added attributes to inputs/outputs/ etc., to work with ScalingWrapper Added tests as well.

  • Added tests for constants functions

  • Fixed requirements to ensure this version of climt installs the correct versions of sympl and numpy.

v.0.9.3

  • Released because of a labelling issue. See 0.9.2 for details.

v.0.9.2

  • Updated documentation

  • Cleaned up examples

  • Added (*)_properties as a property to all components

  • The gas constant for dry air in the Emanuel scheme is now renamed _Rdair

  • RRTMG LW and SW are now OpenMP parallel

  • Added Instellation component to calculate zenith angle

  • Added tests to increase coverage

  • New constants handling functionality added

  • Travis builds now use stages

  • Appveyor CI up and running

  • Pre-installation of cython and numpy no longer necessary for source builds

  • Added snow-ice component

  • Ozone profiles do not need to be specified externally

  • Now also tested on Python 3.6

Breaking Changes

  • API for constants setting changed to set_constant_from_dict and add_constants_from_dict

  • GfsDynamicalCore renamed to GFSDynamicalCore for consistency

  • get_prognostic_version method of ClimtImplicit renamed to prognostic_version, and no longer accepts timestep as an argument. The current timestep should be set in ClimtImplicit.current_time_step during each iteration.

  • RRTMGShortwave now uses sympl’s solar constant by default instead of from fortran.

v.0.9.1

  • Held-Suarez and moist GCM with grey radiation work!

  • Added DCMIP initial conditions, test 4 tried out.

  • Dynamical core integrated now.

  • BIG change in the build system. Tests pass on Mac as well

  • Arrays can now have arbitrary dtype (to use qualitative, string, quantities)

  • Added Emanuel Convection, surface energy balance model and ice sheet energy balance

  • 2D coordinates are now supported for horizontal coordinates

  • Replaced create_output_arrays() with a more general get_state_dict_for() and get_numpy_arrays_from_state() combination.

  • State arrays now have coordinates

  • Updated documentation

  • RTD finally working, phew!

  • Added RRTMG Longwave, Simple Physics

  • Added helper functions to reduce boilerplate code in components

Breaking Changes

Latest

  • method to obtain piecewise constant prognostic has been renamed to piecewise_constant_version

  • Ozone profile has been modified

  • Heating rate for RRTMG top-of-atmosphere is no longer manually set to zero

  • Components no longer accept constants during initialisation. All constant handling is done internally.

v.0.9

  • SlabSurface no longer uses depth_slab_surface as input

  • changed order of outputs of GfsDynamicalCore and SimplePhysics to conform to TimeStepper order of diagnostics, new_state

  • get_default_state now accepts mid_levels and interface_levels instead of z to specify vertical coordinates.

  • mass_to_volume_mixing_ratio now uses numpy arrays instead of DataArrays.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

climt-0.15.2.tar.gz (18.5 MB view details)

Uploaded Source

Built Distributions

climt-0.15.2-cp36-cp36m-win_amd64.whl (27.4 MB view details)

Uploaded CPython 3.6m Windows x86-64

climt-0.15.2-cp36-cp36m-manylinux1_x86_64.whl (25.7 MB view details)

Uploaded CPython 3.6m

climt-0.15.2-cp36-cp36m-macosx_10_7_x86_64.whl (24.8 MB view details)

Uploaded CPython 3.6m macOS 10.7+ x86-64

climt-0.15.2-cp35-cp35m-manylinux1_x86_64.whl (25.7 MB view details)

Uploaded CPython 3.5m

climt-0.15.2-cp27-cp27mu-manylinux1_x86_64.whl (25.7 MB view details)

Uploaded CPython 2.7mu

climt-0.15.2-cp27-cp27m-manylinux1_x86_64.whl (25.7 MB view details)

Uploaded CPython 2.7m

File details

Details for the file climt-0.15.2.tar.gz.

File metadata

  • Download URL: climt-0.15.2.tar.gz
  • Upload date:
  • Size: 18.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.1.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.3

File hashes

Hashes for climt-0.15.2.tar.gz
Algorithm Hash digest
SHA256 95681f8afe1cdc6fa0275963aa9cbcbcbb0098d3b77fb35e1ecabb50a2abf943
MD5 404753e0fb67de3d9d063362ed6ef1a4
BLAKE2b-256 cbe96516aff566ce279021caa9609a2ff35e06530c5836c488dc5243cb5e196c

See more details on using hashes here.

File details

Details for the file climt-0.15.2-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: climt-0.15.2-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 27.4 MB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.0.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.6

File hashes

Hashes for climt-0.15.2-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 dab2bd232b1514330aca706d6f6dc74edecb39ac0adef923fd8d725bb2f87e8e
MD5 2db7796b6d0d3f741415aaaadb16ed0e
BLAKE2b-256 56b393872ec295c6c24e6bd997cb0ff168c5cc7058e723e2899323dad552f110

See more details on using hashes here.

File details

Details for the file climt-0.15.2-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

  • Download URL: climt-0.15.2-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 25.7 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.1.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.3

File hashes

Hashes for climt-0.15.2-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 286c5f2c02c7c772dd6bb953518bbac7f7a455d09b3873b307041c6fbcd6eae2
MD5 5c0f24bec0678996d8f8be0fbdf9d123
BLAKE2b-256 e0886442acae65545cf2dacc872c262496b4c197e2ff4e74e86b5962999899e5

See more details on using hashes here.

File details

Details for the file climt-0.15.2-cp36-cp36m-macosx_10_7_x86_64.whl.

File metadata

  • Download URL: climt-0.15.2-cp36-cp36m-macosx_10_7_x86_64.whl
  • Upload date:
  • Size: 24.8 MB
  • Tags: CPython 3.6m, macOS 10.7+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.14.2 setuptools/27.2.0 requests-toolbelt/0.8.0 tqdm/4.19.8 CPython/3.6.1

File hashes

Hashes for climt-0.15.2-cp36-cp36m-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 455e1d7d82dd21dac11a15d4fde743f069462464dd560d1107cdfb3316affc38
MD5 601633f695c3917b92cb9c68da74c03e
BLAKE2b-256 d86391ffe0e0c229ec6d2a0d064485aa48315260cecb0194ba754e86c55ffdca

See more details on using hashes here.

File details

Details for the file climt-0.15.2-cp35-cp35m-manylinux1_x86_64.whl.

File metadata

  • Download URL: climt-0.15.2-cp35-cp35m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 25.7 MB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.1.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.3

File hashes

Hashes for climt-0.15.2-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 eb5b492c6b7a3bffb6f272450d4e276aef094ef259caca9dea97598987e3211e
MD5 c13e04568ef9bcc53e66a1f4450bb474
BLAKE2b-256 6ddad71e9e3b56722c60b4312f5054680c173afbae364552f5569e089a008c64

See more details on using hashes here.

File details

Details for the file climt-0.15.2-cp27-cp27mu-manylinux1_x86_64.whl.

File metadata

  • Download URL: climt-0.15.2-cp27-cp27mu-manylinux1_x86_64.whl
  • Upload date:
  • Size: 25.7 MB
  • Tags: CPython 2.7mu
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.1.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.3

File hashes

Hashes for climt-0.15.2-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 f45b6089b202830d160bd6308fec83b30febb5b050290c2283f1f0ebe413042b
MD5 0b0e7e5e392cd6da429193de74dcdb8e
BLAKE2b-256 ae47198999f080ea3efd73a7e2fe298124ff8818035d00e903b1672c85b8152f

See more details on using hashes here.

File details

Details for the file climt-0.15.2-cp27-cp27m-manylinux1_x86_64.whl.

File metadata

  • Download URL: climt-0.15.2-cp27-cp27m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 25.7 MB
  • Tags: CPython 2.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.1.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.3

File hashes

Hashes for climt-0.15.2-cp27-cp27m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 e4081965ac8bb09a80e68863f0e631e36e53e68e03e9609c43656a1c5647dc5f
MD5 f8ca72603108cc3d3d5dd2d186d23223
BLAKE2b-256 0460680c98a6546a05e6f43b55ed4269b860287162579190502e88c6640b6504

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page