Storm Model (download)


Our storm model is, of course, MM5. We use the massively parallel version developed by John Michalakes.

MM5 is written in Fortran while the field transfer library is still only available in C. Luckily, John also had a version of the parallel MM5 which could write selected data fields to TCP/IP sockets instead of to history files. John made this version available to us for SC98.

MM5 is not a true server in the lexicon used by the field transfer library. It sends data to sockets but doesn't wait for anything to listen. A program to listen to MM5's sockets, called sockreader, was also provided by John. sockreader was further modified by Rob Jacob to act as an interface between MM5 and the field transfer library. It reads data from MM5 sockets and then serves it to the coupler. This modified version of sockreader which included calls to the field transfer library is called mm5coupler.

The sockets version of MM5 contains two extra parameters in the namelist file:

 &SOCKETS;  HOSTNAME = "modi4.ncsa.uiuc.edu",
  SOCKNO = "4587",
 &END;

HOSTNAME is the name of the host MM5 will send data to and SOCKNO is the socket it will write to. sockreader or mm5coupler runs on HOSTNAME.

The data MM5 sends is hardcoded to be the two precip fields RAINC and RAINNC. The sockets option is turned on by compiling with the flag -DSC98. MM5 can then be made to send data to sockets every timestep by chosing TAPFRQ to be a small number.

RAINC and RAINNC are accumulated rainfall totals. They contain the total rainfall which has fallen up to that time. To provide the correct data to the runoff model, mm5coupler holds two succesive timesteps and sends the difference to the coupler.

download sockets version of parallel MM5
Note that by default this version will compile with the write-to-sockets option *on*.

download sockreader.c

download mm5coupler.

Back to the technical information page