Source code for openquake.hazardlib.scalerel.gsc_offshore_thrusts

# -*- coding: utf-8 -*-
# vim: tabstop=4 shiftwidth=4 softtabstop=4
#
# Copyright (C) 2015-2020 GEM Foundation
#
# OpenQuake 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.
#
# OpenQuake 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 OpenQuake. If not, see <http://www.gnu.org/licenses/>.

"""
Rupture scaling models as used for the 2015 Seismic Hazard Model of Canada, as
described in Adams, J., S. Halchuk, T. Allen, and G. Rogers (2015). Canada's
5th Generation seismic hazard model, as prepared for the 2015 National Building
Code of Canada, 11th Canadian Conference on Earthquake Engineering, Victoria,
Canada, Paper 93775.

Module :mod:`openquake.hazardlib.scalerel.gsc_offshore_thrusts` implements
:class:`GSCCascadia`
:class:`GSCEISO`
:class:`GSCEISB`
:class:`GSCEISI`
:class:`GSCOffshoreThrustsWIN`
:class:`GSCOffshoreThrustsHGT`.
"""
from openquake.hazardlib.scalerel.base import BaseMSRSigma
from math import sin, radians


[docs]class GSCCascadia(BaseMSRSigma): """ Implements magnitude-area scaling relationship for the Juan de Fuca segment of the Cascadia subduction zone. :param SEIS_WIDTH: Hard-wired seismogenic width of the CIS source (125 km) """ SEIS_WIDTH = 125.0
[docs] def get_median_area(self, mag, rake): """ The values are a function of magnitude. """ # thrust/reverse return (10.0 ** (3.01 + 0.001 * mag)) * self.SEIS_WIDTH
[docs] def get_std_dev_area(self, mag, rake): """ Standard deviation for GSCCascadia. Magnitude is ignored. """ # thrust/reverse return 0.01
[docs]class GSCEISO(BaseMSRSigma): """ Implements magnitude-area scaling relationship for the outboard estimate of rupture (16 km depth) for the Explorer segment of the Cascadia subduction zone with an upper seismogenic depth of 5 km and a dip of 18 degrees. """ # Thickness between 16 km lower seismogenic depth and 5 km upper # seismogenic depth SEIS_WIDTH = 11. / sin(radians(18.0))
[docs] def get_median_area(self, mag, rake): """ The values are a function of magnitude. """ # thrust/reverse return (10.0 ** (1.90 + 0.001 * mag)) * self.SEIS_WIDTH
[docs] def get_std_dev_area(self, mag, rake): """ Standard deviation for GSCCascadia. Magnitude is ignored. """ # thrust/reverse return 0.01
[docs]class GSCEISB(BaseMSRSigma): """ Implements magnitude-area scaling relationship for best estimate landward extent of rupture (22 km depth) for the Explorer segment of the Cascadia subduction zone with an upper seismogenic depth of 5 km and a dip of 18 degrees. """ # Thickness between 22 km lower seismogenic depth and 5 km upper # seismogenic depth SEIS_WIDTH = 17.0 / sin(radians(18.))
[docs] def get_median_area(self, mag, rake): """ The values are a function of magnitude. """ # thrust/reverse return (10.0 ** (1.90 + 0.001 * mag)) * self.SEIS_WIDTH
[docs] def get_std_dev_area(self, mag, rake): """ Standard deviation for GSCCascadia. Magnitude is ignored. """ # thrust/reverse return 0.01
[docs]class GSCEISI(BaseMSRSigma): """ Implements magnitude-area scaling relationship for the inboard estimate of rupture (28 km depth) for the Explorer segment of the Cascadia subduction zone with an upper seismogenitc depth of 5 km and a dip of 18 degrees. """ # Thickness between 28 km lower seismogenic depth and 5 km upper # seismogenic depth SEIS_WIDTH = 23.0 / sin(radians(18.))
[docs] def get_median_area(self, mag, rake): """ The values are a function of magnitude. """ # thrust/reverse return (10.0 ** (1.90 + 0.001 * mag)) * self.SEIS_WIDTH
[docs] def get_std_dev_area(self, mag, rake): """ Standard deviation for GSCCascadia. Magnitude is ignored. """ # thrust/reverse return 0.01
[docs]class GSCOffshoreThrustsWIN(BaseMSRSigma): """ Implements magnitude-area scaling relationship for the Winona segment of the Jan de Fuca subduction zone that is approximately scaled to give a rupture length of 300 km for a MW 8 earthquake and fit the rupture length of the M7.8 2012 Haida Gwaii earthquake. Ruptures assume an upper and lower seismogenic depth of 2 km and 5 km respectively, with a dip of 15 degrees. """ # Thickness between 5 km lower seismogenic depth and 2 km upper # seismogenic depth SEIS_WIDTH = 3.0 / sin(radians(15.0))
[docs] def get_median_area(self, mag, rake): """ The values are a function of magnitude. """ # thrust/reverse for WIN return (10.0 ** (-2.943 + 0.677 * mag)) * self.SEIS_WIDTH
[docs] def get_std_dev_area(self, mag, rake): """ Standard deviation for GSCOffshoreThrustsWIN. Magnitude is ignored. """ # thrust/reverse return 0.2
[docs]class GSCOffshoreThrustsHGT(BaseMSRSigma): """ Implements magnitude-area scaling relationship that is approximately scaled to give a rupture length of 300 km for a MW 8 earthquake and fit the rupture length of the M7.8 2012 Haida Gwaii earthquake. Ruptures assume an upper and lower seismogenitc depth of 3 km and 22 km, respectively, with a dip of 25 degrees. """ # Thickness between 22 km lower seismogenic depth and 3 km upper # seismogenic depth SEIS_WIDTH = 19.0 / sin(radians(25.0)) # 19 = 22 - 3
[docs] def get_median_area(self, mag, rake): """ The values are a function of magnitude. """ # thrust/reverse for HGT return (10.0 ** (-2.943 + 0.677 * mag)) * self.SEIS_WIDTH
[docs] def get_std_dev_area(self, mag, rake): """ Standard deviation for GSCOffshoreThrustsHGT. Magnitude is ignored. """ # thrust/reverse return 0.2