AOS 640: Project instructions


This course requires you to complete two of three possible projects. These projects will be introduced at intervals through the semester with staggered due dates.

The projects

  1. Streamer project: Install and run the Streamer model to compute band-averaged fluxes and heating profiles for various model atmospheres.   Conduct experiments with changing carbon dioxide content, water vapor, and temperature profiles.
  2. Weighting function project: Write a program to compute the microwave brightness temperature observed by satellite viewing a cloud-free atmospheric with realistic profiles of temperature and humidity.  Examine the spectrum of brightness temperature over a wide range of microwave frequencies and evaluate the sensitive to changing atmospheric profiles.
  3. Monte Carlo project: Write a Monte Carlo code to compute monochromatic radiative transfer in a plane-parallel scattering cloud layer.  You will then run experiments to evaluate the effects of changing cloud optical properties on cloud reflectance, transmittance, and absorptance.
My objectives for the class projects go beyond just giving you hands-on experience with radiative transfer calculations.  I want you to also
  • gain significant hands-on experience with scientific programming,
  • gain significant experience  executing programs and other commands in the Linux/Unix environment,
  • learn how to make publication-quality plots,
  • learn how to prepare a publication-quality scientific write-up using the free LaTeX document preparation system (see below).


Please prepare your project write-ups as if they were scientific journal articles, as follows:
  • Prepared using LaTeX, with output to PDF.
  • Format must be double-column preprint style as provided by the AMS journal template file.
  • Include an introduction, appropriate major and minor sections, and conclusions.
  • Provide a reference list if appropriate (optional for these projects).
  • All tables and figures must have captions and be explicitly referenced in the body of the article.
Your write-up should be self-contained in the sense that any meteorologically literate reader will understand what you’re doing without knowing anything about the class assignment. Read more about what LaTeX is, why I want you to use it, and how to get it, here.

Computer Operating system

I strongly encourage you to do your programming and analysis either
  • on a Linux machine (e.g., the lab computers in 1411), or
  • at the Unix command line on a Macintosh (which is almost identical to Linux).
Not only is it extremely useful to become at least superficially familiar with the immense power and flexibility of the Linux/Unix command line,  you can also take advantage of an impressive variety of free high-quality software (e.g., compilers) that is not readily available (or more difficult and/or expensive to install and use) in the Windows environment. Here is an excellent guide to Getting Started with Unix.   Note that almost everything in this document also applies to Linux.  If you try something and it doesn’t work, you might have discovered one of the rare differences between Linux and Unix — ask me, and I’ll probably be able to tell you what you need to do differently.

Text editor

You will need a text editor (not a word processor like Word!) for creating and modifying programs, plot files, LaTeX files, etc.   There are quite a few free choices, but only a few can you count on finding on just about any Linux/Unix/Mac computer, and even fewer have the power to streamline the editing and formatting of programs.   I will therefore limit my attention here to only four:
  • vim Available on every Unix/Linux computer, including Macs.   An outgrowth of the extremely primitive vi editor (vintage 1976!).   Very widely used by system administrators mainly because (a) you can count on it being there and (b) it starts up quickly and allows quick fixes to system files and scripts.  It has come a long way from its vi origins.  That said, I don’t know it myself well enough to be of much help beyond the  very basics.
  • gedit –  I don’t personally know much about this text editor either, but I have seen many students use it, probably because it has a reputation for being easy to use.
  • pico Apparently available on most Unix/Linux computers, including Macs.  I haven’t used it much, but it is essentially a simple text editor with emacs-like keystrokes.   If you have to choose between pico and vim, I would go with pico.  A significant advantage is that if and when you graduate to emacs, there will be much less to re-learn.
  • emacs Available (or at least easily installable) on any Unix/Linux computer, including Macs.   This is a large and powerful text editing environment.  So powerful, in fact, that some people are afraid of it.   But if you stick to basics, it’s really not much worse than pico — you just have to get comfortable with some odd combinations of keystrokes. The great thing about emacs is that it “knows” Fortran syntax, LaTeX syntax, IDL syntax, Python syntax, and any of a variety of other common languages  (this is increasingly true of other editors as well, but emacs is arguably the most advanced in this area).   It therefore provides powerful support for spotting and fixing syntax errors, among other things. Emacs is my own editor of choice for anything from programming to writing books.   Almost every command I ever use can be found on this two-page cheat sheet. Another advantage of learning Emacs keystrokes is that many of them also work for Unix/Linux command line editing.   Highly recommended, but be prepared for a slightly steeper initial learning curve.
One more thing about most of the above text editors: once you know the basic keyboard commands, you don’t need to ever take your hands off the keyboard to reach for the mouse.   This is a good thing, since repositioning your hand, searching through pull-down menus, etc., actually costs significant time.  For example, you’ll be far more likely to save your file frequently if all you have to do is type two characters (control-x, control-s) periodically rather than navigating with your mouse through menus to File->Save.

Programming language

Students coming into this course may have programming experience ranging from none to extensive.  Some of you will have used MatLab, IDL, C++, Fortran, and/or Java. While these are all excellent languages for their purposes,  I’m going to ask you to use python for much or all of your programming. Why? Because
  • it’s powerful,
  • it’s modern,
  • it’s unusually easy to learn,
  • it’s increasingly the language of choice in the atmospheric sciences (and other disciplines as well),
  • it’s free,
  • there is a great deal of available free add-on functionality, including plotting and mapping and other support in the area of scientific programming,
  • did I mention it’s free?
  • see here for more reasons.
About the only significant disadvantage of Python is that it’s not a compiled language like Fortran.  This makes it somewhat less suitable when computational speed is critical, as is usually the case for numerical weather forecast models or climate models.  Even so, it is common these days to write Python “front ends” that drive legacy programs written in other languages, such as Fortran.

Getting Python

The core language is usually already present on most Unix-like machines.  Key add-ons for graphical and scientific support can be downloaded and assembled individually  for free.  But for academic users, it is more convenient to download a free and complete integrated package from Enthought here.  You will need to register as an academic user first.  The Enthought package is already installed on the Linux machines in the 1411 lab, but you can also install it on your own laptop or office computer.

Learning Python

Visit this page for on-line examples, tutorials, and reference documents.

Some old notes on computer languages and plotting

In the past, before I began requiring Python,  you had to choose which language you would use for your projects.  Here were some of the options:


  • Widely used in engineering and the sciences
  • Not tied to one particular commercial vendor
  • Available on most or all AOS machines
  • Fortran 90/95 is a modern language with special facilities for efficient numerical computation (overcomes archaic features of F77, which is still widely used)d
  • Free version (gfortran) exists
  • No built-in support for graphics
  • Not as high-level as IDL or MatLab


  • Widely available, especially on Unix, Linux, and Macintosh computers
  • No built-in support for scientific operations like raising to a power, matrix multiplication, complex numbers
  • Syntax is fussy, somewhat unforgiving of beginner mistakes, can be tough to debug
  • No built-in support for graphics


  • Widely used in this building
  • Straightforward Fortran-like syntax only more powerful built-in functions
  • Very versatile built-in plotting capability
  • Expensive commercial package; probably not available on most AOS machines – check whether the machines you have accounts on provide it.


  • Similar advantages to IDL, from what I understand, including built-in plotting
  • built-in editor (integrated development enviroment)
  • Expensive commercial package like IDL; may not be available on your machine
  • Of all the languages listed, this is the only one I have no personal experience with, so I can’t help with syntactical or functional questions.