Bug fix and changes to continuous integration for Python 2.7 compatibility
Improvements to surface flux processes, a new data management strategy, and improved documentation.
- ``climlab.surface.LatentHeatFlux`` and ``climlab.surface.SensibleHeatFlux`` are now documented, more consistent with the climlab API, and have new optional ``resistance`` parameters to reduce the fluxes (e.g. for modeling stomatal resistance)
- ``climlab.surface.LatentHeatFlux`` now produces the diagnostic ``evaporation`` in kg/m2/s. ``climlab.convection.EmanuelConvection`` produces ``precipitation`` in the same units.
- The previous ``PRECIP`` diagnostic (mm/day) in ``climlab.convection.EmanuelConvection`` is removed. This is a BREAKING CHANGE.
- Data files have been removed from the climlab source repository. All data is now accessible remotely. climlab will attempt to download and cache data files upon first use.
- ``climlab.convection.ConvectiveAdjustement`` is now accelerated with ``numba`` if it is available (optional)
This release brings deeper xarray integration, include one breaking change to ``climlab.solar.orbital.OrbitalTable``, Python 3.7 compatibility, and minor enhancements.
- Removed ``climlab.utils.attr_dict.AttrDict`` and replaced with AttrDict package (a new dependency)
- Added ``xarray`` input and output capabilities for ``climlab.solar.insolation.daily_insolation()``
- ``climlab.solar.orbital.OrbitalTable`` and ``climlab.solar.orbital.long.OrbitalTable`` now return ``xarray.Dataset`` objects containing the orbital data.
- The ``lookup_parameter()`` method was removed in favor of using built-in xarray interpolation.
- New class ``climlab.process.ExternalForcing()`` for arbitrary externally defined tendencies for state variables.
- New input option ``ozone_file=None`` for radiation components, sets ozone to zero.
- Tested on Python 3.7. Builds will be available through conda-forge.
New functionality, improved documentation, and a few breaking changes (hopefully for the better) to the API.
Major new functionality includes **convective adjustment to the moist adiabat**, and **moist EBMs with diffusion on moist static energy gradients**.
- ``climlab.convection.ConvectiveAdjustement`` now allows non-constant critical lapse rates, stored in input parameter ``adj_lapse_rate``.
- New switches to implement automatic adjustment to **dry** and **moist** adiabats (pseudoadiabat)
- ``climlab.EBM()`` and its daughter classes are significantly reorganized to better respect CLIMLAB principles:
- Essentially all the computations are done by subprocesses
- SW radiation is now handled by ``climlab.radiation.SimpleAbsorbedShortwave`` class
- Diffusion and its diagnostics now handled by ``climlab.dynamics.MeridionalHeatDiffusion`` class.
- Diffusivity can be altered at any time by the user, e.g. during timestepping
- Diffusivity input value ``K`` in class ``climlab.dynamics.MeridionalDiffusion`` is now specified in physical units of m2/s instead of (1/s). This is consistent with its parent class ``climlab.dynamics.Diffusion``.
- A new class ``climlab.dynamics.MeridionalMoistDiffusion`` for the moist EBM (diffusion down moist static energy gradient)
- Tests that require compiled code are now marked with ``pytest.mark.compiled`` for easy exclusion during local development
Under-the-hood changes include
- Internal changes to the timestepping; the ``compute()`` method of every subprocess is now called explicitly.
- ``Process.compute()`` now always returns tendency dictionaries
This release mainly adds to the [documentation](http://climlab.readthedocs.io/en/latest/), including a detailed page with instructions for [contributing to climlab](http://climlab.readthedocs.io/en/latest/contributing.html).
This is associated with the forthcoming release of a meta-description paper in [Journal of Open Source Software](http://joss.theoj.org).
This release brings a new simplified API for coupling together subcomponents of a model.
There is now a method `climlab.couple()` that accepts a list of processes and returns a parent model with the given subprocesses nested inside it.
This is considered a beta feature for now and is not really documented. It partially addresses 65
Also included is a new `SimpleAbsorbedShortwave` class for energy balance models, and numerous bug fixes.
This release has some under-the-hood improvements to the Fortran builds that will let us build properly for a wider variety of platforms (including Windows / Python 3).
With thanks to xoviat
This is an experimental release with an improved build scheme. This release is really just to test the automated build procedure on conda-forge.
This release provides
- the [Emanuel convection scheme](https://emanuel.mit.edu/problem-convective-moistening), so we can now set up and run a comprehensive single- or multi-column radiative-convective model with interactive water vapor
- support for asynchronous coupling of time-dependent components
- significant optimization of some climlab internals to speed up the runtime
No backwards-incompatible changes have been introduced.
This release brings basic integration with [xarray](http://xarray.pydata.org/en/stable/).
There are now `to_xarray()` methods for automated translation of climlab model variables into `xarray.DataArray` and `xarray.Dataset` objects. See [the new docs](http://climlab.readthedocs.io/en/latest/xarray.html).
This should simplify analysis and plotting of model output.
Deeper integration with `xarray` is planned for later releases.
With this release, climlab is now fully Python 3 compatible!
Other goodies include:
- improvements to the documentation
- a recipe for building climlab with `conda-build` is now included
- a few bug fixes and minor enhancements
This release fixes some issues with the source distribution that are causing problems building on conda-forge.
No changes to climlab functionality.
This release includes yet more refinements to the build procedure, moving toward a fully automated build on `conda-forge` (hopefully coming in climlab release 0.6!)
Unused parts of the RRTMG_SW and RRTMG_LW source code (the `column_model` versions) have been removed from the `climlab` repository.
This version includes pristine, unmodified copies of RRTMG_SW and RRTMG_LW source code downloaded from [AER](http://rtweb.aer.com/rrtm_frame.html), along with (very slightly) modified forms of a few Fortran code files for climlab.
A few under-the-hood changes to the build procedure hopefully paving the way for automatic builds with conda-forge (stay tuned!)
The source distribution was broken in v0.5.1.
This update fixes the source distribution so the tarball available from pypi actually works.
No changes to user functionality.
Many under-the-hood changes to the wrappers for Fortran radiation components (RRTMG and CAM3) to make it easier to build the package on different systems.
Building with `python setup.py build` or `python setup.py install` now uses `numpy.distutils.core.setup` which automates the building of Fortran extensions with `f2py`.
Installing climlab from pre-built binaries using `conda` is coming in the near-future.
There are no new changes to the public API.
Major update including
- Vastly improved,simplified and **consistent** interfaces for the CAM3 and RRTMG radiation modules
- Better testing
- Better documentation
- More robust build procedure
New features include:
- The RRTMG radiation scheme
- A much-improved build process for the Fortran extension (build once at install time with `python setup.py install`, no need to rebuild for different grid dimensions)
- numerous enhancements and simplifications to the API.
Climlab now has
- [comprehensive documentation](http://climlab.readthedocs.io)
- a reasonably comprehensive automated test suite
- support for latitude-longitude grids
- numerous other bug fixes and small enhancements
This update includes:
- bug fixes
- more intelligent slicing of `climlab.Field` variables
- more robust and functional CAM3 radiation module
- a suite of automated tests
The internals of the `climlab.Process` object have been significantly reorganized for a more consistent API.
Major new functionality includes a `climlab` wrapper for the CAM3 radiation code, using a compile-on-demand strategy to create the interactive Python object from Fortran code at run-time when the user invokes a new `climlab.radiation.CAM3Radiation()` process.
First public release of the new `climlab` code: a python package for _Process-Oriented Climate Modeling_.
All model code is now organized around the concept of a `Process` with arbitrarily complex trees of subprocesses.
All the functionality of v0.1 is preserved and expanded upon, but the API has changed substantially.
The first release of climlab code.
A not particularly well organized collection of code for EBMs, single-column grey radiation models, and orbital / insolation calculations.
Future releases will have a substantially different API and functionality.