Source code for openquake.pfd.primary_surf_rup.takao2013

# -*- coding: utf-8 -*-
# vim: tabstop=4 shiftwidth=4 softtabstop=4
#
# Copyright (C) 2024-2026 Yen-Shin Chen, OGS
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU Affero General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.

"""
Module :mod:`openquake.pfd.primary_surf_rup.takao2013` implements
the model of Takao et al. (2013) in :class:`Takao2013PrimarySR`

Supported Fault Styles: Reverse & Strike-Slip
"""

import numpy as np
from openquake.pfd.params import check_style
from openquake.pfd.primary_surf_rup.base import BasePrimarySurfRup

[docs]class Takao2013PrimarySR(BasePrimarySurfRup): """Principal surface-rupture probability model of Takao et al. (2013). Logistic model of the probability of principal surface rupture as a function of magnitude (their Equation 4, z = -32.03 + 4.90*Mw), regressed on Japanese reverse- and strike-slip-faulting earthquakes. Takao, M., Tsuchiyama, J., Annaka, T., & Kurita, T. (2013). Application of probabilistic fault displacement hazard analysis in Japan. Journal of Japan Association for Earthquake Engineering, 13(1), 17-36. https://doi.org/10.5610/jaee.13.17 """ def __init__(self, style=None): """ :param style: optional faulting style declared by the logic-tree branch. The Takao et al. (2013) regression pools Japanese reverse- and strike-slip-faulting earthquakes in one equation, so the value does not change the numbers; it is stored (validated against the global style vocabulary) as a declaration of the branch context. """ self.style = check_style(type(self).__name__, style) def get_prob( self, mag: float ) -> float: """ Model of Takao et al. (2013) for the probability of surface rupture for rupture with reverse and strike-slip rupturing mechanism. :param mag: float or array-like, earthquake magnitude(s) :return: probability or array of probabilities """ m = np.asarray(mag, dtype=float) fx = -32.03 + 4.9 * m prob = np.exp(fx) / (1.0 + np.exp(fx)) return prob.item() if prob.shape == () else prob