We have developed a variety of tools used for analysis and creation of storm surge simulations.
We are often interested in the behaviour of the surge component of the water level, that is, the anomaly after the tides have been removed. Further, we could like to compare the modelled surge to the observed surge. To determine the modelled surge, we perform two simulations: one with all of our forcing conditions, including the tides, atmospheric conditions, rivers, and sea surface height at the open boundaries and another with only the tidal forcing and rivers. We define the modelled surge as the difference between the sea surface height of these two simulations.
To calculate the observed surge, we need water level observations and tidal predictions.
Tidal predictions are generated using a MATLAB package called t_tide. The general procedure is as follows:
Perform a harmonic analysis on a year-long time series using
Use the tidal constituents produced by the harmonic analysis to generate a tidal prediction. Typically, 67 constituents are analyzed with
t_tidefor a year-long time series.
However, there are some subtleties that need to be considered before we generate the tidal predictions for use in residual calculations.
In order to use these tools, you need to download t_tide and add the t_tide directory to you MATLAB path.
In a year with many storm surges, the harmonic analysis may result in over predicted constituents due to the large surges. As such, before the harmonic analysis is performed, we filter the time series by applying a Doodson tide filter (Parker, 2007) and we remove periods with large non-tidal energy. The harmonic analysis is then applied to the filtered time series.
Long Period Constituents
In a harmonic analysis, long period constituents (Sa, Ssa, etc) in this region are often contaminated by non-tidal energy due to seasonal meteorological events. We would like to represent this seasonal variability in our residual forcing. As such, we do not include long period constituents in our tidal predictions.
Constituents with low signal to noise ratio
Constituents with a low signal to noise ratio (less than 2) are not used in tidal predictions.
Because our model is forced with only 8 tidal constituents, our water level predictions are missing some tidal energy. We have attempted to correct for the missing energy in the following way.
Generate a tidal prediction with constituents from the harmonic analysis (excluding long period constituents, constituents with low signal to noise ratio, and shallow water constituents).
Generate a tidal prediction with only the eight constituents used to force the model.
Calculate the difference between these two predictions and add to the model sea surface height as a correction.
The shallow water constituents are excluded from the tidal prediction because they will be generated by the model and we should avoid counting them twice.
Several MATLAB scripts have been designed to calculate the tidal predictions as described above.
These scripts are found in the
analysis-storm-surges/tide_analysis_scripts/ repository and are described below.
This script does most of the work. The end result is a series of tidal predictions.
generate_tidal_predictions(filename, location, starts, ends, type, exclude_long, cut_off, ssh_units, time_zone)
Uses water level observations or harmonic constituents stored in
filenameto calculate tidal predictions over a time period defined by date strings
ends. Water level observations can either be from the DFO website or the NOAA website, as specified by the
typeargument. Or a file with harmonic constituents from CHS can be used, in which case type is set to ‘CHS’. Also, a file with NOAA constituents can be used, in which case type is ‘NOAA_const’.
If a harmonic analysis is necessary, the calculated harmonics are saved in
location_harmonics_date1_date2_filter.csvwhere location is one of the arguments of
date2are string representations of the start and end date of the observation time series.
The tidal predictions are stored in a file called
endsare arguments of
generate_tidal_predictions.m. This file contains three types of tidal predictions:
pred_all- predictions with all constituents except shallow water and ones with low signal to noise
pred_8- predictions with only eight constituents
pred_noshallow- like pred_all but with no shallow water constituents.
exclude_longis a flag that specifies whether or not long period constituents should be excluded from the tidal predictions.
exclude_long= 1 means exclude long period constituents like Sa, Ssa, etc from the tidal prediction.
exclude_long= 0 means include long period constituents in tidal predictions. Note that if
exclude_long= 0 then a lot of the variability between
pred_alluses long period constituents but
cut_offis the amplitude at which non-tidal energy is removed from the harmonic analysis. Time periods for which the filtered time series is greater than
cut_offare removed from the water level time series and then the harmonic analysis is performed. A reasonable value is 0.3. If filtering is not desired then set
cut_offvery high (>1).
ssh_unitsis the units of the water level information in the harmonics or time series file (eg. ‘m’ or ‘feet’)
time_zoneis the time zone of the time information stored in the harmonics or time series files. For example, if
time_zoneis ‘PST’ then the phase in the harmonics files is relative to PST time or the time in the time series file is relative to PST.
If a harmonic analysis is necessary, then the water level time series should be less than one year but long enough to separate the important constituents. Typically, one year is a reasonable length.
These files perform the harmonics analysis for DFO and NOAA data respectively.
These files do the filtering work.
Read the CHS tidal harmonics from a file.
Read the NOAA tidal harmonics from a file.
The NOAA observations csv files should have the station’s latitude in the second row, second column of the file.
/ocean/nsoontie/MEOPAR/tides/NOAA_tidal_constituents/NeahBay_harmonics.csv for an example of how the NOAA harmonics files should be formatted.
Some of the constituents published on the NOAA website are not recognized by t_tide. We have attempted to match these constituents to once valid in ttide but this approach can lead to errors in the nodal corrections. It is best to use a time-series when producing tidal predictions for a NOAA station.
Storm surge forcing files
Several notebooks have been developed for generating the anomaly forcing files used in simulation hindcasts.
Some analysis functions are stored in a module salishsea_tools/stormtools.
Examples include functions that calculate the observed residual, modelled residual, error statistics, and so on.
A different module was used for analysis in the AO storm surge paper. It is in a private repository
storm-surge/stormtools_revisions.py.The functions are almost identical as
stormtools.py but with a few minor changes
Pawlowicz, R., B. Beardsley, and S. Lentz (2002). Classical tidal harmonic analysis including error estimates in matlab using t tide. Computers & Geosciences 28 (8), 929-937.
Parker, B. B. (2007). Tidal Analysis and Prediction. NOAA Special Publication NOS CO-OPS 3.