python setup.py install
or, if you are developing new code
python setup.py develop
climlab
is a flexible engine for process-oriented climate modeling.
It is based on a very general concept of a model as a collection of individual,
interacting processes. climlab
defines a base class called Process
, which
can contain an arbitrarily complex tree of sub-processes (each also some
sub-class of Process
). Every climate process (radiative, dynamical,
physical, turbulent, convective, chemical, etc.) can be simulated as a stand-alone
process model given appropriate input, or as a sub-process of a more complex model.
New classes of model can easily be defined and run interactively by putting together an
appropriate collection of sub-processes.
Most of the actual computation for simpler model components use vectorized
numpy
array functions. It should run out-of-the-box on a standard scientific
Python distribution, such as Anaconda
or Enthought Canopy
.
New in version 0.3, climlab
now includes Python wrappers for more
numerically intensive processes implemented in Fortran code (specifically the
CAM3 radiation module). These require a Fortran compiler on your system,
but otherwise have no other library dependencies. climlab
uses a compile-on-demand
strategy. The compiler is invoked automatically as necessary when a new process
in created by the user.
Currently, climlab
has out-of-the-box support and documented examples for
- 1D radiative and radiative-convective single column models, with various radiation schemes:
- Grey Gas
- Simplified band-averaged models (4 bands each in longwave and shortwave)
- One GCM-level radiation module (CAM3)
- 1D diffusive energy balance models
- Seasonal and steady-state models
- Arbitrary combinations of the above, for example:
- 2D latitude-pressure models with radiation, horizontal diffusion, and fixed relative humidity
- orbital / insolation calculations
- boundary layer sensible and latent heat fluxes
The directory climlab/courseware/
contains a collection of IPython / Jupyter
notebooks (*.ipynb) used for teaching some basics of climate science,
and documenting use of the climlab
package.
These are self-describing, and should all run out-of-the-box once the package is installed, e.g:
jupyter notebook Insolation.ipynb
The first versions of the code and notebooks were originally developed in winter / spring 2014 in support of an undergraduate course at the University at Albany. See the original course webpage at http://www.atmos.albany.edu/facstaff/brose/classes/ENV480_Spring2014/
The package and its API was completely redesigned around a truly object-oriented modeling framework in January 2015.
It was used extensively for a graduate-level climate modeling course in Spring 2015: http://www.atmos.albany.edu/facstaff/brose/classes/ATM623_Spring2015/ Many more examples are found in the online lecture notes for that course: http://nbviewer.jupyter.org/github/brian-rose/ClimateModeling_courseware/blob/master/index.ipynb
Version 0.3 was released in February 2016. It includes many internal changes and some backwards-incompatible changes (hopefully simplifications) to the public API. It also includes the CAM3 radiation module.
Users are strongly encouraged to submit bug reports and feature requests on github at https://github.com/brian-rose/climlab
This code is freely available under the MIT license. See the accompanying LICENSE file.