
Direct inversion For Fault slip in \(S^5\)
Source:R/stress_inversion_yamaji.R
slip_inversion_yamaji_sato.RdStress tensor inversion via the Yamaji and Sato (2006) eigenvector method.
Value
Same output as slip_inversion() plus
y6D unit y-vector on \(S^5\) representing the tensor
alphaper-fault angular misfit (unsigned, 0-90°)
mean_alphamean angular misfit across all faults
Details
A reduced stress tensor is represented as a unit 5-vector \(x\) on the 5-sphere \(S^5\), embedded in the 6D space of symmetric tensors via the \(y\)-vector (Eq. 6):
$$y = (1/\sqrt{2}) \times (s_{11}, s_{22}, s_{33}, \sqrt{2} \times s_{23}, \sqrt{2} \times s_{31}, \sqrt{2} \times s_{12})$$
with normalisation constraints (Eqs. 11-12):
\(\sigma_I = s_{11} + s_{22} + s_{33} = 0\) (deviator)
\(\sigma_{II} = (s_{11}^2+s_{22}^2+s_{33}^2)/2 + s_{23}^2+s_{31}^2+s_{12}^2 = 1\) (unit norm)
These constraints confine \(y\) to the intersection of a hyperplane and the 6-sphere, which defines the 5-sphere \(S^5\).
For each fault datum \(\{n, \text{slip}\}\), define the 6-vector \(\epsilon'\) (Eq. 8, derived from Eq. 4) such that the Wallace-Bott condition becomes:
\(\epsilon'_i \cdot y = 0\) (shear stress perpendicular to \(b_i = n_i \times \text{slip}_i\))
The optimal \(y\) minimises \(\sum_i (\epsilon'_i \cdot y)^2\), i.e. the smallest-eigenvalue eigenvector of \(M = \sum_i \epsilon'_i \otimes \epsilon'_i\).
The computation is carried out in the 5D deviator subspace via an explicit orthonormal basis \(B\) (\(6 \times 5\)), constructed as the complement of the deviator null direction \(h = (1,1,1,0,0,0)/\sqrt{3}\), to avoid degeneracy in the \(6\times 6\) projected matrix.
The sense condition (Eq. 5 / Eq. 10) selects between the two antipodal solutions via a majority vote on \(\tau_i \cdot \text{slip}_i > 0\) (positive work).
Distance metrics
Angular stress distance (or Lode angle) \(\Theta\) (Eq. 19): great-circle distance on \(S^5\), \(\Theta = \arccos{|y_1 \dot y_2|})\), range \([0, 90]\) deg for reduced tensors.
Orife-Lisle distance \(D\) (Eq. 26): Euclidean chord on \(S^5\), \(D = 2 \sin(\Theta/2)\), range \([0, 2]\).
Michael distance \(D_M\) (Eq. 34): \(D_M = 1 - \cos(\Theta)\), range \([0, 2]\).
Relationship to misfit angles (Eq. 37): \(\bar{d}\) approx \(\Theta\), where \(\bar{d}\) is the mean angular misfit between predicted and observed slip directions.
References
Yamaji, A., & Sato, K. (2006). Distances for the solutions of stress tensor inversion in relation to misfit angles that accompany the solutions. Geophysical Journal International, 167(2), 933–942. doi:10.1111/j.1365-246X.2006.03188.x
See also
Other stress-inversion:
Fault_PT(),
slip_inversion(),
slip_inversion_angelier(),
slip_inversion_hansen(),
slip_inversion_michael(),
slip_inversion_simple(),
slip_inversion_wissi()
Other yamaji:
slip_inversion_yamaji_sato_boot()
Examples
set.seed(20250411)
nx <- length(angelier1990)
par(mfrow = c(2, nx / 2))
invisible(lapply(seq_len(nx), function(i) {
# inversion
x <- angelier1990[[i]]
res <- slip_inversion_yamaji_sato(x)
# some stress shape
phi_val <- round(res$stress_shape$phi, 2)
# misfit
rup_val <- round(res$misfit$rup_mean, 2)
# Plot the faults (color-coded by RUP%) and show the principal stress axes
stereoplot(title = names(angelier1990)[i], guides = FALSE)
stereo_shmax(res$SHmax)
fault_plot(x, col = assign_col(res$misfit$rup))
points(res$principal_axes, col = 1:3, pch = 16, cex = 1.5)
text(res$principal_axes,
label = rownames(res$principal_axes),
col = 1:3, adj = -.25
)
legend("topleft", col = 2:4, legend = rownames(res$principal_axes), pch = 16)
title(sub = bquote(Phi == .(phi_val) ~ "|" ~ bar("RUP") == .(rup_val) * "%"))
}))
dev.off()
#> null device
#> 1