Source code for pygmm.kempton_stewart_2006

"""Kempton and Stewart (2006, :cite:`kempton2006`) duration model."""

import numpy as np

from . import model

__author__ = ""


[docs] class KemptonStewart2006(model.Model): """Kempton and Stewart (2006, :cite:`kempton2006`) duration model. Parameters ---------- scenario : :class:`pygmm.model.Scenario` earthquake scenario """ NAME = "Kempton Stewart (2006)" ABBREV = "KS06" PARAMS = [ model.NumericParameter("mag", True, 5, 7.6), model.NumericParameter("dist_rup", True, 0, 200), model.NumericParameter("v_s30", True, 200, 1000), ]
[docs] def __init__(self, scenario): super().__init__(scenario) # scenario s = self._scenario # stress drop indices for duration measures stress_drop = np.exp( [ 6.02, # D5-75a 2.79 + 0.82 * (s.mag - 6), # D5-95a 5.46, # D5-75v 1.53 + 1.34 * (s.mag - 6), ] ) # D5-95v # source duration f_0 = self._source_dur(stress_drop) # path duration f_1 = np.array([0.07, 0.15, 0.10, 0.15]) * s.dist_rup # site duration f_2 = ( np.array([0.82, 3.00, 1.40, 3.99]) + np.array([-0.0013, -0.0041, -0.0022, -0.0062]) * s.v_s30 ) # total druation self._ln_dur = np.log(f_0 + f_1 + f_2) # aleatory standard deviation self._std_err = np.array([0.57, 0.47, 0.66, 0.52])
@property def duration(self): return KemptonStewart2006._as_recarray(np.exp(self._ln_dur)) @property def std_err(self): return KemptonStewart2006._as_recarray(self._std_err) @staticmethod def _as_recarray(values): return np.rec.fromarrays( values, names=[ "D_5t75a", "D_5t95a", "D_5t75v", "D_5t95v", ], ) def _source_dur(self, stress_drop): # seismic moment moment = 10 ** (1.5 * self.scenario.mag + 16.05) return (stress_drop / moment) ** (-1 / 3) / (4.9e6 * 3.2)