26.1 Moment Tensor inversion in SEISAN

Introduction

The moment tensor inversion for regional earthquakes implemented in SEISAN uses the well tested Dreger code [Dreger, 2003].The software has been integrated into SEISAN to take advantage of all the parameters already being part of the SEISAN data base like response, hypocenter and station parameters as well as SEISAN's ability to do instrument correction and filtering. All operations take place through EEV including an optional search for the best hypocentral depth. A tutorial for the original Dreger software including basic information on the principles of the software is found in INF, mt_dreger.pdf.

What data to use

The program works for regional distances (up to 2000 \bgroup\color{black}$ -$\egroup3000 km) where the model can be approximated by flat parallel layers., The inversion will generally work best for events large enough to produce low frequency signals (f \bgroup\color{black}$ <$\egroup0.1 Hz) which means surface or sometimes S-waves (at short distances or for deep events). However theoretically there is no lower magnitude limit since the source time function is a point source. A simple test to see if the data potentially can be used at low frequencies, is to apply a filter 0.01 to 0.1 Hz and see if there is a clear signal. A more quantitative test is to make spectral analysis of the S and/or surface waves to observe where the signal to noise ratio approaches 1. There are examples of inversions of small near events (m \bgroup\color{black}$ =$\egroup2 \bgroup\color{black}$ -$\egroup3) with frequencies as high as 3 Hz. However, this is not what generally can be expected to work. It is possible to use any or all of the components Z, R and T, however the T-component is often the most important. It is recommended to use at least 4 stations with at least 6 seismograms, however that is rarely enough to get a reliable solution. Real signals are often more complicated and of longer duration than the synthetic signals, so it is easier to fit signals with a few simple pulses.

Use velocity or displacement

Our tests show that it does not make much difference for good data. In some cases it might be easier to get stable velocity traces than displacement traces since the effect of the enhancement of low frequency noise from the conversion to displacement is avoided. Whatever is selected in MULPLT is what is used by all programs. There is a check that there is no discrepancy between the data and the Green's function in terms of displacement and velocity.

Technical steps to do MT

Step 1 Select channels to analyze and write out a rotated instrument corrected data file in Helmberger format which is used to make input files to the Dreger program. Note, that all filters used must be 4 pole bandpass Butterworth filters, either one way or two ways. Although MULPLT can generate other filters, they can currently not be used for MT inversion.

How to deal with many channels: By default, MULPLT shows 99 channels per screen, but this is often reduced to a smaller number by setting parameter NCHAN PER SCREEN in MULPLT.DEF to a number like 24. So if e.g. 100 channels are available, the data will be shown on several screens. The procedure is then:

At this stage, a file with possible data for analysis has been written out with the original sample rate, instrument corrected (units nm or nm/s) and filtered. The two first letters in the component names has been replaced by RR to indicate reprocessed data. The file can be plotted with MULPLT or from EEV with command pd.

Step 2 Create parameters needed for MT

The generation of the Greens function needs a series of parameters including the crustal model, which might be the most critical input. The model used will be taken from the STATIONx.HYP file so it will be possible to use a station file different from the default by either working in a local directory with a local STATION0.HYP or having a STATIONx.HYP in DAT, where x corresponds to the model ID given in the S-file. Note that a STATIONx.HYP file can contain Q and density, but often does not and then default values are used. All parameters will be written in the S-file in the SYNT format (including extra mt-variables), see section on synthetic seismograms and the example below. The stations selected for analysis will be the stations given in the mulplt.wav file as made under step 1. Default values are given for many parameters. In order to generate parameters, in EEV:

NOTE: Command mtp does not overwrite any parameters already in S-file. If a completely new set of parameters is needed, all the old ones can be deleted in the S-file or by using command mtd.

Step 3 Generate and inspect unfiltered Greens functions.

The Greens functions should now be generated with the parameters given in S-file. In EEV:

Step 4 Decide on time window length for analysis.

The Green's functions are typically generated for 512 secs (sample rate 1.0) and typically a smaller window around the signals is used like 200-400 s (default 257 s). From the Greens functions signal, it can be seen how long a minimum window is needed. The window should be longer than the signals. Before inversion, the signals are also time shifted (like the Greens functions are already) with the reduction velocity in order to make the data file smaller.

Note that the all the Green's function files and the time shifted data files do not have accurate absolute time due to time shifting.

Step 5 Make the inversion

