Package: climt
climtclimtis a Toolkit for building Earth system models in Python. climt stands forClimate 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 onsympl, which provides the base classes and  array and constants handling
functionality. Thanks tosymplandPint, climt is also a fully units aware model. It is
useful to know howsymplworks to use climt better. Read more aboutsymplathttps://sympl.readthedocs.io.Free software: BSD licenseDocumentation:https://climt.readthedocs.io.Installationclimt can be installed directly from the python package index using pip.pip install climtshould 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 thedocumentation.Featuresclimt is fully units-aware!Uses thexarrayDataArrayabstraction to build self describing model arrays.Provides different levels of abstraction towards building a climate model.Likesympl, 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 climtIf you use climt in your research, please cite the following paper documentingsympland climthttps://www.geosci-model-dev.net/11/3781/2018/CreditsThis package was created withCookiecutterand theaudreyr/cookiecutter-pypackageproject template.Historyv.0.17.0Removed dycore to move it to independent packagev.0.16.15Move to Github Actions tentatively finished!v.0.16.11New component BucketHydrology that implements Manabe first generation land modelBucketHydrology calculates the sensible and latent heat flux within the componentConservation test for the component also addedMoving CI to Github Actionsv.0.16.8Fix timeout for all MAC buildsv.0.16.6Prevent MAC OS builds from timing outv.0.16.5Fix formatting errors which prevent pypi deploymentv.0.16.4Fix MCICA for the shortwave component of RRTMGRevise random number generation for MCICAImprovement of the user interface to control MCICAv.0.16.3update numpy requirement to avoid binary incompatibility errorFix error in documentationv.0.16.2Fix wheel build on Macv.0.16.1Fixed issue with Mac buildFew changes in the dry convection component. Significantly improves the performance.Changed logo!Fixed failing docs buildv0.16.0Added some documentation for using RRTMG with McICACI Testing for Mac and py37 added.Refactored initialisation codeEnable the McICA version of RRTMG Longwave for consistency
with the Shortwave component.Fix bugs in IceSheetAdd tests to verify conservation of quantitiesFix bugs in initialisationFix energy conservation in surface flux schemeEnable 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 GrayLongwaveRadiationBreaking ChangesThe flux outputs of GrayLongwaveRadiation have been renamed to eliminateon_interface_levelsto keep consistency with other components.All arrays are now 3/2d by default based on their expected dimensions.horizontal dimensions are nowlon,lat, but inputs
used by components remain the same (latitude,longitude).v.0.14.8Many 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.0Many components which previously required horizontal dimensions now use
wildcard matches for column dimensions.Switched many print statements to logging calls.Fixed bugs in some componentsBreaking Changesget_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.7Fix issue with pip v10 and pandas 0.22 conflictsv.0.14.3Fix release issue because of pip API changev.0.14.1Fix appveyor fail due to pip changesv.0.14.0Fixed broken version numbersv.0.12.0new release to fix version numbers and create zenodo IDv.0.9.4Added attributes to inputs/outputs/ etc., to work with ScalingWrapper
Added tests as well.Added tests for constants functionsFixed requirements to ensure this version of climt installs
the correct versions of sympl and numpy.v.0.9.3Released because of a labelling issue. See 0.9.2 for details.v.0.9.2Updated documentationCleaned up examplesAdded (*)_properties as a property to all componentsThe gas constant for dry air in the Emanuel scheme is now renamed _RdairRRTMG LW and SW are now OpenMP parallelAdded Instellation component to calculate zenith angleAdded tests to increase coverageNew constants handling functionality addedTravis builds now use stagesAppveyor CI up and runningPre-installation of cython and numpy no longer necessary for source buildsAdded snow-ice componentOzone profiles do not need to be specified externallyNow also tested on Python 3.6Breaking ChangesAPI for constants setting changed toset_constant_from_dictandadd_constants_from_dictGfsDynamicalCorerenamed toGFSDynamicalCorefor consistencyget_prognostic_versionmethod ofClimtImplicitrenamed toprognostic_version, and
no longer accepts timestep as an argument. The current timestep should be set inClimtImplicit.current_time_stepduring each iteration.RRTMGShortwavenow uses sympl’s solar constant by default instead of from fortran.v.0.9.1Held-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 wellArrays can now have arbitrary dtype (to use qualitative, string, quantities)Added Emanuel Convection, surface energy balance model and ice sheet energy balance2D coordinates are now supported for horizontal coordinatesReplaced create_output_arrays() with a more general
get_state_dict_for() and get_numpy_arrays_from_state()
combination.State arrays now have coordinatesUpdated documentationRTD finally working, phew!Added RRTMG Longwave, Simple PhysicsAdded helper functions to reduce boilerplate code in componentsBreaking ChangesLatestmethod to obtain piecewise constant prognostic has been renamed topiecewise_constant_versionOzone profile has been modifiedHeating rate for RRTMG top-of-atmosphere is no longer manually set to zeroComponents no longer accept constants during initialisation. All constant handling
is done internally.v.0.9SlabSurface no longer uses depth_slab_surface as inputchanged order of outputs of GfsDynamicalCore and SimplePhysics to conform
to TimeStepper order of diagnostics, new_stateget_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.