En:using ww3 output:seismic:synthetic tutorial



Seismic noise sources are computed as frequency spectra of wave-induced pressure at each point along the ocean surface. In practice these are discretized in space (here we will do an example with a regular grid of resolution 0.5° in longitude and latitude).

example of noise Spectra from BKS station, see Ardhuin et al. (JGR 2011)

If you wish to combine model results from different (nested) grids, you may adapt the main script to use seismic_response_spectral_from_multi.m . I have not used it in a long time, so I do not guarantee that it still works! Please let us know if you have problems with it.

For more information on the seismic noise theory and practical use of wave model output, please refer to this report [1] and recent publications (Ardhuin and Herbers JFM 2013), (Gualtieri et al. GJI 2013)

All the necessary files for a first test can be found at this ftp address: http://tinyurl.com/iowagaftp/iowaga/SISMO/TUTORIALS/ where you can find a big tar-ball SYNTHETIC_NOISE_SPECTRA.tar.gz (1.1 Gb: this is due to the seismic source files), or you can pick the different bits and pieces separately. please be careful that the computed noise sources are in sub-folders because the file names do not change with model settings (REF or NOREF).

Input files

The following files are necessary:

  • bathymetry : here we use ww3.07121700.dpt
  • Rayleigh wave coefficients (e.g. Longuet-Higgins' table)  : here we use Rayleigh_source.txt
  • space-time maps of computed sources : Here we use 2 files, one computed without shoreline reflection, the other with shoreline reflection. At present our full database of computed noise source is available from our ftp server in this folder : [2]. For each year you will find to folders, one computed without reflection (GRIDNAME_YYYY_NOREF) and the other with reflection (GRIDNAME_YYYY_REF102040). These are the *p2l.nc* files. To get a feeling for the associated sea state we have also provided wave heights (*hs.nc*) and winds and some validation of the wave heights based on altimeter data. Years 1993 to 2012 were all computed for the GLOBAL05 grid (half a degree global grid), some examples are also given for other grids, including a triangle-mesh based grid for HAWAII: note that the scripts used here do not all handle triangle meshes. Finally, these source files were generated in NetCDF3 and then compressed with bzip2 in order to reduce their size (typically a factor 4). NetCDF 3 is natively supported by all Matlab versions after 10.2 and IDL after 8.0. In the future we will use more and more NetCDF 4 which is in fact based on HDF and supports internal compression. The two example files in [ http://tinyurl.com/iowagaftp/SISMO/TUTORIALS/SYNTHETIC_NOISE_SPECTRA/2008_NOREF/ ] and [ http://tinyurl.com/iowagaftp/SISMO/TUTORIALS/SYNTHETIC_NOISE_SPECTRA/2008_REF10_20_40/ ] were indeed converted to NetCDF4 using the shell script nc3tonc4.sh . If your Matlab version does not support NetCDF4, please download the original NetCDF3 files from [3] and [4]

We also note that seismic source is also computed together with all other wave parameters with our multi-grid model system (including zooms in many coastal areas) this is at [5]. However, in that case we have only made one computation with a constant 5% reflection coefficient. Work is in progress to update this hindcast with a new one that will have many new things: the full Arctic ocean, and an amplitude-varying shoreline reflection based on Ardhuin and Roland (JGR-Oceans 2012). That should be available later in 2013. Note also that the frequency range in these output files was generally limited to 0.04 - 0.17 Hz (wave frequencies, giving 0.08 to 0.34 seismic frequencies). A few runs have also been done with the full wave spectrum (these are the *ALLF* directories, with still some issues at high frequencies (0.7 Hz waves, 1.4 Hz seismic ) because the dynamic range used to store the mode output was probably not large enough. These *ALLF* results were used for the acoustic noise paper now in press with JASA [6].

  • Recorded seismic noise spectra. In practice these were computed with Matlab using the IPGP toolbox (W. Crawford & E. Stutzmann). Here we use BKS.LHZ.2008_03h_depl.mat Other examples can be found here: http://tinyurl.com/iowagaftp/iowaga/SISMO_NC/ . The raw seismic data were downloaded from IRIS, and transformed from SEED to SAC format before processing. Please do not forget to acknowledge the original data providers (seismic networks: IRIS IDA, Geoscope, ...)

Matlab scripts

  • seismic_calculation_synthetic_settings.m : please edit this file to change the time, location, data sources ...
  • seismic_calculation_synthetic.m  : this is the main Matlab script which calls all the others, including the noise computation and reads measured noise spectra and generates some plots and statistics. The synthetic noise spectra are saved to disk in a "mat" file.
  • seismic_stations.m : catalogue of seismic stations with their latitude, longitude and some adjusted filter parameters for removing earthquakes. If your station is not in that catalogue, just add it.
  • readWW31.m : reads ASCII formatted map files (this is one option for the WAVEWATCH III output), here it is used for the bathymetry file.
  • read_WWNC.m : reads NetCDF map of one single parameter (for example the depths of the East Pacific grid).
  • read_WWNCf_noscale.m : reads frequency-dependent sources of seismic noise (in NetCDF), without applying the scale factor (it is applied later)
  • seismic_response_spectral_from_logmap_v4.m : computes the synthetic noise spectrum at one location using seismic noise source files and other informations
  • dist_sphere.m : compute distances on the sphere
  • sismo_filterseisms.m : filters earthquakes by detecting jumps in the noise level time series at selected frequencies. The thresholds for jumps are defined by seismic_stations.m .


The main matlab script seismic_calculation_synthetic.m will generate plots and output files, the plots are also saved. Each calculation is uniquely identified by the station name (e.g. BKS, SSB ...) , year, a tag that identifies the model settings (here TEST451, corresponding to Rascle and Ardhuin 2013), the type of reflection parameterization, and the value of Q.

For the choice of the Q value, you may favor the one that gives the best correlation of the modelled and observed time series because the absolute magnitude of the synthetic noise level is not expected to be accurate, due to propagation effects that are not accounted for in this very simple propagation model. Obviously Q should also vary spatially... but that would require some more complex integration along the propagation path: you will need a more complex model for that.

Other resources

Mathias Obrebski has also developped a fortran version of the seismic_response_spectral_from_logmap_v4.m code, which is typically twice as fast... you may contact him for this, or we will try to update it and upload it with the other codes.