Source code for openquake.hazardlib.gsim.montalva_2017
# -*- coding: utf-8 -*-
# vim: tabstop=4 shiftwidth=4 softtabstop=4
#
# Copyright (C) 2015-2019 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/>.
"""
Module exports :class:`MontalvaEtAl2017SInter`
               :class:`MontalvaEtAl2017SSlab`
"""
import numpy as np
from openquake.hazardlib.gsim.base import CoeffsTable
from openquake.hazardlib.gsim.abrahamson_2015 import (AbrahamsonEtAl2015SInter,
                                                      AbrahamsonEtAl2015SSlab)
[docs]class MontalvaEtAl2017SInter(AbrahamsonEtAl2015SInter):
    """
    Adaptation of the Abrahamson et al. (2015) BC Hydro subduction interface
    GMPE, calibrated to Chilean strong motion data, by Montalva et al (2017)
    Montalval, G. A., Bastias, N., and Rodriguez-Marek, A. (2017) "Ground-
    Motion Prediction Equation for the Chilean Subduction Zone", Bulletin of
    the Seismological Society of America, 107(2), 901-911
    Note: This should be used in place of previous Montalva et al. (2016)
    implementation, as coefficients and model changed at the point of
    publication
    """
    def _compute_magnitude_term(self, C, dc1, mag):
        """
        Computes the magnitude scaling term given by equations (2) and (3)
        corrected by a local adjustment factor. Modified from original
        Abrahamson et al (2015) implementation as theta4 and theta5 are now
        period-dependent, whilst theta13 is now zero
        """
        base = C['theta1'] + (C['theta4'] * dc1)
        dmag = self.CONSTS["C1"] + dc1
        if mag > dmag:
            f_mag = C['theta5'] * (mag - dmag)
        else:
            f_mag = C['theta4'] * (mag - dmag)
        return base + f_mag
    def _compute_distance_term(self, C, mag, dists):
        """
        Computes the distance scaling term, as contained within equation (4).
        Note this is overwriting the Abrahamson et al (2016) version as
        theta3 is now period dependent
        """
        return (C['theta2'] + C['theta3'] * (mag - self.CONSTS["C1"])) *\
            
