Skip to main content

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

Project description

=====
climt
=====


.. image:: https://img.shields.io/pypi/v/climt.svg
:target: https://pypi.python.org/pypi/climt
:alt: PyPI

.. image:: https://img.shields.io/travis/climt/climt.svg
:target: https://travis-ci.org/climt/climt
:alt: Continuous Integration

.. image:: https://ci.appveyor.com/api/projects/status/h9ayx22cxyfwh5rh?svg=true
:target: https://ci.appveyor.com/project/JoyMonteiro/climt
:alt: Continuous Integration

.. image:: https://img.shields.io/codecov/c/github/climt/climt.svg
:target: https://travis-ci.org/climt/climt
:alt: Coverage

.. image:: https://readthedocs.org/projects/climt/badge/
:target: https://climt.readthedocs.io/en/latest/?badge=latest
:alt: Documentation Status

.. image:: https://zenodo.org/badge/74854230.svg
:target: https://zenodo.org/badge/latestdoi/74854230
:alt: Zenodo DOI


.. image:: ./docs/climt_logo.jpg
:align: center

**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.

* Free software: BSD license
* Documentation: https://climt.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.

Citing climt
------------

If you use climt in your research, please cite the following paper documenting sympl_ and climt

https://www.geosci-model-dev.net/11/3781/2018/

Credits
-------

This package was created with Cookiecutter_ and the `audreyr/cookiecutter-pypackage`_ project template.

.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage
.. _sympl: https://github.com/mcgibbon/sympl
.. _Pint: https://pint.readthedocs.io
.. _xarray: http://xarray.pydata.org
.. _documentation: http://climt.readthedocs.io/en/latest/installation.html


=======
History
=======

v0.16.0
------

* CI Testing for Mac and py37 added.
* Refactored initialisation code
* Enable the McICA version of RRTMG Longwave for consistency
with the Shortwave component.
* Fix bugs in IceSheet
* Add tests to verify conservation of quantities
* Fix bugs in initialisation
* Fix energy conservation in surface flux scheme
* Enable the McICA version of RRTMG Shortwave,
so that partial cloud fractions can be used.
* Add GMD example scripts to repository.
* Fix docs to reflect API changes after refactor.
* Fix wrong initialisation to use sigma values instead of pressure values
of optical depth for GrayLongwaveRadiation

Breaking Changes
----------------

