Fault kinematic similarity


This algorithm calculates the kinematic similarity for fault and seismic focal mechanism populations. Tensor and quaternion operators can produce scalar and geometric indices representing the similarity between structural data or seismic events (Kagan and Knopoff, 1985a,b; Kagan, 1990, 1991, 1992a,b, 1994, 2005).
The algorithm is implemented in FORTRAN 90/95. It requires a text file storing the structural orientations of faults or focal mechanisms. The results are the kinematic similarity values between each pair of observations.


Language: FORTRAN 90/95
Compiler: g95 - Windows
Version: 2008-07-02
Source: FaultCorrelation_01.f95
Binary: FaultCorrelation_01.exe


This paragraph presents a reduced excerpt from Alberti (2010).
The article pdf can be requested to alberti.m65@gmail.com.

The similarity in orientation between two geometrically similar structures, i.e., two lines, planes or stress tensors, can be measured through scalar or geometric indices.

Coherence index

Kagan and Knopoff (1985a,b) and Kagan (1992a) calculated the correlation between focal mechanisms (converted into seismic moment tensors) with their coherence index:

Equation of coherence index

This is the scalar product of the two normalised and symmetric Mij and Nij seismic tensors, scaled by the opposite of I2, the second invariant of the normalised seismic tensor, whose value is -1 (Kagan & Knopoff, 1985b). The coherence index range is between -2 and 2.
The lower, negative limit refers to opposite tensors, while the upper, positive limit refers to equal tensor orientations.

Geometric measures

The rotation needed to make equal the orientations of two structures constitutes a geometric measure of the similarity between two structural observations. The rotation pole and angle represent the geometric measure. Rotations of focal mechanisms and fault planes with slickenlines can be derived through rotation matrices or quaternion notations (Kagan, 1991, Kuipers, 2002). As tensors with orthorhombic symmetry represent them, four possible rotations occur, all with rotation angle between 0° and 120° (Kagan, 1991). In most cases, the minimum rotation angle can be considered the preferred one.

Rotation matrices

A rotation operator in R3 may be represented by an orthogonal, rotation matrix R ( i.e., R R t = R t R = I, where R t is the transpose of R, and I is the identity matrix ). Its determinant is equal to 1 (Kuipers, 2002). The rotation matrix can be calculated given a rotation pole and angle using the formulas in Kagan & Knopoff (1985a, p. 433) and Cox & Hart (1986, pp. 226-227).


Quaternions are an alternative method to determine the rotations of objects (Kuipers, 2002).
A quaternion q = q0 + q1i + q2j + q3k is the sum of a real number q0 and three real numbers q1, q2 and q3 multiplied by the imaginary components i, j and k, respectively (i2 = j2 = k2 = ijk = -1). The norm of a quaternion is equal to:
Norm of a quaternion
so that a normalised quaternion has a unit norm.

A normalised quaternion q = q0 + q1i + q2j + q3k represents a rotation operator whose rotation pole is (Kagan, 1991, Kuipers, 2002):
n = q1i + q2j + q3k (i, j and k: unit vectors of an orthonormal basis)
with a rotation angle F:
F = 2 acos(q0)   ( -180° ≤ F ≤ 180°, positive following the right-hand rule )

Since a focal mechanism has three degrees of freedom, it can be represented by a normalised quaternion. This quaternion is the one equivalent to a rotation of the T, P and B axes from orientations parallel to the frame axes (i.e., x, y, z) to those of the actual focal mechanism (Kagan, 1991, 1992b). It may be obtained through the rotation matrix R, converted to a quaternion using the formulas in Kagan (1991, p.711, eqs. 10 and 11) and Kuipers (2002, p. 169).

As previously stated, there are four possible rotations between two focal mechanisms. Three solutions can be derived from the first one, by a 180° rotation around each of the kinematic axes of the first of the two compared focal mechanisms (Kagan, 1991, p. 712).

Program input

Required information for the program is below. The program can use the output of the forward stress simulation program.

Record identifier

  • integer value

Spatial information

Optional, one of the following two:
  • x, y, z
  • Lat, lon, depth

Time information

  • numeric value

Orientation data

Required, one of three choices:
  • Strike, dip, rake
  • Strike, dip, slickenline trend, plunge
  • P axis trend, plunge, T axis trend, plunge