The desired time windows from all.green$$$ are filtered by the selected filter and written out. The filtered time shifted window from mulplt.wav are now selected, filtered by a (desired sample rate)/5 Hz antialias filter and resampled to the desired sample rate and written out. The inversion is now performed. All this is done in EEV. NOTE: All data files from previous inversion are deleted before the data selection.

The inversion is now done and the results given on the screen. If a range of depths have been selected, inversion will be done for each depth and the inversion will be repeated for the depth with the best fit so this becomes the last inversion, which can be save in S-file. A table of fit parameter (VR) and depth is displayed together with corresponding fault plane solution. If results are good (see later), they can optionally be saved in the S-file. Note particularly the value of Zcor which is how many samples the data has to be shifted to fit with the Greens function.

Step 6 Check results

See Dreger documentation in INF for the explanation of the output. The variance reduction (VR) is shown for each station as well as for all stations. A low value indicates a bad fit and a negative VR might indicate inverted polarity. The most important check is to see how the synthetic seismograms fit the observed seismograms.

The fault plane solution can be plotted (if saved in step 5) with command fo. Compare to any solution from other sources (if given in S-file, see section 23 on fps in SEISAN).

Figure 26.1: Plot of original filtered instrument corrected data (blue) compared to the synthetic seismograms (red). The filter used is 0.02 to 0.05 Hz. The plot is made with a fixed scale of 30 000. Note how the T-components dominate the solution. The data is the Dreger test data included in the SEISAN training data. Note that when plotting a file in Helmberger format, the overlay function (see MULPLT section) is turned on automatically for channels starting with SY.
\begin{figure}
\centerline{\includegraphics[width=0.9\linewidth]{fig/mt-dreger-1}}
\end{figure}

Figure 26.2: Same data as shown in previous figure but only for station BKS. The data is now auto scaled. The fit on all channels is quite good. Notice the small amplitude of the radial component.
\begin{figure}
\centerline{\includegraphics[width=0.9\linewidth]{fig/mt-dreger-2}}
\end{figure}

In the above plots, the original data has been shifted corresponding to the value of Zcor. This means that, for a positive Zcor, the last Zcor data sample on the trace has no data and is replaced by zeros. Similarly if Zcor is negative the first Zcor samples are zero.

Judging the results

See the Dreger documentation for a discussion. Generally the variance reduction VR should be as high as possible. A bad fit could give an unrealistic moment (and Mw) so that is also an indicator of the quality. A good fit is not a guarantee for correct results. If e.g. the gap is large, there might not be sufficiently different data to give a reliable solution, even if the fit is good. The quality given has been assigned by Dreger as follows

 0 < VR <   20  Quality = 0
20 < VR <   40  Quality = 1
40 < VR <   60  Quality = 2
60 < VR <   80  Quality = 3
80 < VR <  100  Quality = 4

It is necessary to check the solution against the P polarities to confirm that they generally match the solution as wrong alignment can result in inverted solutions. However, it is not to be expected that all the synthetic polarities fit the observed polarities since the fault plane solution from MT (measures overall slip) might be different from fault plane solution with polarities (measures the slip of the initial rupture). Use command fo to plot the solution together with observed polarities recorded in the S-file.

Example of a run of the inversion

#    2 12 Aug 1998 14:10 25  L  36.755-121.462 8.00FF  .50     BGS    4  ? mti

***Event to invert***: C:\Seismo\\REA\TEST_\1998\08\12-1410-00L.S199808

Inversion in:             displacement
Number of stations:              4
Number of points to use:       250
Depth:                         8.0
Sample rate:                 1.000
Reduction velocity:            8.0
Filter:                      0.020   0.050

Skip for down sampling for PKD    20
Skip for down sampling for BKS    20
Skip for down sampling for CMB    20
Skip for down sampling for KCC    20

PKD   Distance(km)=   122.0 ShiftVel(s)=     0.1  Offset(sample)=    0
BKS   Distance(km)=   142.0 ShiftVel(s)=     2.5  Offset(sample)=    0
CMB   Distance(km)=   171.0 ShiftVel(s)=     6.2  Offset(sample)=    0
KCC   Distance(km)=   201.0 ShiftVel(s)=     9.9  Offset(sample)=    0

Writing PKD__.green            ShiftVel: Shift in s due to reduction velocity             
Writing BKS__.green            Offset:  Zcor parameter in S-file
Writing CMB__.green
Writing KCC__.green

Output from tdmt_invc:         See Dreger manual for following output

