The availability of satellite wave data through GlobWave provides an excellent tool for the assessment of wave hindcasts. This tutorial is designed for the first time user and aims to provide a throughout guide on how to manage the GlobWave data in order to do a statistical assessment on the accuracy of numerical wave models (i.e. wave hindcast). In this guide, the GlobWave data are taken as the "reality" to which the assessment of wave model results is performed. The GlobWave data used in this guide correspond to the L2 for Altimeter Merged Topex/POSEIDON data. MATLAB is used as the analysis tool.
The wave model results used in the present guide corresponds to a third generation wave model based on an unstructured mesh covering the Gulf of Mexico and Caribbean Sea, forced with the North American Regional Reanalysis (NARR) data. While the model is conformed of triangular elements and GlobWave data is composed by transects (tracks), it was decided to transform data into a regular grid for comparison and error assessment. A description of the selected grid dimensions is given in this tutorial. The user of this guide should prepare his own results in such a grid to be able to use the scripts presented in this guide. While the model was run from 1979 through 2008, only the data overlapping the GlobWave data was used (i.e. 1992-2008). Due to the size of the wave hindcast results only 1993 data are provided for the tutorial.
This work was performed by creating and executing a number of Matlab scripts to process the GlobWave data and produce numberical results and the generate a matrix for comparison between these measured and simulated wave height values. Further details of each script is available in the enclosed tutorial but in general the following scripts were used:
The globwave_extraction.m script is used to extracts and processes daily GlobWave data to produce Significant Wave Height (Hs) values and to create a matrix containing longitude, latitude, time and Hs. Plotting the first two columns of the results matrix gives the following figure showing the satellite passes over the area of interest:
Figure 1: Satellite paths as obtained from GLOBWAVE
The grid_collocation.m script defines a rectangular grid and for each GlobWave data a pair of x,y, grid coordinates are assigned. In this tutorial a 0.5o by 0.5o grid was used as it gave the best correlation between GlobWave and NBDC buoy measurements. The resulting grid is shown in the following figure:
Figure 2: Defined grid for GLOBWAVE data collocation
The hindcast_2_grid.m script was used to represent the wave model (hindcast) data in the defined grid system. In this tutorial the hindcast data was originally calculated in an unstructured mesh (triangular elements), so that the data is transformed to a rectangular grid. The result from the script is an n number of matrixes corresponding to the total number of time steps of the hindcast. A plot can be done for the resulting matrixes using the command pcolor(transpose(x)). The plot should be similar to the following figure:
Figure 3: Example of the wave model results in the defined grid
The globwave_time_collocation.m script was used to assign a timestep to each of the GlobWave data according to the time steps of the wave hindcast. In this tutorial the wave hindcast has a 3 hour time step, GlobWave data points with times falling within 1.5 hours of the hindcast time are selected for comparison with each time step. For this, the script compares the results from the previous scripts (grid_collocation.m and hindcast_2_grid.m).
The globwave_hindcast_matchup.m script reads the number of time step assigned to the GlobWave data in the previous step, then loads the time step mesh matrixes from the results folder (hindcast), finds the coordinates calculated in the grid_collocation.m script and stores the equivalent value of the simulated data. The result is a matrix similar to the result of globwave_extraction.m with an extra added column with the significant wave height value from the wave hindcast, which corresponds to the given GlobWave value.
The final script is the statistics script with produces a matrix which load all the coordinate values creating a variable for every grid cell, it then loads the results from Globwave_hindcast_matchup.m and generates matchup time series with GlobWave and the wave hindcast results. Finally it calculates the statistics for each grid element using the stats.m function. The statistics calculated are number of values, GlobWave mean, hindcast mean, Bias, Bias Index (BI), Root Mean Square error (RMS), Scatter Index (SI) and Correlation Coefficient (CC) for each variable.
The results are put into a 3D matrix (in this tutorial 79x52x8, corresponding to the number of -x grids, -y grids and the statistical parameters), where each statistics variable has a corresponding grid position. Since there are locations with little GlobWave data, it was decided to remove the results from such grid cells, based on a threshold of 3000 observations. The following figure shows in red the grid cells with less than 3000 observations:
Figure 4: Grid showing cells with less (red) and more (blue) than 3000 observations
For such grid cells and interpolation was done with the statistics of the neighbouring grids. Also, considering that the satellite data is less reliable near the coast, a buffer of one grid cell was also defined where no data is presented. The following figures show the results maps for bias, bias index, RMS, scatter index and correlation coefficient using the 1993 data:
Figure 5: Calculated bias between GlobWave & hindcast data
Figure 6: Calculated RMS between GlobWave & hindcast data
Figure 7: Calculated scatter index between GlobWave & hindcast data
Figure 8: Calculated correlation coeficient between GlobWave & hindcast data
The Calculo_Mean_STD_Max.m script was used to create plots for mean, standard deviation and maximum values for the GlobWave data and wave hindcast results. Please note that this particular area of study is subject to tropical cyclones and wave heights from such events is usually underestimated by altimetry. While long term comparisons between altimetry data and model results will cover up errors induced by extreme events created by tropical events, it is important to have this in mind, in particular when analyzing short time periods if tropical cyclones are involved. The following figures show such results, please note that there is NO data assimilation on the model results:
Figure 9: Mean significant wave height values from GlobWave (left) and wave hindcast (right) for the period 1992-2008
Figure 10: Standard deviation of significant wave height values from GlobWave (left) and wave hindcast (right) for the period 1992-2008
Figure 11: Maximum significant wave height values from GlobWave (left) and wave hindcast (right) for the period 1992-2008
Additional research: track comparisons
Another useful method for comparing altimetry data with model results is to obtain temporal data along a satellite track and compare it to the model results at the same spatial and temporal track. The tutorial also describes how to do this, using the two scripts firstly to create a variable that contains every time step in a period and secondly to plot each track alongside its corresponding hindcast time step. The following figure shows the results of such an analysis for 2007 data:
Figure 12: Satellite track comparison between GlobWave data and wave model results. Left plot shows an extreme event in the Gulf of Mexico (high pressure system "Norte") and right plot shows normal conditions
Christian Appendini, who conducted the study said: We have done a 30-year wave hindcast for the Gulf of Mexico and Caribbean Sea, which we have validated with buoys, but this data is sparse in time and space, so we wanted to use the GlobWave data for such purposes. As this is our first time using satellite data it has taken us some time to get what we need. On the other hand, if GlobWave data is unavailable we wouldn't have the opportunity to use satellite data.
The MATLAB scripts described in this tutorial can be downloaded here.