np.log(dists.rrup + self.CONSTS['c4'] * np.exp((mag - 6.) *
                   self.CONSTS['theta9'])) + (C['theta6'] * dists.rrup)
    # Coefficients table taken from electronic supplement to Montalva et al.
    # (2017)
    COEFFS = CoeffsTable(sa_damping=5, table="""\
    imt       vlin       b        theta1         theta2        theta3         theta4         theta5         theta6   theta7  theta8      theta10       theta11        theta12        theta13        theta14  theta15 theta16           phi           tau         sigma       phi_S2S
    pga      865.1  -1.186    5.87504394    -1.75359772    0.13125248     0.80276784    -0.33486952    -0.00039095   1.0988   -1.42   4.53143081    0.00567350     1.01494528     0.00000000    -0.73080261   0.9969   -1.00    0.69118080    0.47462209    0.83844918    0.56436373
    0.010    865.1  -1.186    5.87504394    -1.75359772    0.13125248     0.80276784    -0.33486952    -0.00039095   1.0988   -1.42   4.53143081    0.00567350     1.01494528     0.00000000    -0.73080261   0.9969   -1.00    0.69118080    0.47462209    0.83844918    0.56436373
    0.020    865.1  -1.186    5.97631438    -1.77010766    0.12246057     0.84131709    -0.28054559    -0.00038903   1.0988   -1.42   4.57416129    0.00565448     1.03738201     0.00000000    -0.73868917   0.9969   -1.00    0.69938258    0.47631913    0.84617723    0.57187735
    0.050   1053.5  -1.346    7.45297044    -2.03336398    0.08332151     1.03131243    -0.03954116     0.00000000   1.2536   -1.65   4.56070915    0.00848068     1.31034079     0.00000000    -0.69848828   1.1030   -1.18    0.70173433    0.53776165    0.88409200    0.57850117
    0.075   1085.7  -1.471    8.04759521    -2.10610081    0.08012671     1.03436999    -0.01295063    -0.00009638   1.4175   -1.80   4.36639286    0.00921589     1.48158019     0.00000000    -0.65335577   1.2732   -1.36    0.71412373    0.56188074    0.90867082    0.59936738
    0.100   1032.5  -1.624    7.76085108    -1.99370934    0.07303120     1.07565004     0.00758131    -0.00078515   1.3997   -1.80   3.90922953    0.00629627     1.65618649     0.00000000    -0.55051160   1.3042   -1.36    0.74112800    0.52707475    0.90943856    0.63409914
    0.150    877.6  -1.931    6.17191900    -1.58654201    0.05481839     1.17061492     0.10490549    -0.00267532   1.3582   -1.69   3.06236311    0.00558843     1.93944484     0.00000000    -0.42997222   1.2600   -1.30    0.74606525    0.50642417    0.90170882    0.63021739
    0.200    748.2  -2.188    4.83403302    -1.29711030    0.05249728     1.20531288     0.17968066    -0.00337590   1.1648   -1.49   3.50112817    0.00319554     2.08901131     0.00000000    -0.53087673   1.2230   -1.25    0.74515270    0.44618739    0.86852504    0.61699385
    0.250    654.3  -2.381    4.42687615    -1.18774055    0.02995137     1.37607187     0.22912175    -0.00355237   0.9940   -1.30   3.62815675    0.00181700     2.25003086     0.00000000    -0.58085678   1.1600   -1.17    0.72855743    0.45040229    0.85653847    0.58609155
    0.300    587.1  -2.518    4.57008643    -1.24895678    0.03865827     1.34990775     0.15592549    -0.00244847   0.8821   -1.18   3.87633808    0.00212947     2.28338700     0.00000000    -0.66280655   1.0500   -1.06    0.72093248    0.42549471    0.83713164    0.57014335
    0.400    503.0  -2.657    3.98311294    -1.13377346    0.04682762     1.37953880     0.11670946    -0.00207613   0.7046   -0.98   4.03388062    0.00068979     2.31408730     0.00000000    -0.72244113   0.8000   -0.78    0.71005053    0.42945015    0.82981877    0.54795548
    0.500    456.6  -2.669    4.86034340    -1.38019755    0.03822425     1.51949871     0.18347677    -0.00001896   0.5799   -0.82   4.31418239    0.00064780     2.33333479     0.00000000    -0.79644275   0.6620   -0.62    0.66934213    0.43333698    0.79737057    0.49113105
    0.600    430.3  -2.599    4.67510367    -1.35362409    0.02523729     1.66662746     0.21967977     0.00000000   0.5021   -0.70   4.75196667    0.00087070     2.23421777     0.00000000    -0.90120145   0.5800   -0.50    0.66733247    0.44599448    0.80264793    0.49077603
    0.750    410.5  -2.401    4.30862113    -1.30799859    0.00995253     1.85625091     0.29782648     0.00000000   0.3687   -0.54   4.70451938   -0.00031282     2.05217228     0.00000000    -0.89829099   0.4800   -0.34    0.66329494    0.46723155    0.81133563    0.48213254
    1.000    400.0  -1.955    3.57339281    -1.23082022    0.03605351     1.81217177     0.24372341     0.00000000   0.1746   -0.34   4.56020155   -0.00101097     1.63506217     0.00000000    -0.87330858   0.3300   -0.14    0.63504015    0.50143305    0.80914220    0.45955396
    1.500    400.0  -1.025    2.92216459    -1.18750273    0.02768934     2.03469107     0.22521403    -0.00009996  -0.0820   -0.05   4.83342978    0.00009741     0.69338467     0.00000000    -0.94685865   0.3100    0.00    0.60012607    0.51633193    0.79167542    0.42572864
    2.000    400.0  -0.299    2.39779653    -1.16319283    0.04011300     2.04340485     0.27382886    -0.00033356  -0.2821    0.12   4.59028522    0.00108512    -0.09761879     0.00000000    -0.90845421   0.3000    0.00    0.56961713    0.50688464    0.76249309    0.40178822
    2.500    400.0   0.000    1.64147667    -1.06543862    0.08310064     1.88987024     0.18739875    -0.00121364  -0.4108    0.25   4.13415056    0.00035459    -0.34931995     0.00000000    -0.80518214   0.3000    0.00    0.55384735    0.51465398    0.75605265    0.39825312
    3.000    400.0   0.000    1.66482796    -1.12677535    0.09403648     1.90503920     0.13268085    -0.00087595  -0.4466    0.30   4.18978319    0.00072950    -0.33269783     0.00000000    -0.81689247   0.3000    0.00    0.53658882    0.50365207    0.73593000    0.38493023
    4.000    400.0   0.000    0.90564754    -1.07619985    0.13838017     1.71178342     0.01379686    -0.00061861  -0.4344    0.30   4.50906779    0.00084112    -0.41320697     0.00000000    -0.87331394   0.3000    0.00    0.51345287    0.45311429    0.68479662    0.35578953
    5.000    400.0   0.000    0.61234440    -1.13079589    0.15259121     1.59358719     0.06464958     0.00000000  -0.4368    0.30   4.56385964    0.00068188    -0.42395126     0.00000000    -0.87800447   0.3000    0.00    0.51417184    0.43900131    0.67608789    0.34990851
    6.000    400.0   0.000    0.32672294    -1.15734380    0.12420910     1.69183532     0.32368231     0.00000000  -0.4586    0.30   4.55836575    0.00137322    -0.38759507     0.00000000    -0.88436295   0.3000    0.00    0.49080507    0.42084190    0.64652728    0.32047977
    7.500    400.0   0.000   -0.24139803    -1.14070070    0.10950824     1.71125604     0.60252124     0.00000000  -0.4433    0.30   5.08281865    0.00167053    -0.32638288     0.00000000    -0.98803311   0.3000    0.00    0.47063810    0.41701232    0.62880800    0.29895226
    10.00    400.0   0.000   -0.96313983    -1.09295336    0.11343926     1.67160339     0.77620830     0.00000000  -0.4828    0.30   5.49692364   -0.00070392    -0.25811162     0.00000000    -1.05008478   0.3000    0.00    0.46023151    0.38872242    0.60242690    0.28453650
    """)
    # Theoretically identical to the original Abrahamson et al. (2015)
    # correction, but in any case taken from Montalva et al. (2017) Matlab
    # code to ensure consistency with author's implementation
    COEFFS_MAG_SCALE = CoeffsTable(sa_damping=5, table="""\
    imt              dc1
    pga      0.200000000
    0.010    0.200000000
    0.020    0.200000000
    0.050    0.200000000
    0.075    0.200000000
    0.100    0.200000000
    0.150    0.200000000
    0.200    0.200000000
    0.250    0.200000000
    0.300    0.200000000
    0.400    0.143682921
    0.500    0.100000000
    0.600    0.073696559
    0.750    0.041503750
    1.000    0.000000000
    1.500   -0.058496250
    2.000   -0.100000000
    2.500   -0.155033971
    3.000   -0.200000000
    4.000   -0.200000000
    5.000   -0.200000000
    6.000   -0.200000000
    7.500   -0.200000000
    10.00   -0.200000000
    5.000   -0.200000000
    6.000   -0.200000000
    7.500   -0.200000000
    10.00   -0.200000000
    """)
    CONSTS = {
        # Period-Independent Coefficients (Table 2 of BC Hydro)
        'n': 1.18,
        'c': 1.88,
        'c4': 10.0,
        'C1': 7.2,
        'theta9': 0.4
        } 
