For first time users, I highly recommend to:
(1) Learn everything that you can about NetCDF files. The NetCDF (Network Common Data Form) library is used extensively by ROMS/TOMS to manage input and output data streams. The NetCDF library defines a machine-independent format for representing scientific data. Together, the interface, library, and format support the creation, access, and sharing of scientific data. The NetCDF software was developed at the Unidata Program Center in Boulder, Colorado. The freely available source can be obtained from Unidata:
http://www.unidata.ucar.edu/packages/netcdf/
The above link provides a comprehensive information about the NetCDF library. In order to compile ROMS/TOMS you need to install this library correctly on your computer.
(2) If possible, you need to get access to a computer with Matlab installed. Matlab is a licensed software by MathWorks:
http://www.mathworks.com/
You have different choices for the kind of license to buy from MathWorks according to your needs and budget. Usually, a single-user Matlab license is affordable, and you pay a one-time only fee for its usage. This sounds like a commercial endorsement of Matlab. However, we do not have absolutely any commercial deals with Matlab. For the last few years, several tools using Matlab have been written by us and others to process ROMS/TOMS input and output files. I have been using Matlab for more than ten years and I have hundreds of ROMS/TOMS related scripts. Many users have also written a large number of these scripts. We are planing to have repository for those scripts in the future. The reason for this is that there is an interface between Matlab and NetCDF. This interface is known as MeXCDF. For more information about MeXCDF and the NetCDF toolbox for Matlab, please visit:
http://woodshole.er.usgs.gov/operations ... excdf.html
http://woodshole.er.usgs.gov/staffpages ... c4ml5.html
How to use ROMS/TOMS:
(1) For first time users, it is recommended to run the provided ROMS/TOMS test cases. Any of these test cases are activated by turning on/off the appropriate CPP flag in cppdefs.h. Only one application option can be activated at the time. Each test case has an associated input script. Currently, the following CPP flags and input scripts are available:
Code: Select all
BENCHMARK1 ocean_bench.in
BIO_TOY ocean_biotoy.in
BL_TEST ocean_blayers.in
DAMEE_4 ocean_damee.in
DOUBLE_GYRE ocean_dgyre.in
ESTURARY_TEST ocean_estuary.in
FLT_TEST ocean_floats2d.in
FLT_TEST ocean_floats3d.in
GRAV_ADJ ocean_grav.in
KELVIN ocean_kelvin.in
LMD_TEST ocean_kpp.in
LAB_SIGNELL ocean_lake.in
RIVERPLUME ocean_rplume.in
SOLITON ocean_soliton.in
UPWELLING ocean_upw.in
WEDDELL ocean_weddell.in
WINDBASIN ocean_windbasin.in
Notice than in addition to the ROMS/TOMS input script ocean_*.in, there are other default input scripts associated with the following CPP options:
Code: Select all
BIO_FASHAM bioFasham.in
AIR_OCEAN coupling.in
ECOSIM ecosim.in
FLOATS floats.in
SEDIMENT sediment.in
STATIONS stations.in
Code: Select all
FLT_TEST floats_2dtest.in
LAKE_SIGNELL floats_lake.in sediment_lake.in
ESTURARY_TEST sediment_estuary.in
Code: Select all
Makefile.absoft
Makefile.alpha Makefile.MPI_alpha Makefile.OMP_alpha
Makefile.cray Makefile.MPI_cray
Makefile.crayx1 Makefile.MPI_crayx1
Makefile.cygwin
Makefile.df
Makefile.ibm Makefile.MPI_ibm Makefile.OMP_ibm
Makefile.ifc Makefile.OMP_ifc
Makefile.ifort Makefile.OMP_ifort
Makefile.pgi Makefile.MPI_pgi
Makefile.sgi Makefile.MPI_sgi Makefile.OMP_sgi
Makefile.sun Makefile.MPI_sun Makefile.OMP_sun
BIN = ../Test/Upwelling/oceanS
That is, the executable oceanS is saved in the ../Test/Upwelling directory. To compile your application just type, for example:
make -f Makefile.ifort
(3) If compilation is successful, then ROMS/TOMS can be run by just typing:
oceanS < ocean_upw.in > & log &
This redirect the standard output of ROMS/TOMS to log file. In distributed-memory, the command is different:
mprun -np 4 oceanM ocean_upw.in > & log &
Here, the input script is read using the Unix intrinsic routine getarg or similar command-line argument routine used by your operating system. See file mp_routines.F and search for the my_getarg routine. Other system routines can be added very easily, if necessary. Please let me know if this is the case.
In serial and parallel applications, the user need to modify the input parameters NtileI and NtileJ in ocean_*.in. Notice that you can have partitions in serial applications. It turns out that, in some computers, the code run faster if you partition the domain grid, and then run on a single processor. This is because of better use of the cache in your computer. In distributed-memory applications, the number of nodes (CPUs) used must be equal to the product of NtileI and NtileJ. In shared-memory applications, the product of NtileI and NtileJ must be a multiple of the total number of parallel threads (CPUs) assigned.
Good luck,