For the last year I have been working on a program that I have called soda2roms. This program is a collection of python and Fortran modules that can be used to create climatology (CLIM), initial (INIT), and boundary (BRY) files necessary to run the ROMS model. Currently, the program takes SODA (5 day averages) data as input (time generated from filename) at Z-levels. These data are interpolated to the ROMS grid at Z-levels. Then the Z-levels are interpolated vertically to the sigma layers. For U, and V velocities, the interpolation is done at RHO points, and then interpolated to U and V points. All interpolated values are written to netCDF4 files, where the result is one file for each CLIM, INIT, and BRY files. UBAR and VBAR are calculated from U and V. Time is stored as julian day from 01/01/1948 (see soda2roms.py).

I have also added support for using HYCOM data as input. Currently only temperature is read from one HYCOM file which is hard coded. However, when I get time for it it is easy to include salinity, u and v from HYCOM files. It would also be interesting to add openDAP server options for using other data-sets to create climatology files.

This set of files took me a long time to make and I know that there is still a lot to be done of small details necessary to make the set of files more generic.I like to think that this program can evolve from current state into something that can make life a little easier when it comes to making forcing files for ROMS.
Several aspects need improvement such as the interpolation routines (interpolation.f90) to work
perfectly for any case of input data so that if input data has missing values/islands, the interpolation do not result in weird values.

Please send a comment on suggestions, questions, or modifications and improvements you would like to make. I would very much like to see this project go much further so that it can be useful for a variety of purposes.

The soda2roms source code is available on my subversion site here