Run ROMS
The code here is also available as a notebook 03_run_roms.ipynb.
Run ROMS with 4 CPUs splitting the domain in 2 by 2 tiles
using Dates
using ROMSNow we are ready to run the model:
modeldir = expanduser("~/ROMS-implementation-test")
simulationdir = joinpath(modeldir,"Simulation1");Run ROMS from julia
NtileI and NtileJ must match the values in the roms.in file.
NtileI = 1
NtileJ = 1
np = NtileI*NtileJ
use_openmp = true
logfile = "roms.out"
cd(simulationdir) do
withenv("OPAL_PREFIX" => nothing) do
ROMS.run_model(modeldir,"roms.in"; use_openmp, np, stdout = logfile)
end
end;If you run into a problem, please first read the error message carefully to get some indicaton what is wrong.
The ROMS outputs are the files roms_his.nc and roms_avg.nc.
Note that the usual method to run ROMS is from the command line.
Run ROMS in serial
For example the serial binary romsS (without MPI and OpenMP) can be run as:
./romsS < roms.in | tee roms.outRun ROMS in parallel
Make sure to activate MPI or OpenMP and recompile ROMS if necessary With MPI:
mpirun -np 4 ./romsM roms.in | tee roms.outwhere 4 is the number of cores to use. To use 4 CPUs, you need to set NtileI to 2 and NtileJ to 2.
With OpenMP:
OMP_NUM_THREADS=4 ./romsO < roms.out | tee roms.outWith the command tee the normal screen output will be place in the file roms.out but still be printed on the screen.
Interpreting ROMS output
- Check minimum and maximum value of the different parameters
NLM: GET_STATE - Read state initial conditions, t = 57235 00:00:00
(Grid 02, File: roms_nest_his.nc, Rec=0182, Index=1)
- free-surface
(Min = -4.63564634E-01 Max = -3.63838434E-01)- The barotropic, baroclinic and Coriolis Courant number should be smaller than 1
Minimum barotropic Courant Number = 2.09670689E-02
Maximum barotropic Courant Number = 5.56799674E-01
Maximum Coriolis Courant Number = 1.71574766E-03- Information
- energy (kinetic, potential, total) and volume
- maximum Courant number
STEP Day HH:MM:SS KINETIC_ENRG POTEN_ENRG TOTAL_ENRG NET_VOLUME Grid
C => (i,j,k) Cu Cv Cw Max Speed
346200 57235 00:00:00 2.691184E-03 1.043099E+04 1.043099E+04 6.221264E+13 01
(079,055,30) 9.266512E-02 4.949213E-02 0.000000E+00 1.081862E+00Plot some variables like sea surface height and sea surface temperature at the beginning and the end of the simulation. In Julia, force figure 1 and to 2 to have the same color-bar.
figure(); p1 = pcolor(randn(3,3)); colorbar()
figure(); p2 = pcolor(randn(3,3)); colorbar()
p2.set_clim(p1.get_clim())- If everything runs fine,
- is the model still stable with a longer time steps (
DT) ? - increase the number of time steps (
NTIMES) - possibly adapt the frequency at which you save the model results (
NHIS,NAVG,NRST)
- is the model still stable with a longer time steps (