Depth=8
Station Information
Station(0): PKD__.data  R=122.0km  AZI=137.0  W=1.000  Zcor=14
Station(1): BKS__.data  R=142.0km  AZI=331.0  W=1.164  Zcor=13
Station(2): CMB__.data  R=171.0km  AZI=34.0  W=1.402  Zcor=13
Station(3): KCC__.data  R=201.0km  AZI=71.0  W=1.648  Zcor=12
Mo=4.12984e+023
Mw=5.0
Strike=223 ; 130
Rake=18 ; 172
Dip=83; 72
Pdc=98
Pclvd=2
Piso=0
Station(0)=78.607796  4.95437e+010
Station(1)=82.944862  3.37622e+010
Station(2)=82.605667  1.91152e+010
Station(3)=56.903259  6.36377e+009
VAR=7.48972e+006
VR=79.39  (UNWEIGHTED)
VR=79.00  (WEIGHTED)
Var/Pdc=7.668e+004
Quality=3

Update event with new mt solution(n=enter/y) ?

How and where parameters are changed for making tests

After the first parameter file in the S-file has been made, these parameters can only be changed by manually editing the S-file or deleting part or all of the parameters in the S-file and running command mtp again. Possible changes:

The most common editing in the S-file can be done with command mte in EEV. The command shows:


 Edit MT station lines
NUM STAT ACTIVE COMP ZCOR-SFIL ZCOR-AUTO DIST  AZ
  1 PKD       1  TRZ         0        40  122 137
  2 BKS       0  TRZ         0         0  142 331
  3 CMB       1  TRZ         0        39  171  34
  4 KCC       1  TRZ         0        38  201  71
 Enter station number to flip if station is used or not
 Enter station number and components to use, e.g. 4 TZ
 Enter station number and new zcor, e.g. 3 33
 Enter to terminate

With this command it is possible to very quickly weight out or in a station, select components and change zcor.

If a range of depths is used or the new mt solution is updated, the mt is written to a file named psmeca.in that can be used to plot the mt solution with the GMT program psmeca. With the command
psmeca psmeca.in -R10/80/0/42 -JX16/-20 -Sd0.3 -Gred -P -B10f5:"Variance reduction":/1:Depth: \bgroup\color{black}$ >$\egroup mt.ps
the double couple part was plottes in figure 26.3. Using -Sm0.3 will show the mt.

Summary of mt related commands in EEV

Influence of parameters

Filters: Try to find a filter giving a good signal to noise ratio. There can be substantially difference using different filters.

Reduction velocity: It has little influence on the results except that Zcor changes due to relative change in arrival times. It is normally selected to include signals before the P arrival and to include all surface waves. Even different reduction velocity for real and Greens function data does not matter. The use of reduction velocity only has the purpose of reducing the length of the traces by putting events close in time. This is particularly important when using events in with a wide distance range.

Time window: The most important is that the time window includes the whole time signal to be inverted. The time window actually used by the program will depend on how close it is to a \bgroup\color{black}$ 2^n$\egroup number.
The correlation is done only with \bgroup\color{black}$ 2^n$\egroup samples. The number of samples selected for correlation can be both larger and smaller than the number of samples in the data file. E.g. if number of samples is between 90 and 181, 128 samples will be used and if between 182 and 362, 256 samples is used etc.
The inversion also seems to use a \bgroup\color{black}$ 2^n$\egroup number and there can, in a few cases, be a radical difference between using e.g. 256 and 257 points in calculating the fit VR, but apparently not the solution itself. The default number of samples to use is therefore 257. So if the number of samples is near a \bgroup\color{black}$ 2^n$\egroup number, use a number a bit larger than \bgroup\color{black}$ 2^n$\egroup. This change in fit is not generally observed, in most cases VR is not affected.
Inspect the Greens function file all.green (command pd) or use MULPLT with all.green$$$ to see how long the Green function signal is and similarly look at the data files. The time shifted data files are STAT.data and can be plotted with MULPLT.

Sample rate: Seems to have little influence if well above the frequencies of analyzed data. One or two Hz seems ok for data where the inversion is made for frequencies below 0.1 Hz. For 1 Hz data 4 \bgroup\color{black}$ -$\egroup8 Hz or similar (depending on sample rate of original data).

Number of stations and components: It is often difficult to get good results with all stations and components. Start with a few stations (even one god one) and gradually add data. Note that changing station configuration also can change the time shift between synthetic seismograms and the data. It is important to have as small a location gap as possible.

Zcor: Zcor is calculated by correlating the Greens functions with the data and the synthetic seismograms might need a correction as observed from the overlay seismograms. The Zcor time shift will change with different solutions so there is no final Zcor that will work in all cases. Small changes in Zcor can significantly improve the results. In the worst case, Zcor might have to be large enough to reverse the polarity of a signal or even larger if e.g. P has been correlated with S (small events at higher frequencies). The automatic correlation is what creates most problems.

