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

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.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.11.0.tar.gz (9.7 MB view details)

Uploaded Source

Built Distributions

climt-0.11.0-cp36-cp36m-win_amd64.whl (12.4 MB view details)

Uploaded CPython 3.6m Windows x86-64

climt-0.11.0-cp36-cp36m-manylinux1_x86_64.whl (10.8 MB view details)

Uploaded CPython 3.6m

climt-0.11.0-cp36-cp36m-macosx_10_6_intel.whl (11.5 MB view details)

Uploaded CPython 3.6m macOS 10.6+ intel

climt-0.11.0-cp35-cp35m-win_amd64.whl (12.4 MB view details)

Uploaded CPython 3.5m Windows x86-64

climt-0.11.0-cp35-cp35m-manylinux1_x86_64.whl (10.8 MB view details)

Uploaded CPython 3.5m

climt-0.11.0-cp27-cp27mu-manylinux1_x86_64.whl (10.8 MB view details)

Uploaded CPython 2.7mu

climt-0.11.0-cp27-cp27m-manylinux1_x86_64.whl (10.8 MB view details)

Uploaded CPython 2.7m

File details

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

File metadata

  • Download URL: climt-0.11.0.tar.gz
  • Upload date:
  • Size: 9.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for climt-0.11.0.tar.gz
Algorithm Hash digest
SHA256 aae44ad21ce3bb6005d6cd7fe3ddfccd68963608d781e09e86410ea823047c49
MD5 1f223dc4e106460d21c1f38113a5f129
BLAKE2b-256 b5c08feee169aa65952f59ff906f47e71d04fc12dd302a218533f9d965379200

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for climt-0.11.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 1bdb32bc085863bae06559f8863d7bdb2a0d23c60678328d92e65e5c943d4d83
MD5 7a424eb6995942dac92e674bfd2bb48f
BLAKE2b-256 8c7636321cd4ca1b4ab5e634236c96a95396c3e0f4c98dd65b9f16e5ae5985c2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for climt-0.11.0-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 9652a75386142f71469108d9afc2ea2b55f04ff3ddedb5326ea67931806ff7e0
MD5 d34711441a57287015195c6234070321
BLAKE2b-256 e37b156f6ea2e4fe5932370da3687394f1e4a6dd5abab2d50c8afb3548abf171

See more details on using hashes here.

File details

Details for the file climt-0.11.0-cp36-cp36m-macosx_10_6_intel.whl.

File metadata

File hashes

Hashes for climt-0.11.0-cp36-cp36m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 6aae0955afcd863493693460182f504f78af31ad0664f5d1e9842f7b5dda7d49
MD5 65ea80d838f39601b91b41b653c373d1
BLAKE2b-256 3686f0c04d7fb1f33d6e2a1c0f82451a93985e0241e54b0df3e41715f9a32c49

See more details on using hashes here.

File details

Details for the file climt-0.11.0-cp35-cp35m-win_amd64.whl.

File metadata

File hashes

Hashes for climt-0.11.0-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 fe53a3d1e3cd7c7371f1070da55b0b06ff58ec3f08327a452e8d2572a130b68b
MD5 3f26c02a0f1ea018f7f02f96a2d24523
BLAKE2b-256 28ed9eac9cc1e485e7f882e39a2858c304707299456d42f40b5a6fc5bed27621

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for climt-0.11.0-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 900028a04fba05ba3632e8da10f63ecca9bc5c7ac50fc939cc28c664248e4959
MD5 32313a7a29c175c23386592810fc3d7e
BLAKE2b-256 ace61bc465ae47843c6db767a8a7fa57b516e4c2327586ec83aaf4a9f56e0ebe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for climt-0.11.0-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 1af4f02aa9c48a608d9a16dd3d0e25c82401a2cd51166d566e73fdba771a7332
MD5 adc2a9f9e75e03cd73d1e4dca898c1dd
BLAKE2b-256 98e87d0d63afc38f0b5ccfaf3d63ddde3b7d19b9a0526f57b5b20feb1ed94fd2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for climt-0.11.0-cp27-cp27m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 559c62d401822b167268161cb43d7bfebdd3e0a3fbdb004bab3f30e82741947d
MD5 0792a22bf6a63a01d96faea0602939ac
BLAKE2b-256 d7f31d9a8602777030ea02edfd87ca4975d484198ebcd85b7493afbea86917fc

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