[docs]class MontalvaEtAl2017SSlab(AbrahamsonEtAl2015SSlab):
    """
    Adaptation of the Abrahamson et al. (2015) BC Hydro subduction in-slab
    GMPE, calibrated to Chilean strong motion data
    """
    def _compute_magnitude_term(self, C, dc1, mag):
        """
        Computes the magnitude scaling term given by equations (2) and (3),
        corrected by a local adjustment factor - see documentation for
        interface version for changes
        """
        base = C['theta1'] + (C['theta4'] * dc1)
        dmag = self.CONSTS["C1"] + dc1
        if mag > dmag:
            f_mag = C['theta5'] * (mag - dmag)
        else:
            f_mag = C['theta4'] * (mag - dmag)
        return base + f_mag
    def _compute_distance_term(self, C, mag, dists):
        """
        Computes the distance scaling term, as contained within equation (4)
        """
        return ((C['theta2'] + C['theta14'] + C['theta3'] *
                (mag - self.CONSTS["C1"])) *
                np.log(dists.rhypo + self.CONSTS['c4'] *
                np.exp((mag - 6.) * self.CONSTS['theta9'])) +
                (C['theta6'] * dists.rhypo)) + C["theta10"]
    COEFFS = CoeffsTable(sa_damping=5, table="""\
    imt       vlin       b        theta1         theta2        theta3         theta4         theta5         theta6   theta7  theta8      theta10      theta11        theta12        theta13        theta14  theta15 theta16           phi           tau         sigma       phi_S2S
    pga      865.1  -1.186    5.87504394    -1.75359772    0.13125248     0.80276784    -0.33486952    -0.00039095   1.0988   -1.42   4.53143081    0.00567350     1.01494528     0.00000000    -0.73080261   0.9969   -1.00    0.69118080    0.47462209    0.83844918    0.56436373
    0.010    865.1  -1.186    5.87504394    -1.75359772    0.13125248     0.80276784    -0.33486952    -0.00039095   1.0988   -1.42   4.53143081    0.00567350     1.01494528     0.00000000    -0.73080261   0.9969   -1.00    0.69118080    0.47462209    0.83844918    0.56436373
    0.020    865.1  -1.186    5.97631438    -1.77010766    0.12246057     0.84131709    -0.28054559    -0.00038903   1.0988   -1.42   4.57416129    0.00565448     1.03738201     0.00000000    -0.73868917   0.9969   -1.00    0.69938258    0.47631913    0.84617723    0.57187735
    0.050   1053.5  -1.346    7.45297044    -2.03336398    0.08332151     1.03131243    -0.03954116     0.00000000   1.2536   -1.65   4.56070915    0.00848068     1.31034079     0.00000000    -0.69848828   1.1030   -1.18    0.70173433    0.53776165    0.88409200    0.57850117
    0.075   1085.7  -1.471    8.04759521    -2.10610081    0.08012671     1.03436999    -0.01295063    -0.00009638   1.4175   -1.80   4.36639286    0.00921589     1.48158019     0.00000000    -0.65335577   1.2732   -1.36    0.71412373    0.56188074    0.90867082    0.59936738
    0.100   1032.5  -1.624    7.76085108    -1.99370934    0.07303120     1.07565004     0.00758131    -0.00078515   1.3997   -1.80   3.90922953    0.00629627     1.65618649     0.00000000    -0.55051160   1.3042   -1.36    0.74112800    0.52707475    0.90943856    0.63409914
    0.150    877.6  -1.931    6.17191900    -1.58654201    0.05481839     1.17061492     0.10490549    -0.00267532   1.3582   -1.69   3.06236311    0.00558843     1.93944484     0.00000000    -0.42997222   1.2600   -1.30    0.74606525    0.50642417    0.90170882    0.63021739
    0.200    748.2  -2.188    4.83403302    -1.29711030    0.05249728     1.20531288     0.17968066    -0.00337590   1.1648   -1.49   3.50112817    0.00319554     2.08901131     0.00000000    -0.53087673   1.2230   -1.25    0.74515270    0.44618739    0.86852504    0.61699385
    0.250    654.3  -2.381    4.42687615    -1.18774055    0.02995137     1.37607187     0.22912175    -0.00355237   0.9940   -1.30   3.62815675    0.00181700     2.25003086     0.00000000    -0.58085678   1.1600   -1.17    0.72855743    0.45040229    0.85653847    0.58609155
    0.300    587.1  -2.518    4.57008643    -1.24895678    0.03865827     1.34990775     0.15592549    -0.00244847   0.8821   -1.18   3.87633808    0.00212947     2.28338700     0.00000000    -0.66280655   1.0500   -1.06    0.72093248    0.42549471    0.83713164    0.57014335
    0.400    503.0  -2.657    3.98311294    -1.13377346    0.04682762     1.37953880     0.11670946    -0.00207613   0.7046   -0.98   4.03388062    0.00068979     2.31408730     0.00000000    -0.72244113   0.8000   -0.78    0.71005053    0.42945015    0.82981877    0.54795548
    0.500    456.6  -2.669    4.86034340    -1.38019755    0.03822425     1.51949871     0.18347677    -0.00001896   0.5799   -0.82   4.31418239    0.00064780     2.33333479     0.00000000    -0.79644275   0.6620   -0.62    0.66934213    0.43333698    0.79737057    0.49113105
    0.600    430.3  -2.599    4.67510367    -1.35362409    0.02523729     1.66662746     0.21967977     0.00000000   0.5021   -0.70   4.75196667    0.00087070     2.23421777     0.00000000    -0.90120145   0.5800   -0.50    0.66733247    0.44599448    0.80264793    0.49077603
    0.750    410.5  -2.401    4.30862113    -1.30799859    0.00995253     1.85625091     0.29782648     0.00000000   0.3687   -0.54   4.70451938   -0.00031282     2.05217228     0.00000000    -0.89829099   0.4800   -0.34    0.66329494    0.46723155    0.81133563    0.48213254
    1.000    400.0  -1.955    3.57339281    -1.23082022    0.03605351     1.81217177     0.24372341     0.00000000   0.1746   -0.34   4.56020155   -0.00101097     1.63506217     0.00000000    -0.87330858   0.3300   -0.14    0.63504015    0.50143305    0.80914220    0.45955396
    1.500    400.0  -1.025    2.92216459    -1.18750273    0.02768934     2.03469107     0.22521403    -0.00009996  -0.0820   -0.05   4.83342978    0.00009741     0.69338467     0.00000000    -0.94685865   0.3100    0.00    0.60012607    0.51633193    0.79167542    0.42572864
    2.000    400.0  -0.299    2.39779653    -1.16319283    0.04011300     2.04340485     0.27382886    -0.00033356  -0.2821    0.12   4.59028522    0.00108512    -0.09761879     0.00000000    -0.90845421   0.3000    0.00    0.56961713    0.50688464    0.76249309    0.40178822
    2.500    400.0   0.000    1.64147667    -1.06543862    0.08310064     1.88987024     0.18739875    -0.00121364  -0.4108    0.25   4.13415056    0.00035459    -0.34931995     0.00000000    -0.80518214   0.3000    0.00    0.55384735    0.51465398    0.75605265    0.39825312
    3.000    400.0   0.000    1.66482796    -1.12677535    0.09403648     1.90503920     0.13268085    -0.00087595  -0.4466    0.30   4.18978319    0.00072950    -0.33269783     0.00000000    -0.81689247   0.3000    0.00    0.53658882    0.50365207    0.73593000    0.38493023
    4.000    400.0   0.000    0.90564754    -1.07619985    0.13838017     1.71178342     0.01379686    -0.00061861  -0.4344    0.30   4.50906779    0.00084112    -0.41320697     0.00000000    -0.87331394   0.3000    0.00    0.51345287    0.45311429    0.68479662    0.35578953
    5.000    400.0   0.000    0.61234440    -1.13079589    0.15259121     1.59358719     0.06464958     0.00000000  -0.4368    0.30   4.56385964    0.00068188    -0.42395126     0.00000000    -0.87800447   0.3000    0.00    0.51417184    0.43900131    0.67608789    0.34990851
    6.000    400.0   0.000    0.32672294    -1.15734380    0.12420910     1.69183532     0.32368231     0.00000000  -0.4586    0.30   4.55836575    0.00137322    -0.38759507     0.00000000    -0.88436295   0.3000    0.00    0.49080507    0.42084190    0.64652728    0.32047977
    7.500    400.0   0.000   -0.24139803    -1.14070070    0.10950824     1.71125604     0.60252124     0.00000000  -0.4433    0.30   5.08281865    0.00167053    -0.32638288     0.00000000    -0.98803311   0.3000    0.00    0.47063810    0.41701232    0.62880800    0.29895226
    10.00    400.0   0.000   -0.96313983    -1.09295336    0.11343926     1.67160339     0.77620830     0.00000000  -0.4828    0.30   5.49692364   -0.00070392    -0.25811162     0.00000000    -1.05008478   0.3000    0.00    0.46023151    0.38872242    0.60242690    0.28453650
    """)
    CONSTS = {
        # Period-Independent Coefficients (Table 2 of BC Hydro)
        'n': 1.18,
        'c': 1.88,
        'c4': 10.0,
        'C1': 7.2,
        'theta9': 0.4
        }