Tidal Forcing

From WikiROMS
Jump to navigationJump to search
Description of Tidal Forcing in ROMS


Astronomical Tide Generating Forces

The influence of the tide generating forces (TGF) can be introduced in ROMS by consideration of the gradient of the difference between ROMS sea surface, , and the sea surface denoted as the equilibrium tide, , which is the shape the sea surface would assume if it were motionless and in equilibrium with the tide generating forces on a fluid planet. It is activated with the option TIDE_GENERATING_FORCES. It is restricted to spherical grids since we need (lon, lat) of every cell to compute the harmonic constituents parameters for the location of the Moon and Sun. We recommend activating this option in conjunction with boundary tidal forcing (SSH_TIDES and UV_TIDES). Check the following trac ticket for more information about this capability.

If ROMS is parallel to the equilibrium tide, i.e. , then the gradient of this is zero and there is no lateral force due to the tides. Therefore, we can implement the TGF by subtracting from ROMS prior to computing the baroclinic (3D applications) or barotropic (2D applications) pressure gradient. This will effectively impart the tide generating force as a lateral body force throughout the water column.

If, say, ROMS sea surface was flat but was increasing in the positive direction, then on the RHS of the x-momentum equation is positive indicating flow will be driven in the positive direction until the sea level becomes parallel to the equilibrium tide. The equilibrium tide at latitude , longitude , and time for the principal diurnal and semi-diurnal tidal constituents is given by (Arbic et al. 2018)

The diurnal and semi-diurnal constituent-dependent parameters in the respective summations above are given in Table 1. Equations for the nodal factors and that account for the slow modulation of the tidal constituents due (principally) to the 18.6-year lunar nodal cycle, and the phase of each constituent at the Greenwich meridian (), are computed from the equations given in Table 2 using astronomical arguments calculated as indicated in Table 3 for the reference time, , when Tides Start.

For simplicity, I have neglected the long period tidal constituents, and . The former is smaller than all the constituents included in Table 1, and the amplitude of exceeds only those of and .

Table 1: Principal diurnal and semi-diurnal tidal constituent frequencies ω, astronomical forcing amplitudes A, and Love number factors [1+k_2-h_2] for computing the equilibrium tide. (Data adapted from Arbic et al., 2004, Table 1).

Constituent Relevant in
equation
Frequency
Amplitude
A (cm)
Love factors
Period
(solar days)
diurnal 0.6495854 1.9273 0.695 1.1195
diurnal 0.6759774 10.0661 0.695 1.0758
diurnal 0.7292117 14.1565 0.736 0.9973
semi-diurnal 1.378797 4.6397 0.693 0.5274
semi-diurnal 1.405189 24.2334 0.693 0.5175
semi-diurnal 1.454441 11.2743 0.693 0.5000
semi-diurnal 1.458423 3.0684 0.693 0.4986

Table 2: Harmonic constituents of the equilibrium tide on the Greenwich meridian. The fundamental astronomical arguments , , and must be computed according to the reference date when tides start using the equations in Table 3. (Data adapted from Doodson and Warburg, 1941, Table 1.)

Constituent
non-dimensional

degrees

degrees
as for as for
as for as for
1

Table 3: Fundamental astronomical arguments to be used in Table 2 for the calculation of nodal factors and phase at Greenwich. Set the value of according to the chosen Tide Start time . (Data adapted from Egbert and Ray, 2017, Table 1.)

Argument Description equation period
terrestrial time in Julian centuries since 12:00 on January 1, 2000 (days since 2000-01-01:12:00:00) / 36525  
mean longitude of moon 218.316 + 481267.8812 tropical month
mean longitude of sun 280.466 + 36000.7698 tropical year
mean longitude of lunar perigee 83.353 + 4069.0137 8.85
mean longitude of lunar node –234.955 – 1934.1363 18.6

ROMS allows users to specify a different reference time for the model time and the Tide Start time used for the open boundary tide harmonics. We need to accommodate this here while enforcing that the tide generating forces and boundary harmonics have the same reference time, i.e. .