What can go wrong

Rerunning a previously analyzed event

The S-filer contains all a parameters used including the start time and duration of the data file so it is possible to extract the same data file for the same channels again. The Green's functions must be regenerated by command mtg. If the user does not delete the backup files (see above) the data file is available as backup file and a question will be given if the previous data file should be used.

Running the programs independently of EEV

Once a first run has been made, the programs can be run independently of EEV using the original parameter files. This can be an advantage if the user wants to change some of the hardwired parameters. However, this can only be done for one depth.

FKRPROG_SEISAN: The only parameters which might be tested are the group velocities. Dreger is vague about what they should be but their values seem to have some influence on the Greens function. It is also possible to edit other parameters independently like the model.

TDMT_INVC_SEISAN: The only parameter that cannot be tested through EEV is to make the analysis window smaller than the data window. This sometime improves the results.

Running in this way, the synthetic file readable by SEISAN is not generated and cannot be updated with the results.

Example of parameters in S-file


 SYNT: MODEL--:     THICK        VP        VS      DENS        QP        QS    3
 SYNT: MODEL--:     1.000     3.200     1.500     2.280   600.000   300.000    3
 SYNT: MODEL--:     2.000     4.500     2.400     2.280   600.000   300.000    3
 SYNT: MODEL--:     1.000     4.800     2.780     2.580   600.000   300.000    3
 SYNT: MODEL--:     1.000     5.510     3.180     2.580   600.000   300.000    3
 SYNT: MODEL--:    12.000     6.210     3.400     2.680   600.000   300.000    3
 SYNT: MODEL--:     8.000     6.890     3.980     3.000   600.000   300.000 N  3
 SYNT: MODEL--:    60.000     7.830     4.520     3.260   600.000   300.000    3
 SYNT: MODEL--:    50.000     8.000     4.600     3.260   600.000   300.000    3
 SYNT: ST-D-RK:      48.0      85.0      -1.0                                  3
 SYNT: DEPTH--:      10.0         5       5.0                                  3
 SYNT: NPOINTS:       512 MT-NP-USE       280                                  3
 SYNT: TIMES--:     TOTAL    60.000   INITIAL     0.000  SY-TRACE    60.000    3
 SYNT: BOUPAR-:     800.0      2000     0.010                                  3
 SYNT: PHASES-:        Pg        Sg       PmP       SmS       SmP              3
 SYNT: DT-Tsou:     0.050      .100   MT_RATE       1.0                        3
 SYNT: MTSTART: 1998-0812-0410-00.0 MT-WINDOW     305.0                        3
 SYNT: MT-D-V-: displacement                                                   3
 SYNT: REDVELO:    0.0000 MT-REDVL:       8.0                                  3
 SYNT: COMPON-:    RADIAL                                                      3
 SYNT: STAT-AT:  no                                                            3
 SYNT: MT-FILT:     0.015     0.030         4         1                        3
 SYNT: NSTAT--:         4------------------------------------------------------3
 SYNT: NEW STAT:---------------------------------------------------------------3
 SYNT: STATION: PKD  S  Z  DISTANC:     122.0 MTOFFSET:        22 MT-COMP: TRZ 3
 SYNT: STATION: PKD        AZIMUTH:     137.0 BAZIMUTH:     317.8              3
 SYNT: NEW STAT:---------------------------------------------------------------3
 SYNT: STATION: BKS  S  Z  DISTANC:     142.0 MTOFFSET:         0 MT-COMP: TRZ 3
 SYNT: STATION: BKS        AZIMUTH:     331.0 BAZIMUTH:     151.0              3
 SYNT: NEW STAT:---------------------------------------------------------------3
 SYNT: STATION: CMB  S  Z  DISTANC:     171.0 MTOFFSET:         0 MT-COMP: TRZ 3
 SYNT: STATION: CMB        AZIMUTH:      34.0 BAZIMUTH:     214.1              3
 SYNT: NEW STAT:---------------------------------------------------------------3
 SYNT: STATION: KCC  S  Z  DISTANC:     201.0 MTOFFSET:         0 MT-COMP: TRZ 3
 SYNT: STATION: KCC        AZIMUTH:      71.0 BAZIMUTH:     252.3              3