* The flux outputs of GrayLongwaveRadiation have been renamed to eliminate
`on_interface_levels` to keep consistency with other components.
* All arrays are now 3/2d by default based on their expected dimensions.
* horizontal dimensions are now `model_longitude`, `model_latitude`, but inputs
used by components remain the same (`latitude`, `longitude`).



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
:code:`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.16.0.tar.gz (19.8 MB view details)

Uploaded Source

Built Distributions

climt-0.16.0-cp37-cp37m-win_amd64.whl (27.5 MB view details)

Uploaded CPython 3.7m Windows x86-64

climt-0.16.0-cp37-cp37m-manylinux1_x86_64.whl (24.8 MB view details)

Uploaded CPython 3.7m

climt-0.16.0-cp37-cp37m-macosx_10_6_intel.whl (23.8 MB view details)

Uploaded CPython 3.7m macOS 10.6+ intel

climt-0.16.0-cp36-cp36m-win_amd64.whl (27.5 MB view details)

Uploaded CPython 3.6m Windows x86-64

climt-0.16.0-cp36-cp36m-manylinux1_x86_64.whl (24.8 MB view details)

Uploaded CPython 3.6m

climt-0.16.0-cp36-cp36m-macosx_10_6_intel.whl (23.8 MB view details)

Uploaded CPython 3.6m macOS 10.6+ intel

climt-0.16.0-cp35-cp35m-manylinux1_x86_64.whl (24.8 MB view details)

Uploaded CPython 3.5m

climt-0.16.0-cp27-cp27mu-manylinux1_x86_64.whl (24.8 MB view details)

Uploaded CPython 2.7mu

climt-0.16.0-cp27-cp27m-manylinux1_x86_64.whl (24.8 MB view details)

Uploaded CPython 2.7m

File details

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

File metadata

  • Download URL: climt-0.16.0.tar.gz
  • Upload date:
  • Size: 19.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.3

File hashes

Hashes for climt-0.16.0.tar.gz
Algorithm Hash digest
SHA256 163fb36b0b0268378a6543670fd6f93256f2d049e14d12561cdd38190b2c0db6
MD5 b2fdeb18a7de4075059173798b9fea18
BLAKE2b-256 ff2b050c9b5a19e50253a04e617ce4367ba2a3bef61800f94402a6ca61ae9e0c

See more details on using hashes here.

File details

Details for the file climt-0.16.0-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: climt-0.16.0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 27.5 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.7.0

File hashes

Hashes for climt-0.16.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 9733cca96dc4e858db2fd939d89a5b943dd1ab5941830bcb345af8cabb5a225f
MD5 c010013aeb3d90daf19b450b962be784
BLAKE2b-256 19849fbe133697f281b7d80d2b8f83294523b21fed0492da503e7ffec5847052

See more details on using hashes here.

File details

Details for the file climt-0.16.0-cp37-cp37m-manylinux1_x86_64.whl.

File metadata

  • Download URL: climt-0.16.0-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 24.8 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.3

File hashes

Hashes for climt-0.16.0-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 399ca160edea8a22299bb038b8c729ed654d2a0ce648192b341967f4a48f2791
MD5 23865e8e21ad9ee88957644651e9e69a
BLAKE2b-256 9a8b2cc8d6443b333dfe92b52f25f72a4f64b6e24ba9aff8873b397bf37bf498

See more details on using hashes here.

File details

Details for the file climt-0.16.0-cp37-cp37m-macosx_10_6_intel.whl.

File metadata

  • Download URL: climt-0.16.0-cp37-cp37m-macosx_10_6_intel.whl
  • Upload date:
  • Size: 23.8 MB
  • Tags: CPython 3.7m, macOS 10.6+ intel
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.7.0

File hashes

Hashes for climt-0.16.0-cp37-cp37m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 1b6aa38ecd8a0e725f03c92f5e3685dbef1316184b77dd8e0dcfb872fd7072c5
MD5 c1e3047104c482e5774fcd6861711dec
BLAKE2b-256 372db54bc0c26f8eaee2c1b3a252e3bcdc2c35334f25c6511f2386a4f23716fe

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for climt-0.16.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 d4e2715a617d500902c8328903e267ee7dfd095fa6f7f2ee604d8f3e7e5be255
MD5 5044ec4eabbc5da459bfdd384af750cf
BLAKE2b-256 4e44bb625deec986479df7d2deac078bf0d323c7ac3c62627bc37c52736cbc67

See more details on using hashes here.

File details

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

File metadata

  • Download URL: climt-0.16.0-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 24.8 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.3

File hashes

Hashes for climt-0.16.0-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 f944bef424b558d85e9d353872f16ffbee815adcc7bc1da8d7b576765d1db209
MD5 a3dcfee3128a8a6b15e2824755086e33
BLAKE2b-256 ab06b22030db067982c96f27fed3ca527e07ecc81b4674dc96397a4c5f2416a0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: climt-0.16.0-cp36-cp36m-macosx_10_6_intel.whl
  • Upload date:
  • Size: 23.8 MB
  • Tags: CPython 3.6m, macOS 10.6+ intel
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.7.0

File hashes

Hashes for climt-0.16.0-cp36-cp36m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 16f22e6a52f5d23b9103a7d84e543778d4ce8ff1f02baca1274c50a11a85b505
MD5 ad51760f17dbe2f0984ba10a6e1c18d9
BLAKE2b-256 264986b79fc5f360a1dd732ca06192f3bf5d9631b1941102dfa76a7387a13a90

See more details on using hashes here.

File details

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

File metadata

  • Download URL: climt-0.16.0-cp35-cp35m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 24.8 MB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.3

File hashes

Hashes for climt-0.16.0-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 77da379d3c29e28d54c1588e6812572dd01f984c532727520bb205172d7ac745
MD5 523f30a119b2dea3694efbd28f9e2e51
BLAKE2b-256 896875981354e2efa2fd8abbdcdb9dbbeecafdd4b6d09e60063674d1d06c89f4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: climt-0.16.0-cp27-cp27mu-manylinux1_x86_64.whl
  • Upload date:
  • Size: 24.8 MB
  • Tags: CPython 2.7mu
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.3

File hashes

Hashes for climt-0.16.0-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 8423f146cc4d3e239e527a21ce4ea7751c7659d72a59b4469c7962b6ef2011d1
MD5 07a026d7076bc9fa854948729a3b9a04
BLAKE2b-256 6b8c8b1f7b51db33bd9e9472cd6012b927e5627fcb756d4731d65e955f45b1dd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: climt-0.16.0-cp27-cp27m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 24.8 MB
  • Tags: CPython 2.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.3

File hashes

Hashes for climt-0.16.0-cp27-cp27m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 62099943d25f046ad38375daf1ffb68ca22ebd230b71311507891e4608729a1a
MD5 1e68320cab4a3b05973a10ed865689f6
BLAKE2b-256 26f914d1c3836a2bca6872983dcbedab1487b94ca5e6e83389b5717180635e96

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