If we denote the date when ROMS time starts as (variable time_ref in roms.in) then ROMS’ internal clock is working with is seconds since . In roms.in the variable tide_start, in days, is .

In the equation for the time coordinate was implicitly time since . The corresponding equation for the equilibrium tide in terms of ROMS time, , which is time since is:

The calendar date to use with Table 3 must correspond to , which is ROMS time_ref + tide_start (in days).

As an example, below are two figures that show the sea surface elevation for the center of the Gulf of Maine (left) and at the entrance of the Bay of Fundi (right). ROMS is configured with boundary tidal forcing, tide generating force, and inverted barometer effect in the pressure gradient.

Center of the Gulf of Maine sea surface elevation
Entrance of the Bay of Fundi sea surface elevation

Tidal Forcing Files in ROMS

Once the appropriate CPP options have been set (e.g. SSH_TIDES, UV_TIDES, RAMP_TIDES), a netcdf file of tidal constituents must be generated.

  1. Download the desired tidal constituent database and associated software. There are many tidal constituent databases available for download and the choice of databases depends on the desired constituents and location of the ROMS grid. Two possibilities which have broad geographic range and generally the dominant constituents are the OSU Tidal Data Prediction Software(OTPS) and the ADCIRC tidal database. Remember to download the associated software with each data base as there are typically routines which facilitate the extraction and interpolation of the database to the ROMS grid.
  2. Interpolate the tidal constituent database to the desired ROMS grid. See the above comment. While it is possible to write code (e.g. MATLAB, FORTRAN) to perform this task, it is typically easier to use the provided packages.
  3. Verify all open boundary grid cells contain valid data. During the interpolation process, depending on the land mask for the ROMS grid and the tidal database grid, it is possible to have grid cells near land points which the ROMS grid may define as water, but the tidal grid defines as land. Should this occur, a 180 degree phase shift along the open boundary near land points is possible. As ROMS is tidally forced on the open boundary, this could be problematic.
  4. The phase of the u/v/zeta components of the tidal constituents should be shifted to the appropriate reference time(t=to). It is typical for tidal constituent databases to be stored with the phase shifted by the equilibrium tidal argument. Consequently the reference time for the tide is not the desired time, as set in roms.in using the variable TIDE_START. In addition, nodal corrections need to be made due to long period tides. The equilibrium argument and nodal corrections can be calculated using the tidal database software or Rich Pawlowicz's T_TIDE MATLAB package. Also, see below for more thoughts on the 18.6 year business.
  5. Convert the amplitude/phase information to tidal ellipse parameters, if necessary. ROMS requires tidal information to be stored as ellipse parameters for use. One tidal ellipse package is ap2ep.m from Zhigang Xu. MATLAB tidal ellipse code is available.
  6. Export tidal ellipse parameters to a ROMS netcdf forcing file.

Two examples of this process are described below.

Warning Newer Matlab versions are incompatible with older versions of t_tide and will cause errors. In particular, the "finite" function has been replaced with "isfinite" Rich Pawlowicz has provided an updated version of t_tide on his website http://www.eos.ubc.ca/~rich/#T_Tide. I have also provided a link here

OSU Tidal Prediction Software Example (Matlab)

Note The fortran based OTPS tidal constituent extraction routines have been replaced by a MATLAB based version.