Most of the parameters are explained under synthetic seismograms. The new ones used only for mt and other important ones are:
DEPTH–: The first number is start depth, the following number of depth to test and the last number is the increment in depth. The default is one depth only. MT-NP-USE: Number of points for the inversion, default 257. The number does not have to be \bgroup\color{black}$ 2^n$\egroup but it seems that, in some cases, a number a bit larger than \bgroup\color{black}$ 2^n$\egroup is better than \bgroup\color{black}$ 2^n$\egroup or a bit smaller.
NPOINTS: Number of points in time domain used to make Greens function, default 512. This number must be \bgroup\color{black}$ 2^n$\egroup.
MTSTART: Start time of data window used. MT-WINDOW: Length (s) of data window used. MT-RATE: Sample rate to use. This rate will be used for Greens function generation and the observed data will be down-sampled to this rate. NOTE: The rate must have value so only skipping samples in the data can be done. So the rate 1 can nearly always be used while rate 3 rarely can be used. The time window for the Greens function will then be NPOINTS/MT-RATE. Default 1.0 samples/s.
MT-REDVL: Reduction velocity, default 8 km/s.
MT-FILT: Filters to use for both data and Greens functions.
MTOFFSET: Offset in samples for the data relative to the Greens function. Default 0.
MT_COMP: Indicate which component to be used. By default all 3 are used, but any combination can be selected. T, R and Z can come in any order but must be within column 76:78.

Technical notes

The Dreger MT inversion essentially consists of a Green's function generation program, fkrprog (in SEISAN called fkrprog_seisan), several data manipulation programs and scripts using SAC to prepare data for the inversion program tdmt_invc (in SEISAN called tdmt_invc_seisan). The two key programs have been left nearly unchanged (all changes are clearly marked in programs) while the data manipulation programs mostly have been replaced by standard SEISAN functions (mostly within EEV) and one modified Dreger program wvint9 (now called wvint_seisan) so only 3 programs have been added to SEISAN. A significant change is that Dreger uses cm as a unit while SEISAN uses nm, so software has been changed to nm like elsewhere in SEISAN. The Dreger code has no provision for using less than 3 channels. However, undocumented information indicates that if a data channel has zeros, it is not used and this is how it is implemented in SEISAN. In some cases it does not seem to work well, should be investigated more. The data and Greens functions in Dregers software are using the Helmberger format, a simple Ascii format without reference to time and channel name. SEISAN will, for simplicity use the same format, but it has been extended to also include channel information, absolute time and an ID of the event being processed (the S-file name), see example below.


       3   0.020  0.050 4 1 C:\Seismo\\REA\TEST_\1998\08\12-1410-00L.S199808                                
(7e14.5) displacement                
     0.0000e+00     0.0000e+00      0  0  0.00
     120     0.100  0.0000e+00 PKD   RR T 1998  812 1410   5.983
   0.48303E+01   0.48328E+01   0.48315E+01   0.48305E+01   0.48293E+01   0.48275E+01   0.48261E+01
   0.48247E+01   0.48264E+01   0.48257E+01   0.48229E+01   0.48237E+01   0.48236E+01   0.48208E+01
   0.48195E+01   0.48179E+01   0.48153E+01   0.48138E+01   0.48090E+01   0.48077E+01   0.48043E+01

The two first lines are main headers. The first line has number of channels in file (format i8) and has been extended with, filter band, number of poles and passes and S-file name. Only the number of channels is required information for plotting. The second line gives format of data, extended with help text which in this case is information that file is in displacement (nm). The following two lines are channel headers for each channel. The first channel header has undocumented information. The second channel header has number of samples in channel (i8), sample interval(s)(f10.3), undocumented and starting from column 32, the station code, channel code and start time.

The program flow in SEISAN is

Fkrprog_seisan: The parameter file format has been changed to include station names and the s-file name.
Tdmt_invc_seisan: The program has minor changes to accept new Helmberger format (it also reads the original format). It did not work properly under Windows with more then 450 points, so memory allocation was doubled to fix this. The plotting routine has been simplified to only write original and synthetic seismograms.

To get correct overlay, the channels must be sorted alphabetically. MULPLT turns on sorting (normally set in MULPLT.DEF) if the filename is synt_seis.out.

The SEISAN implementation is dimensioned to max 99 stations.

Figure 26.3: The double couple part of the moment tensor solution shown with respect to the variance reduction at different depths. The GCMT solution is also shown with arbitrary variance reduction. This figure was made with the GMT program psmeca, see text.
\begin{figure}
\centerline{\includegraphics[width=0.9\linewidth]{fig/mt-depth}}
\end{figure}

Peter Voss : Tue Jun 8 13:38:42 UTC 2021