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
:height: 512px
:width: 512px
: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
=======

v.0.16.3
-------

* update numpy requirement to avoid binary incompatibility error
* Fix error in documentation

v.0.16.2
--------

* Fix wheel build on Mac

v.0.16.1
-------

* Fixed issue with Mac build
* Few changes in the dry convection component. Significantly improves the performance.
* Changed logo!
* Fixed failing docs build

v0.16.0
------

* Added some documentation for using RRTMG with McICA
* 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 `lon`, `lat`, 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.3.tar.gz (20.3 MB view details)

Uploaded Source

Built Distributions

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

Uploaded CPython 3.7m Windows x86-64

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

Uploaded CPython 3.7m

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

Uploaded CPython 3.7m macOS 10.6+ intel

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

Uploaded CPython 3.6m Windows x86-64

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

Uploaded CPython 3.6m

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

Uploaded CPython 3.6m macOS 10.6+ intel

climt-0.16.3-cp35-cp35m-manylinux1_x86_64.whl (24.7 MB view details)

Uploaded CPython 3.5m

climt-0.16.3-cp27-cp27mu-manylinux1_x86_64.whl (24.7 MB view details)

Uploaded CPython 2.7mu

climt-0.16.3-cp27-cp27m-manylinux1_x86_64.whl (24.7 MB view details)

Uploaded CPython 2.7m

File details

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

File metadata

  • Download URL: climt-0.16.3.tar.gz
  • Upload date:
  • Size: 20.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

File hashes

Hashes for climt-0.16.3.tar.gz
Algorithm Hash digest
SHA256 56272f524f0e9c70eb819b4fdb95465cb84f84112678c287037e162d097a2c5b
MD5 0137792495ff4e00a381920531b1daae
BLAKE2b-256 0546a91fe1f738a41c01382fca7a7834013b4f7bcaf996aed35eeea514842d10

See more details on using hashes here.

File details

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

File metadata

  • Download URL: climt-0.16.3-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.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.2

File hashes

Hashes for climt-0.16.3-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 b0e4f58f0424ef6cb6e5722ac87e7558093f9f68ee7dd73ee5884e004424b254
MD5 bc8e24d80c2611d84d6db8e78a3123d1
BLAKE2b-256 bab90ffc0d079ea4ca98dea75a1063657a11c471a115c5318f0080b2aed9b6f0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: climt-0.16.3-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.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

File hashes

Hashes for climt-0.16.3-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 71290969d70ce9c62a70e6da3eb31dfcb4654e9237de16a7b340f8d97c5593f5
MD5 a74276bddbb1ae16ed628ebd09b0e4e0
BLAKE2b-256 6a4303fb352de124677f09c38b74b3ea30eccc75f23a78f1282382fd129a80ee

See more details on using hashes here.

File details

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

File metadata

  • Download URL: climt-0.16.3-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.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.1

File hashes

Hashes for climt-0.16.3-cp37-cp37m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 690b02622683229707993f4d14dc8845abd5869a7ede47efa576d758d8a97b46
MD5 6163f1199df57ce7f433fd768ad14e4b
BLAKE2b-256 cff75f4722c36cb132efdc6eb8a0b9d03ad5fbbbf07e4555372f5fd54c8c3d90

See more details on using hashes here.

File details

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

File metadata

  • Download URL: climt-0.16.3-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.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.8

File hashes

Hashes for climt-0.16.3-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 1bdee496280672cb3ff50abfbbbd992eaff5ceb8622d0dca94defc01e03f247a
MD5 a35b665d03d6cbe772599fd5b71ed264
BLAKE2b-256 4083cab43913442578af26db36591c0a4926048db94b8d8611bfa7301e089c31

See more details on using hashes here.

File details

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

File metadata

  • Download URL: climt-0.16.3-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.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

File hashes

Hashes for climt-0.16.3-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 4c43a6b03bce3d37af71e25222112df805f7525ed968906acd61e891e021398a
MD5 9f090a3684e922eeb7c6a7c5631790b8
BLAKE2b-256 24f356d8da253b37f85964e95f003d73d08a77411a22b80c0579dd40dc41b295

See more details on using hashes here.

File details

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

File metadata

  • Download URL: climt-0.16.3-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.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.1

File hashes

Hashes for climt-0.16.3-cp36-cp36m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 5320e8f13e4e58c2363795c7f58412ae2b788be2a23ebc2e4bd792f8032b159d
MD5 0ed134e002fbebc3e72103481c157ed4
BLAKE2b-256 ea5e582a64b76203a2e136eb73cffe6d6b5be419762f78ff8c6a214a92eca2c5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: climt-0.16.3-cp35-cp35m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 24.7 MB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

File hashes

Hashes for climt-0.16.3-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 f034d434758521cd2069fdcf74de817c7ce09cfc07ed77911bd521643c85750f
MD5 1caf7b1e47c697fdf2e8a561720f2735
BLAKE2b-256 493d689c95e35ac64e93e462dafdec1c762140f62c384cac637c25121c59cdc9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: climt-0.16.3-cp27-cp27mu-manylinux1_x86_64.whl
  • Upload date:
  • Size: 24.7 MB
  • Tags: CPython 2.7mu
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

File hashes

Hashes for climt-0.16.3-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 0c3c63b774690f330d272a5554284a1cd9be5a2d6f8054356e6b2d5051a1367d
MD5 4e366753aa337b0d9c0e0a40d7339bc8
BLAKE2b-256 e639902eac4f852e302a733933ed2fd8241ea516cfa70cd6f47ead224b710089

See more details on using hashes here.

File details

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

File metadata

  • Download URL: climt-0.16.3-cp27-cp27m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 24.7 MB
  • Tags: CPython 2.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

File hashes

Hashes for climt-0.16.3-cp27-cp27m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 f1e8cff97c2d6c8b9377296100a9b7a10001f86e8a39ab4fd8a0a8c1678515e8
MD5 1c6ce2c89466c7edbf4e2cdf3c2d8c0d
BLAKE2b-256 97bee7198efd31cf4f8e1d595efc7eee43e1aa336759436cef71c51ede8ab7f4

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