Coastal Ocean Modeling Tools
LiveOcean Architecture Notes


The tidal forcing for a realistic ROMS simulation requires spatial maps of the amplitude and phase of a number of tidal constituents. Here are the steps we go through to get these data and then process them for use in ROMS.

We get the global tide database from OSU TOPEX/Poseidon Global Inverse solution TPXO website: There you can find about about how this extraordinary product is created.


  • These files typically go into .../ tools/mossea_forcing_data/tide/TPXO/ = (*)
  • Download the latest TPXO file (e.g. I got TPXO7.2 on 5/9/2011), not the NetCDF version. This came as tpxo.tar.Z. Double-clicking on this on my mac extracts it using the Archive Utility and it creates the folder DATA with some files inside. I put this in (*), renamed as DATA7p2. NOTE: in the text file DATA7p2/Model_tpxo7.2 you have to remove the path info, i.e. delete the "DATA/" in front of the three filenames. I did this using TextEdit.
  • Also download the TMD Matlab Toolbox from (or via the link on the TPXO page). This gives you the folder tmd_toolbox (matlab code), which you should also put in (*).
  • Then, create the folder (*)/Extractions, and put the code tmd_extractor.m into it.
  • So now you should have three folders inside of TPXO/:
    • DATA7p2
    • Extractions
    • tmd_toolbox
  • Check that the paths near the top of tmd_extractor.m are right, and then run it. This should create: the output file...
  • tpxo7p2_180.mat - This contains the maps of bathymetry and tidal amplitude and phase (both SSH and current ellipses) for eight constituents: [c] = [m2, s2, k1, o1, n2, p1, k2, q1]. Specifically is has the structures:
    • Z.lon (-180:180), .lat, .z (m, positive up), .mask (0 where E_m2_amp = 0), and .topomask (0 where Z.z = 0)
    • T_[c].omega (rad s-1) the frequency of each constituent
    • E_[c].amp (m) and .phase (deg 0:360) maps for tidal surface elevation
    • C_[c].umaj (cm s-1), .umin (cm s-1), .uphase (deg 0:360), .uincl (deg 0:180) the current ellipse parameters
  • You can plot these using plot_tmd_extraction.m. You can just find out the constituent periods in hours using tmd_what_periods.m. And you can test the code using test_tmd_extraction.m. The "test" code was to make sure that when I assembled a tidal signal using these extractions, and applied the nodal corrections, exactly as I would do for the values that will be input to ROMS, that I arrived at the same signal as generated by the tmd_toolbox code tide_pred.m.
  • NOTE: these do not yet have the nodal (~19 year) corrections applied, and they also lack some phase offset values. These are applied later when you run make_tide.m in the rtools.

m2 tidefrom plot_m2_nice.m

Parker MacCready 09/18/2015