An example of input file, resulting from the ForwardStress program, is simul_data.txt

The user selects which analysis to perform (e.g., temporal and spatial separation between events, coherence and faults/focal mechanisms rotations). The user can choose between a central or a pairwise statistic. In the former case, each observation is compared with the provided "central" observation. In the latter one, each observation is compared with all the other ones.

Program output

The algorithm creates two textual output files, respectively containing the resulting data and their metadata. Examples of output files are similarity.txt and metadata.txt.
The data file stores the result in a tabular format. First line is the field header, and the following lines contain the resulting data, depending on the chosen analysis types. The result can be analysed with statistical softwares, such as the open source R software.

Fields in output file

All solutions are made up by trend, plunge and rotation angle.



RecA_id,RecB_id Ids of the two compared records
RecDist 3D distance between the two records
TimeLag Time lag
Coherence Coherence
FMSol1_Tr,FMSol1_Pl,FMSol1_An Focal mechanism rotation: first (minimum angle) solution
FMSol2_Tr,FMSol2_Pl,FMSol2_An Focal mechanism rotation: second solution
FMSol3_Tr,FMSol3_Pl,FMSol3_An Focal mechanism rotation: third solution
FMSol4_Tr,FMSol4_Pl,FMSol4_An Focal mechanism rotation: fourth solution
TSol_Tr,TSol_Pl,TSol_An T axis rotation: minimum angle solution
PSol_Tr,PSol_Pl,PSol_An P axis rotation: minimum angle solution
BSol_Tr,BSol_Pl,BSol_An B axis rotation: minimum angle solution
FPSol_Tr,FPSol_Pl,FPSol_An Fault plane rotation: minimum angle solution
SlSol_Tr,SlSol_Pl,SlSol_An Slickenline rotation: minimum angle solution

Case study

An example of analysis is in Alberti (2010). A PDF of the paper can be requested to alberti.m65@gmail.com.

Related articles

  • Aki, K., Richards, P.G., 1980. Quantitative seismology. Theory and Methods. Vol. I, W.H. Freeman and Company, San Francisco, 557pp.
  • Alberti, M., 2010. Analysis of kinematic correlations in faults and focal mechanisms with GIS and Fortran programs. Computers & Geosciences 36, 186-194.
  • Cox, A., Hart, R.B., 1986. Plate Tectonics: How It Works. Blackwell Scientific Publications, Palo Alto, CA, pp. 392.
  • Kagan, Y.Y., 1990. Random stress and earthquake statistics: spatial dependence. Geophysical Journal International 102, 573-583.
  • Kagan, Y.Y., 1991. 3-D rotation of double-couple earthquake sources. Geophysical Journal International 106, 709-716.
  • Kagan, Y.Y., 1992a. On the geometry of an earthquake fault system. Physics of the Earth and Planetary Interiors 71, 15-35.
  • Kagan, Y.Y., 1992b. Correlations of earthquake focal mechanisms. Geophysical Journal International 110, 305-320.
  • Kagan, Y.Y., 1994. Distribution of incremental static stress caused by earthquakes. Nonlinear Processes in Geophysics 1, 172-181.
  • Kagan, Y.Y., 2005. Double-couple earthquake focal mechanism: random rotation and display. Geophysical Journal International 163, 1065-1072, doi: 10.1111/j.1365-246X.2005.02781.x
  • Kagan, Y.Y., Knopoff, L., 1985a. The first-order statistical moment of the seismic moment tensor. Geophysical Journal of the Royal astronomical Society 81, 429-444.
  • Kagan, Y.Y., Knopoff, L., 1985b. The two-point correlation function of the seismic moment tensor. Geophysical Journal of the Royal astronomical Society 83, 637-656.
  • Kuipers, J. B., 2002. Quaternions and Rotation Sequences: A Primer with Applications to Orbits, Aerospace and Virtual Reality. Princeton University Press, 400 pp.


My name is Mauro Alberti. I'm a freelance Gis and scientific programmer. My primary specializations are in scientific and GIS programming (OS tools, mainly Python, R, Fortran and C++), Earth Sciences (structural geology, Polar Sciences), geostatistical analysis. About me


Mauro Alberti


mobile: +39 338 8022247
skype: mauro.alberti.siena
Address: Strada per Casale 56,
Verolengo (TO) 10038, Italy

P.I. 01292740527