The processing in this example was carried out in MATLAB using routines found in http://myroms.org/hunter/roms_tides/ and http://myroms.org/hunter/roms_tides/update/otps. It requires T_TIDE and the Earth and Space Research TMD TOOLBOX.

  1. Download the ESR Tidal Model Driver(OTPS.tar.Z) to the the working directory e.g. OTPS/. Extract the TMD routines.
    • cd OTPS/
    • uncompress tmd_toolbox.zip
    • add tmd_toolbox directory to the matlab path.
  2. Download the appropriate regional or global model database with respect to the ROMS domain. e.g. For a model of the East coast of the United states, download EC.tar.Z. Uncompressing and extracting this file should great a subdirectory called DATA/
    • uncompress EC.tar.Z
    • tar xvf EC.tar
  3. Now the tidal constituents are ready to be extracted and saved to a ROMS forcing file. An example (using MATLAB) of how to do this is given in otps2frc_wrapper.m. In the following example, t is the reference date for the tide (i.e. TIDE_START), tpred is the nodal corrections reference time (usually the midpoint of range of the prediction time), and gfile is the ROMS grid file. Also included are and output file and the path the OTIS database.
    • >> t=datenum(2005,1,1);
    • >> tpred=datenum(2006,1,1);
    • >> gfile='/home/hunter/roms/in/roms_latte_grid_3c.nc';
    • >> domain='LATTE';
    • >> otps2frc_5(gfile,t,tpred,'test_EC.nc','DATA/Model_EC',domain)


Note Depending on the versions of the Matlab scripts used, the user may have problems creating a ROMS forcing file. Depending on the version of the file t_vuf.m (called by otps2frc_v5.m) in the Matlab path, the two lines of otps2frc_v5.m that call t_vuf.m may need to be modified. If the version t_vuf.m in the Matlab path requires 4 inputs, instead of the three given by otps2frc_v5.m, then either 'full' or 'nodal' needs to be added as the first input variable.

ADCIRC Tidal Database Example (Matlab)

The processing in this example was carried out in MATLAB using routines found in http://myroms.org/hunter/roms_tides/. It requires T_TIDE.

  1. Download the desired ADCIRC tidal database. e.g. Download ec2001_v2e.zip. Unzip this file into the working directory.
    • unzip ec2001_v2e.zip
  2. Compile tides_ec2001.f into the executable adcirc_extract
    • f77 -g -o adcirc_extract tides_ec2001.f
  3. Now the tidal constituents are ready to be extracted and saved to a ROMS forcing file. An example (using MATLAB) of how to do this is given in adcirc2frc_wrapper.m. In the following example, t is the reference date for the tide (i.e. TIDE_START), tp is a prediction time(usually the same as the reference data) used to calculate nodal corrections and gfile is the ROMS grid file. Also included are an output filename and a processing flag. The processing flag determines whether adcirc_extract is executed. It needs to be run only once. As it can take a very long time, once the output file tides.out is generated, change this from 1 to 0.
    • >> t=datenum(2005,1,1);
    • >> tp=datenum(2006,1,1);
    • >> gfile='/home/hunter/roms/in/roms_latte_grid_3c.nc';
    • >> domain='LATTE';
    • >> adcirc2frc_v5(gfile,t,tp,'test_adcirc.nc',1,domain)



Note * - The file tides_ec2001.f is written to compile using SUN f77. It will not work with g77 as downloaded from the ADCIRC website. There is a logical unit of 105 which is out of range for g77. It must be edited to change these to a number <99.

Note This version of adcirc2frc_v5.m includes all tidal constituents from the ADCIRC database. Any undesired constituents must be removed after the tidal file is generated.

Note The files adcirc2frc_v6.m, adcirc2frc_wrapper_v6.m, and read_adcirc_tdb.m have been added to http://myroms.org/hunter/roms_tides/update/adcirc/. This set of files allows the use to extract constituents from the ADCIRC database without the use of fortran.

Comments on the 18.6 year tides

The "18 year" tide is not a separate tidal constituent, but is rather a modulation of the amplitude (and a phase shift) of the other tides. The amplitude of the modulation for three constituents is shown here:

18yrs small.jpg

  • Because we run multi-decadal simulations, we have chosen not to include the "nodal corrections" in the external forcing file but to modify ROMS to compute them for the time at hand. The alternative would be to swap out the tidal forcing file every few years.
  • These long-period modulations cause us to be dubious of the ROMS detiding algorithm since it is learning on the fly but not forgetting what it was learning nine years before.
  • I have been asked by several people how I create the tides files. My scripts (without tidal potentials) are File:Tides ncl.tar.gz.