Skip to content

Classify tectonic type by Haynie et al. (2026); remove NSHM 2022 and NGA-SUB rules - #169

Open
lispandfound wants to merge 2 commits into
mainfrom
haynie-tectonic-type
Open

lispandfound wants to merge 2 commits into
mainfrom
haynie-tectonic-type

Conversation

@lispandfound

Copy link
Copy Markdown
Contributor

Summary

Replaces the tectonic type rules in source_modelling/focal_mechanism.py with the probabilistic upper-plate / interface / intraslab rule of Haynie et al. (2026), behind the existing public API.

Within the Slab2 footprint:

  • On-interface probability: exp(-Δz² / 2σ²) with σ = 10 km, where Δz is the vertical distance to the interface.
  • Subduction slip probability: exp(-K² / 2σ²) with σ = 30°, where K is the minimum Kagan angle between the event and slip on the interface. The interface slip is either (a) pure reverse or (b) oblique reverse along the Pacific–Australia relative plate motion (NUVEL-1A, DeMets et al. 1994).
  • P_interface = on-interface × subduction slip × (depth ≤ 70 km).
  • The remainder is crustal (upper plate) above the interface and intraslab below it.
  • Outside the footprint, events are crustal.

A fixed depth drops the on-interface factor, and a missing focal mechanism drops the slip factor.

API

Stable. CMTClassifier.tectonic_type(centroid, nodal_plane_1, nodal_plane_2) keeps the call that workflow's gcmt-to-realisation (and so the realtime simulation workflow) makes, and TectonicType is unchanged. The planes are now optional, and there is a new fixed_depth keyword. The Kagan angle is the minimum over both planes, so plane order doesn't matter.

New: kagan_angle, plate_motion_azimuth, subduction_slip_planes.

Removed:

  • The NSHM 2022 rule: the old module-level tectonic_type_probabilities(depth_below_slab, interface_like, normal_like, sigma), _is_interface_like and its constants.
  • The sigma keyword of CMTClassifier.tectonic_type_probabilities.
  • The NGA-SUB rule: nga_sub_tectonic_type(_probabilities), SlabZone, SlabZoneQuery and SlabModel.zone.

Behaviour change

The 2003 Fiordland event (GeoNet 2103645; centroid −45.19, 166.83, 22 km) moves from interface to intraslab, at about 0.54 slab vs 0.46 interface. It sits 9 km below Slab2, and the plate-motion rake at Puysegur is very oblique (~167°). workflow's test_gcmt_to_realisation_tectonic_type expects subduction_interface for this event and will need updating. A companion workflow PR is being prepared for that.

validation_small_magnitude/scripts/compare_sources.py calls tectonic_type_probabilities(..., sigma=0.0) and will need the sigma argument dropped.

Test plan

  • New tests: Kagan angle identities and the ≤ 120° bound, plate motion azimuths at Hikurangi and Puysegur, horizontal slip of the oblique reference plane parallel to plate motion, the rule's probabilities, plane-order invariance, and the no-mechanism / fixed-depth paths
  • Full suite on top of main: 862 passed

🤖 Generated with Claude Code

lispandfound and others added 2 commits October 27, 2026 14:16
Within the Slab2 footprint, the probability of a subduction interface
event is the product of an on-interface probability,
exp(-dz^2 / 2 sigma^2) with sigma = 10 km for the vertical distance to
the interface, a subduction slip probability, exp(-K^2 / 2 sigma^2) with
sigma = 30 degrees for the minimum Kagan angle to slip on the interface
in pure reverse or along the Pacific-Australia relative plate motion
(NUVEL-1A), and whether the centroid is no deeper than 70 km. The
remainder is upper plate above the interface and intraslab below it.
Fixed depths and missing mechanisms leave the corresponding factor at 1.

Adds kagan_angle, plate_motion_azimuth and subduction_slip_planes, and
CMTClassifier.haynie_tectonic_type(_probabilities).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
CMTClassifier.tectonic_type(centroid, nodal_plane_1, nodal_plane_2), the
call gcmt-to-realisation makes, now classifies by the Haynie et al. rule.
The planes are optional (no focal mechanism) and a fixed_depth keyword
drops the on-interface factor. The Kagan angle is taken over both planes
so the result does not depend on their order.

Removes the NSHM 2022 rule (tectonic_type_probabilities' old signature,
_is_interface_like and its constants), the NGA-SUB rule
(nga_sub_tectonic_type(_probabilities), SlabZone, SlabZoneQuery,
SlabModel.zone) and the haynie_* names.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant