Thursday, October 21, 2010

Some Key Papers in Climate Modeling History

A first pass at a greatest hits list; updates will not necessarily be noted as such. I had a request for key papers in the history of modeling so the emphasis leans that way. Nominations welcome.

Charney, Fjortofft & von Neumann 1950: Numerical integration of the barotropic vorticity equation, Tellus 2:237-254

Lorenz 1963: Deterministic Nonperiodic Flow J. Atmos. Sci 20:130-141

Lorenz 1967: The nature and theory of the general circulation of the atmosphere. WMO.

Manabe & Bryan 1969: Climate calculations with a combined ocean-atmosphere model.

Bryan & Cox 1972: The circulation of the world ocean: a numerical study. Part I, a homogeneous model J Phys Oceanog
Arakawa & Lamb 1977: Computational Design of the basic processes of the UCLA general circulation model. Methods in Computational Physics 17:173-265

Charney et al 1979: Ad Hoc Study Group on Carbon Dioxide and Climate.

Manabe & Stouffer 1988: Two stable equilibria of a coupled ocean-atmosphere model

Ramanathan et al 1985: Trace gas trends and their potential role in climate change. J Geophys Res 90:5547-5566

Cess et al 1990: Intercomparison and interpretation of climate feedback processes in seventeen atmospheric general circulation models

Bryan 1991: Poleward heat transport in the ocean: a reviwe of a hierarchy of models of incerasing resolution. J Phys Oceanog 18:851-867

Cubasch et al 1992: Time-dependent greenhouse warming computations with a coupled ocean-atmosphere model

Hansen et al 1992: Potential climate impact of Mount Pinatubo eruption GEOPHYSICAL RESEARCH LETTERS, VOL. 19, NO. 2, PP. 215-218, 1992

Hasselmann 1997: Multi-pattern fingerprint method for detection and attribution of climate change. Climate Dynamics 13:601-612

Hansen et al 1998: Climate Forings in the Industrial Era. PNAS

Bengtsson 1999: From short-range barotropic modeling to extended-range global weather prediction. Tellus 51 A-B:13-23

Randall 2000: General Circulation Model Development: Past, Present, and Future (International Geophysics) [Hardcover]

Hansen et al 2005: Earth's Energy Imbalance: Confirmation and Implications. Science.

Hack et al 2006: Simulation of the Global Hydrological Cycle in the CCSM Community Atmosphere Model Version 3. J Clim Volume 19, Issue 11 (June 2006)

Schmidt et al 2006: Present-Day Atmospheric Simulations Using GISS ModelE: Comparison to In Situ, Satellite, and Reanalysis Data. J. Climate, 19, 153–192.

Rahmstorf et al 2007: Recent Climate Observations Compared to Predictions. Science 316:709 DOI: 10.1126/science.1136843

Tuesday, October 12, 2010

More Adventures in Climate Analysis Installs

So here I document getting Ferret to work on a Mac; getting it to run on the super is another problem. I assumed no privileges and more or less succeeded. However, the install instructions are (as is normal with scientist code) broken.

Here are the absurd installation instructions:

This is basically just three useful links to the actual binaries under "Environment and Executable files"; ignore the rest of it.

Then proceed to

If you don;t knwo about environment variables in bash, go study up on them.

The first step 1 should be
tar xf $GET_LOCATION/fer_environment.tar

The second step 1 and step 2 [sic] work as noted. Step 3 should be
tar xf $GET_LOCATION/fer_dsets.tar
as the Mac ungzips behind your back. Your next step will have to be backwards, as the Finstall script expects the exectuables to be gzipped. So go back to your download directory and type

gzip fer_executables.tar

Also, you will have to find a place for an extra file in the middle of the next step. Be sensible, create a ~/.Ferret directory before doing the next step. Use that for your $SET_FER .

Now you can run the Finstall per instructions. But the script you ghet out will be a csh script not a bash script. The following edits worked for me:

export FER_DIR=/Users/tobis/Ferret
export FER_DSETS=/Users/tobis/FerSamp

# if ( $PATH !~ *ferret* ) then
# export PATH={$PATH}:$FER_DIR/bin
# else
# echo replacing ferret path
# export PATH=`echo $PATH | awk -F: '{for (i=1; i<=NF; i++) {if ($i \!~ /ferret\/bin/) {printf "%s:",$i}}}'`
# export PATH={$PATH}$FER_DIR/bin
# endif

# =========== Initially make no modifications below this line ===========

# Default Ferret document browser
# export FER_WEB_BROWSER="netscape -ncols 60"
export FER_EXTERNAL_FUNCTIONS="$FER_DIR/ext_func/libs"
export FER_GO=". $FER_DIR/go $FER_DIR/examples $FER_DIR/contrib"
export FER_DATA=". $FER_DSETS/data $FER_DIR/go $FER_DIR/examples $FER_DIR/contrib"
export FER_DESCR=". $FER_DSETS/descr"
export FER_GRIDS=". $FER_DSETS/grids"
export TMAP="$FER_DIR/fmt"
export PLOTFONTS="$FER_DIR/ppl/fonts"
export SPECTRA="$FER_DIR/ppl" # for old ferret versions
export FER_PALETTE=". $FER_DIR/ppl" # palette search list

So basically, change all the setenvs to exports, put in the equal sign, comment out the if/else block. If you are better with bash scripts, the if/else thing looks harmless.

I did not uncomment the reference to netscape. I don;t know where to get a netscape for os X 10.6 anyway. Sigh.

This actually works!

Meanwhile Chas has bunches of hoops for me to jump through. Will keep you posted, if you exist.

Wednesday, October 6, 2010

PyNGL Even worse than CDAT?

Undecided as yet. More to follow. But plenty of the same signs of cluelessness.

I am still hopeful that the interpolation routine I need will work. And the install is much more straightforward, there being suitable binaries for the machines I care about.

But the test routine starts with an absolute path to a python installation at NCAR!

And this is unpythonic, though perhaps this is a Fortran 77 constraint rearing its ugly head

import Ngl
import Nio
import numpy

# create an array and make a netcdf file

ff = Nio.open_file("","c")


z = numpy.zeros((10,10),"f")

# ff.variables["u"] = z doesn't work


# assignment is by value, as the name indicates

z[3,3] = 3.3

ff.variables["u"][4,4] = 4.4

# but after assignment you can pick up a reference

u = ff.variables["u"]

u[2,2] = 2.2

>>> ff.variables["u"][:]
array([[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 2.2, 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 4.4, 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]], dtype=float32)