# -*- coding: utf-8 -*-
# vim: tabstop=4 shiftwidth=4 softtabstop=4
#
# Copyright (C) 2012-2017 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:`ZhaoEtAl2016Asc`,
               :class:`ZhaoEtAl2016AscSiteSigma`,
               :class:`ZhaoEtAl2016UpperMantle`,
               :class:`ZhaoEtAl2016UpperMantleSiteSigma`,
               :class:`ZhaoEtAl2016SInter`,
               :class:`ZhaoEtAl2016SInterSiteSigma`,
               :class:`ZhaoEtAl2016SSlab`,
               :class:`ZhaoEtAl2016SSlabSiteSigma`
               
"""
from __future__ import division
import numpy as np
from openquake.hazardlib.gsim.base import GMPE, CoeffsTable
from openquake.hazardlib import const
from openquake.hazardlib.imt import PGA, SA
[docs]class ZhaoEtAl2016Asc(GMPE):
    """
    Implements the GMPE of Zhao et al (2016a) for shallow crustal and upper
    mantle events from Japan. Only the shallow crustal version is implemented
    here.
    Zhao, J. X., Zhou, S., Zhou, J., Zhao, C., Zhang, H., Zhang, Y., Gao, P.,
    Lan, X., Rhoades, D. A., Fukushima, Y., Somerville, P., Irikura, K.,
    (2016c), "Ground-Motion Prediction Equations for Shallow Crustal and
    Uppe-Mantle Earthquakes in Japan Using Site Class and Simple Geometric
    Attenuation Functions", Bulletin of the Seismological Society of America,
    106(4), 1518-1534
    Main version with standard deviations independent of site term
    """
    #: Supported tectonic region type is active shallow crust
    DEFINED_FOR_TECTONIC_REGION_TYPE = const.TRT.ACTIVE_SHALLOW_CRUST
    #: Supported intensity measure types are spectral acceleration,
    #: and peak ground acceleration
    DEFINED_FOR_INTENSITY_MEASURE_TYPES = set([
        PGA,
        SA
    ])
    #: Supported intensity measure component is geometric mean
    #: of two horizontal components :
    DEFINED_FOR_INTENSITY_MEASURE_COMPONENT = const.IMC.AVERAGE_HORIZONTAL
    #: Supported standard deviation types are inter-event, intra-event
    #: and total
    DEFINED_FOR_STANDARD_DEVIATION_TYPES = set([
        const.StdDev.TOTAL,
        const.StdDev.INTER_EVENT,
        const.StdDev.INTRA_EVENT
    ])
    #: Required site parameters is Vs30 (converted to site class)
    REQUIRES_SITES_PARAMETERS = set(('vs30', ))
    #: Required rupture parameters are magnitude, top-of-rupture depth and
    #: style of faulting (rake)
    REQUIRES_RUPTURE_PARAMETERS = set(('mag', 'rake', 'ztor'))
    #: Required distance measure is Rrup and Rvolc
    REQUIRES_DISTANCES = set(('rrup', 'rvolc'))
[docs]    def get_mean_and_stddevs(self, sites, rup, dists, imt, stddev_types):
        """
        See :meth:`superclass method
        <.base.GroundShakingIntensityModel.get_mean_and_stddevs>`
        for spec of input and result values.
        """
        # extracting dictionary of coefficients specific to required
        # intensity measure type.
        C = self.COEFFS[imt]
        C_SITE = self.SITE_COEFFS[imt]
        s_c, idx = self._get_site_classification(sites.vs30)
        sa_rock = (self.get_magnitude_scaling_term(C, rup) +
                   self.get_sof_term(C, rup) +
                   self.get_depth_term(C, rup) +
                   self.get_distance_term(C, dists, rup))
        sa_soil = self.add_site_amplification(C, C_SITE, sites,
                                              sa_rock, idx, rup)
        stddevs = self.get_stddevs(C, sites.vs30.shape, idx, stddev_types)
        return sa_soil, stddevs 
[docs]    def get_magnitude_scaling_term(self, C, rup):
        """
        Returns the magnitude scaling term in equations 1 and 2
        """
        if rup.mag <= self.CONSTANTS["m_c"]:
            return C["ccr"] * rup.mag
        else:
            return (C["ccr"] * self.CONSTANTS["m_c"]) +\
                
(C["dcr"] * (rup.mag - self.CONSTANTS["m_c"])) 
[docs]    def get_sof_term(self, C, rup):
        """
        Shallow crustal faults have a style-of-faulting dependence as
        normal faulting is found to produce higher ground motion (equation 1)
        """
        if rup.rake <= -45.0 and rup.rake >= -135.0:
            # Normal faulting
            return C["FN_CR"]
        else:
            # No adjustment for strike-slip or reverse faulting
            return 0.0 
[docs]    def get_depth_term(self, C, rup):
        """
        Returns the top-of-rupture depth scaling (equation 1)
        """
        return C["bcr"] * rup.ztor 
[docs]    def get_distance_term(self, C, dists, rup):
        """
        Returns the distance scaling term defined in equation 3
        """
        x_ij = dists.rrup
        gn_exp = np.exp(C["c1"] + 6.5 * C["c2"])
        # Geometric attenuation scaling described in equation 6
        g_n = C["gcrN"] * np.log(self.CONSTANTS["xcro"] + 30. + gn_exp) *\
            
np.ones_like(x_ij)
        idx = x_ij <= 30.0
        if np.any(idx):
            g_n[idx] = C["gcrN"] * np.log(self.CONSTANTS["xcro"] +
                                          x_ij[idx] + gn_exp)
        # equation 5
        c_m = min(rup.mag, self.CONSTANTS["m_c"])
        # equation 4
        r_ij = self.CONSTANTS["xcro"] + x_ij + np.exp(C["c1"] + C["c2"] * c_m)
        return C["gcr"] * np.log(r_ij) + C["gcrL"] * np.log(x_ij + 200.0) +\
            
g_n + C["ecr"] * x_ij + C["ecrV"] * dists.rvolc + C["gamma_S"] 
[docs]    def add_site_amplification(self, C, C_SITE, sites, sa_rock, idx, rup):
        """
        Applies the site amplification scaling defined in equations from 10
        to 15
        """
        n_sites = sites.vs30.shape
        # Convert from reference rock to hard rock
        hard_rock_sa = sa_rock - C["lnSC1AM"]
        # Gets the elastic site amplification ratio
        ln_a_n_max = self._get_ln_a_n_max(C, n_sites, idx, rup)
        # Retrieves coefficients needed to determine smr
        sreff, sreffc, f_sr = self._get_smr_coeffs(C, C_SITE, idx, n_sites,
                                                   hard_rock_sa)
        snc = np.zeros(n_sites)
        alpha = self.CONSTANTS["alpha"]
        beta = self.CONSTANTS["beta"]
        smr = np.zeros(n_sites)
        sa_soil = hard_rock_sa + ln_a_n_max
        # Get lnSF
        ln_sf = self._get_ln_sf(C, C_SITE, idx, n_sites, rup)
        lnamax_idx = np.exp(ln_a_n_max) < 1.25
        not_lnamax_idx = np.logical_not(lnamax_idx)
        for i in range(1, 5):
            idx_i = idx[i]
            if not np.any(idx_i):
                # No sites of the given site class
                continue
            idx2 = np.logical_and(lnamax_idx, idx_i)
            if np.any(idx2):
                # Use the approximate method for SRC and SNC
                c_a = C_SITE["LnAmax1D{:g}".format(i)] /\
                    
(np.log(beta) - np.log(sreffc[idx2] ** alpha + beta))
                c_b = -c_a * np.log(sreffc[idx2] ** alpha + beta)
                snc[idx2] = np.exp((c_a * (alpha - 1.) *
                                   np.log(beta) * np.log(10.0 * beta) -
                                   np.log(10.0) * (c_b + ln_sf[idx2])) /
                                   (c_a * (alpha * np.log(10.0 * beta) -
                                    np.log(beta))))
            # For the cases when ln_a_n_max >= 1.25
            idx2 = np.logical_and(not_lnamax_idx, idx_i)
            if np.any(idx2):
                snc[idx2] = (np.exp((ln_a_n_max[idx2] *
                             np.log(sreffc[idx2] ** alpha + beta) -
                             ln_sf[idx2] * np.log(beta)) /
                             C_SITE["LnAmax1D{:g}".format(i)]) - beta) **\
                             
(1.0 / alpha)
            smr[idx_i] = sreff[idx_i] * (snc[idx_i] / sreffc[idx_i]) *\
                
f_sr[idx_i]
            # For the cases when site class = i and SMR != 0
            idx2 = np.logical_and(idx_i, np.fabs(smr) > 0.0)
            if np.any(idx2):
                sa_soil[idx2] += (-C_SITE["LnAmax1D{:g}".format(i)] *
                                  (np.log(smr[idx2] ** alpha + beta) -
                                  np.log(beta)) /
                                  (np.log(sreffc[idx2] ** alpha + beta) -
                                   np.log(beta)))
        return sa_soil 
    def _get_smr_coeffs(self, C, C_SITE, idx, n_sites, sa_rock):
        """
        Returns the SReff and SReffC terms needed for equation 14 and 15
        """
        # Get SR
        sreff = np.zeros(n_sites)
        sreffc = np.zeros(n_sites)
        f_sr = np.zeros(n_sites)
        for i in range(1, 5):
            sreff[idx[i]] += (np.exp(sa_rock[idx[i]]) * self.IMF[i])
            sreffc[idx[i]] += (C_SITE["Src1D{:g}".format(i)] * self.IMF[i])
            # Get f_SR
            f_sr[idx[i]] += C_SITE["fsr{:g}".format(i)]
        return sreff, sreffc, f_sr
    def _get_ln_a_n_max(self, C, n_sites, idx, rup):
        """
        Defines the rock site amplification defined in equations 10a and 10b
        """
        ln_a_n_max = C["lnSC1AM"] * np.ones(n_sites)
        for i in [2, 3, 4]:
            if np.any(idx[i]):
                ln_a_n_max[idx[i]] += C["S{:g}".format(i)]
        return ln_a_n_max
    def _get_ln_sf(self, C, C_SITE, idx, n_sites, rup):
        """
        Returns the log SF term required for equation 12
        """
        ln_sf = np.zeros(n_sites)
        for i in range(1, 5):
            ln_sf_i = (C["lnSC1AM"] - C_SITE["LnAmax1D{:g}".format(i)])
            if i > 1:
                ln_sf_i += C["S{:g}".format(i)]
            ln_sf[idx[i]] += ln_sf_i
        return ln_sf
    def _get_site_classification(self, vs30):
        """
        Define the site class categories based on Vs30. Returns a
        vector of site class values and a dictionary containing logical
        vectors for each of the site classes
        """
        site_class = np.ones(vs30.shape, dtype=int)
        idx = {}
        idx[1] = vs30 > 600.
        idx[2] = np.logical_and(vs30 > 300., vs30 <= 600.)
        idx[3] = np.logical_and(vs30 > 200., vs30 <= 300.)
        idx[4] = vs30 <= 200.
        for i in [2, 3, 4]:
            site_class[idx[i]] = i
        return site_class, idx
[docs]    def get_stddevs(self, C, n_sites, idx, stddev_types):
        """
        Retuns the standard deviation
        """
        stddevs = []
        phi = C["sigma"] + np.zeros(n_sites)
        tau = C["tau"] + np.zeros(n_sites)
        for stddev_type in stddev_types:
            assert stddev_type in self.DEFINED_FOR_STANDARD_DEVIATION_TYPES
            if stddev_type == const.StdDev.TOTAL:
                stddevs.append(np.sqrt(phi ** 2. + tau ** 2.))
            elif stddev_type == const.StdDev.INTRA_EVENT:
                stddevs.append(phi)
            elif stddev_type == const.StdDev.INTER_EVENT:
                stddevs.append(tau)
        return stddevs 
    # Coefficients taken from Excel spreadsheet provided by the author
    COEFFS = CoeffsTable(sa_damping=5, table="""\
    imt        c1     c2      ccr      cum      dcr              FN_CR    FRV_UM              FN_UM  FUM                 bcr       gcr       gUM      gcrN               gcrL       ecr                 eum      ecrV              gamma_S  lnSC1AM         S2        S3        S4  sigma    tau  sigma_T  sc1_sigma_S  sc1_tau_S  sc1_sigma_ST   sc2_sigma_S  sc2_tau_S  sc2_sigma_ST  sc3_sigma_S  sc3_tau_S  sc3_sigma_ST  sc4_sigma_S  sc4_tau_S  sc4_sigma_ST
    pga    -3.224  0.900  1.07312  1.07312  0.20000  0.312820000000000  -0.20236  0.251935430429416  0.0   0.009070000000000  -1.26034  -1.09985  -0.49919  1.265640000000000  -0.00794  -0.010830000000000  -0.00628   -9.087242726439600    0.323    0.28877   0.12210   0.20813  0.556  0.391    0.680       0.4153     0.3581        0.5484        0.4363     0.3620        0.5669       0.4235     0.3486        0.5485       0.4426     0.2778        0.5225
    0.005  -3.224  0.900  1.07312  1.07312  0.20000  0.312820000000000  -0.20236  0.251935430429416  0.0   0.009070000000000  -1.26034  -1.09985  -0.49919  1.265640000000000  -0.00794  -0.010830000000000  -0.00628   -9.087242726439600    0.323    0.28877   0.12210   0.20813  0.556  0.391    0.680       0.4153     0.3581        0.5484        0.4363     0.3620        0.5669       0.4235     0.3486        0.5485       0.4426     0.2778        0.5225
    0.010  -3.357  0.909  1.07850  1.07850  0.20000  0.315680000000000  -0.21425  0.258372637504816  0.0   0.009070000000000  -1.26949  -1.10720  -0.48684  1.241487880676370  -0.00772  -0.010580000000000  -0.00629   -9.052058022318450    0.205    0.29991   0.10321   0.21925  0.556  0.390    0.679       0.4142     0.3581        0.5475        0.4356     0.3627        0.5668       0.4230     0.3482        0.5479       0.4419     0.2804        0.5233
    0.020  -3.552  0.927  1.07254  1.07254  0.20000  0.318540000000000  -0.22125  0.260697166781076  0.0   0.009070000000000  -1.28775  -1.11766  -0.44645  1.198941940195550  -0.00756  -0.010505216376958  -0.00634   -8.857750749461700    0.083    0.29778   0.11109   0.21713  0.555  0.396    0.682       0.4123     0.3581        0.5460        0.4344     0.3646        0.5671       0.4226     0.3483        0.5477       0.4418     0.2823        0.5243
    0.030  -3.640  0.937  1.05736  1.05736  0.20000  0.320220000000000  -0.22306  0.260150407731831  0.0   0.009070000000000  -1.29619  -1.11392  -0.42175  1.186537103020870  -0.00788  -0.011005243836384  -0.00647   -8.627942448779750    0.041    0.22535   0.08972   0.15948  0.553  0.408    0.687       0.4089     0.3625        0.5465        0.4307     0.3580        0.5601       0.4207     0.3544        0.5501       0.4415     0.2857        0.5259
    0.040  -3.758  0.944  1.03568  1.03568  0.20000  0.321410000000000  -0.22334  0.258909018258196  0.0   0.009070000000000  -1.25147  -1.07971  -0.37622  1.142133802990220  -0.00863  -0.011487892527436  -0.00681   -8.398219253745690    0.034    0.15865   0.04037   0.07029  0.558  0.438    0.710       0.4072     0.3832        0.5591        0.4275     0.3666        0.5632       0.4208     0.3544        0.5501       0.4435     0.2881        0.5289
    0.050  -3.826  0.948  1.00578  1.00578  0.20000  0.321850000000000  -0.22297  0.257458255516038  0.0   0.009070000000000  -1.14724  -0.98606  -0.43576  1.141373265957230  -0.00988  -0.012291799210266  -0.00710   -8.153070000000000    0.046    0.08257  -0.05934  -0.03529  0.564  0.460    0.728       0.4059     0.4052        0.5735        0.4294     0.3760        0.5708       0.4168     0.3508        0.5448       0.4446     0.2945        0.5332
    0.060  -3.890  0.956  0.98413  0.98413  0.20000  0.324710000000000  -0.22229  0.255956496918906  0.0   0.009070000000000  -1.09126  -0.93901  -0.46789  1.157491249527060  -0.01075  -0.012739417109939  -0.00724   -8.003270000000000    0.069    0.05542  -0.10956  -0.09017  0.577  0.481    0.751       0.4066     0.4341        0.5948        0.4304     0.3911        0.5816       0.4156     0.3453        0.5404       0.4415     0.3082        0.5384
    0.070  -3.965  0.967  0.98059  0.98059  0.20000  0.328600000000000  -0.22145  0.254464785542036  0.0   0.009070000000000  -1.04676  -0.90036  -0.50260  1.186791451212470  -0.01130  -0.013080135792042  -0.00734   -8.047830000000000    0.098    0.04177  -0.13262  -0.09583  0.599  0.488    0.772       0.4171     0.4517        0.6148        0.4329     0.4057        0.5933       0.4215     0.3605        0.5546       0.4407     0.3378        0.5552
    0.080  -4.055  0.980  0.98634  0.98634  0.20000  0.329844812501483  -0.22053  0.253008191936176  0.0   0.009070000000000  -1.01364  -0.87064  -0.53802  1.223378486073060  -0.01164  -0.013312834482819  -0.00741   -8.196910000000000    0.132    0.06040  -0.13537  -0.07321  0.616  0.481    0.782       0.4255     0.4745        0.6374        0.4361     0.4247        0.6088       0.4220     0.3821        0.5693       0.4351     0.3557        0.5619
    0.090  -4.153  0.995  0.99121  0.99121  0.20000  0.336373431249984  -0.21956  0.251596694854290  0.0   0.009070000000000  -0.99232  -0.85080  -0.57301  1.264040913700510  -0.01182  -0.013454810030999  -0.00746   -8.350790000000000    0.169    0.09304  -0.12513  -0.03629  0.629  0.477    0.789       0.4315     0.4884        0.6517        0.4417     0.4445        0.6266       0.4161     0.3958        0.5743       0.4374     0.3784        0.5784
    0.100  -4.255  1.009  1.00033  1.00033  0.20000  0.340964949991461  -0.21858  0.250233442665255  0.0   0.009070000000000  -0.98315  -0.84175  -0.60839  1.305257984164180  -0.01184  -0.013478869951054  -0.00749   -8.524300000000000    0.208    0.15210  -0.07090   0.01110  0.641  0.460    0.789       0.4371     0.4932        0.6590        0.4478     0.4485        0.6338       0.4241     0.4229        0.5989       0.4402     0.4182        0.6072
    0.120  -4.466  1.040  1.03440  1.03440  0.20000  0.345623419543235  -0.21661  0.247649908306841  0.0   0.009579251858235  -0.97311  -0.82925  -0.67012  1.392835221341830  -0.01174  -0.013487990193394  -0.00751   -9.054780000000000    0.288    0.26161   0.00261   0.10298  0.657  0.437    0.789       0.4515     0.4927        0.6683        0.4476     0.4641        0.6448       0.4332     0.4768        0.6442       0.4594     0.4216        0.6236
    0.140  -4.677  1.070  1.08388  1.08388  0.20000  0.345964793275106  -0.21469  0.245243568556044  0.0   0.010548033973543  -0.98324  -0.83484  -0.72524  1.477695244453800  -0.01142  -0.013335243001700  -0.00748   -9.676400000000000    0.370    0.35467   0.11202   0.21434  0.663  0.414    0.782       0.4559     0.4906        0.6697        0.4553     0.4758        0.6586       0.4347     0.4592        0.6323       0.4697     0.3869        0.6085
    0.150  -4.781  1.085  1.10602  1.10602  0.20000  0.344999481637875  -0.21374  0.244100676565134  0.0   0.011218017682426  -0.99261  -0.84153  -0.74977  1.518814263594270  -0.01123  -0.013231344388198  -0.00746   -9.965950000000000    0.412    0.39410   0.15670   0.25574  0.666  0.402    0.778       0.4594     0.4815        0.6655        0.4547     0.4817        0.6624       0.4380     0.4519        0.6294       0.4707     0.3867        0.6092
    0.160  -4.883  1.100  1.12674  1.12674  0.20000  0.343465417412490  -0.21282  0.242994687815017  0.0   0.011700559401692  -1.00423  -0.85033  -0.77240  1.558838786529320  -0.01101  -0.013114569632387  -0.00743  -10.241600000000000    0.453    0.42523   0.19678   0.29811  0.671  0.384    0.773       0.4647     0.4725        0.6627        0.4607     0.4820        0.6668       0.4419     0.4617        0.6391       0.4744     0.3788        0.6071
    0.180  -5.085  1.129  1.16455  1.16455  0.20000  0.339107164829684  -0.21102  0.240884343952180  0.0   0.012332909878059  -1.03299  -0.87328  -0.81285  1.634757732666460  -0.01054  -0.012840476069927  -0.00735  -10.752000000000000    0.535    0.47642   0.27414   0.36360  0.680  0.380    0.779       0.4721     0.4640        0.6619        0.4697     0.4830        0.6737       0.4514     0.4660        0.6488       0.4784     0.3903        0.6174
    0.200  -5.233  1.151  1.19837  1.19837  0.20000  0.333545099152249  -0.20929  0.238895952015333  0.0   0.013457084876985  -1.06493  -0.89945  -0.84625  1.706045133394880  -0.01007  -0.012558176324852  -0.00725  -11.224920000000000    0.606    0.51169   0.33785   0.42568  0.692  0.359    0.780       0.4722     0.4708        0.6668        0.4800     0.4932        0.6882       0.4493     0.4452        0.6325       0.4825     0.4010        0.6274
    0.250  -5.229  1.151  1.27000  1.27000  0.20000  0.316942763583834  -0.20526  0.234370987754789  0.0   0.016170000000000  -1.15136  -0.97276  -0.90575  1.862468560694100  -0.00890  -0.011816876971470  -0.00696  -12.262750000000000    0.670    0.55177   0.47868   0.55643  0.694  0.340    0.773       0.4780     0.4650        0.6669        0.4882     0.5436        0.7306       0.4626     0.4192        0.6243       0.4843     0.3942        0.6244
    0.300  -5.226  1.151  1.32852  1.32852  0.20000  0.299124734648411  -0.20159  0.230357423625167  0.0   0.018310000000000  -1.23723  -1.04809  -0.93933  1.991624592628190  -0.00784  -0.011099993928613  -0.00661  -13.141810000000000    0.710    0.55325   0.57391   0.65844  0.688  0.344    0.770       0.4906     0.4595        0.6722        0.4991     0.5246        0.7241       0.4833     0.4356        0.6507       0.4930     0.3725        0.6179
    0.350  -5.223  1.151  1.37801  1.37801  0.20000  0.281669557686284  -0.19822  0.226742010930494  0.0   0.019800000000000  -1.31736  -1.12034  -0.95403  2.098225191698050  -0.00691  -0.010436248715154  -0.00624  -13.902540000000000    0.719    0.53555   0.63824   0.73536  0.675  0.353    0.762       0.4918     0.4432        0.6621        0.5043     0.4872        0.7012       0.4783     0.4689        0.6698       0.4914     0.3421        0.5988
    0.400  -5.221  1.151  1.42087  1.42087  0.20000  0.265209162746323  -0.19511  0.223445783566271  0.0   0.020780000000000  -1.38989  -1.18735  -0.95484  2.186300573524260  -0.00610  -0.009830759490494  -0.00586  -14.573550000000000    0.706    0.50855   0.67945   0.79334  0.667  0.363    0.759       0.4951     0.4296        0.6555        0.5074     0.4722        0.6931       0.4720     0.4821        0.6747       0.4783     0.3466        0.5907
    0.450  -5.218  1.151  1.45868  1.45868  0.20000  0.249966529741596  -0.19221  0.220411614509675  0.0   0.021380000000000  -1.45461  -1.24859  -0.94513  2.259336928898360  -0.00541  -0.009285306710044  -0.00548  -15.173840000000000    0.693    0.47913   0.70517   0.83853  0.665  0.359    0.756       0.4927     0.4310        0.6546        0.5074     0.4651        0.6883       0.4944     0.4638        0.6779       0.4787     0.3594        0.5986
    0.500  -5.216  1.151  1.49250  1.49250  0.19000  0.235980866829892  -0.18950  0.217596832776964  0.0   0.021680000000000  -1.51219  -1.30439  -0.92771  2.319726842585720  -0.00482  -0.008788091918160  -0.00511  -15.715670000000000    0.681    0.45094   0.72065   0.87505  0.664  0.361    0.756       0.4890     0.4323        0.6527        0.5149     0.4493        0.6834       0.4949     0.4327        0.6574       0.4764     0.3998        0.6220
    0.600  -5.213  1.151  1.55102  1.55102  0.17800  0.211571038601388  -0.18454  0.212501492886060  0.0   0.021610000000000  -1.60834  -1.40097  -0.87661  2.410718513737190  -0.00387  -0.007921609069809  -0.00439  -16.662190000000000    0.658    0.39849   0.72820   0.92621  0.669  0.362    0.761       0.4792     0.4402        0.6507        0.5177     0.4472        0.6841       0.4848     0.4577        0.6668       0.4854     0.4454        0.6588
    0.700  -5.210  1.151  1.60051  1.60051  0.16200  0.191334420072367  -0.18008  0.207971451817460  0.0   0.020940000000000  -1.68374  -1.48074  -0.81164  2.471787807358160  -0.00315  -0.007193263566848  -0.00374  -17.467280000000000    0.637    0.35254   0.71582   0.95627  0.670  0.370    0.765       0.4665     0.4390        0.6406        0.5044     0.4515        0.6770       0.4816     0.4712        0.6737       0.4707     0.4982        0.6854
    0.800  -5.208  1.151  1.64337  1.64337  0.14800  0.174557580328734  -0.17602  0.203882937318070  0.0   0.019870000000000  -1.74306  -1.54711  -0.73894  2.511003526994950  -0.00261  -0.006567782184498  -0.00315  -18.164530000000000    0.618    0.31707   0.69660   0.97619  0.674  0.378    0.773       0.4600     0.4491        0.6429        0.4954     0.4504        0.6696       0.4751     0.4622        0.6628       0.4837     0.5183        0.7089
    0.900  -5.206  1.151  1.68118  1.68118  0.13600  0.160616866070260  -0.17229  0.200149921480523  0.0   0.018540000000000  -1.78967  -1.60263  -0.66214  2.534178788957430  -0.00220  -0.006025164356083  -0.00261  -18.777980000000000    0.600    0.28896   0.67366   0.98819  0.673  0.386    0.775       0.4541     0.4579        0.6449        0.4834     0.4559        0.6645       0.4554     0.4781        0.6603       0.4729     0.5358        0.7146
    1.000  -5.204  1.151  1.71500  1.71500  0.12500  0.149000000000001  -0.16883  0.196710000000000  0.0   0.017040000000000  -1.82603  -1.64914  -0.58347  2.545383253429940  -0.00189  -0.005550701319875  -0.00214  -19.325620000000000    0.583    0.26685   0.64985   0.99485  0.670  0.390    0.776       0.4475     0.4663        0.6463        0.4720     0.4593        0.6586       0.4415     0.4743        0.6480       0.4709     0.5240        0.7045
    1.250  -5.200  1.151  1.78663  1.78663  0.10100  0.127608506221474  -0.16113  0.189110834221069  0.0   0.012920000000000  -1.88672  -1.73810  -0.40237  2.547066045238380  -0.00139  -0.004579681056724  -0.00119  -20.467050000000000    0.545    0.22889   0.59394   0.99639  0.660  0.399    0.771       0.4404     0.4644        0.6400        0.4595     0.4606        0.6506       0.4380     0.4495        0.6276       0.4627     0.4932        0.6763
    1.500  -5.196  1.151  1.84515  1.84515  0.08300  0.113816631375633  -0.15447  0.182585464558957  0.0   0.008630000000000  -1.91705  -1.79802  -0.24053  2.525806060977580  -0.00116  -0.003841842878586  -0.00054  -21.388220000000000    0.511    0.20778   0.55120   0.98814  0.656  0.397    0.767       0.4284     0.4546        0.6247        0.4499     0.4688        0.6497       0.4219     0.4633        0.6266       0.4564     0.4942        0.6727
    2.000  -5.191  1.151  1.93750  1.93750  0.05300  0.099176091595634  -0.14326  0.171710489423896  0.0   0.000420000000000  -1.93178  -1.86912  -0.03590  2.497512890223570  -0.00109  -0.002838451894609   0.00000  -22.811700000000000    0.454    0.18675   0.50247   0.96004  0.631  0.381    0.737       0.4148     0.4190        0.5896        0.4374     0.4530        0.6297       0.4172     0.4718        0.6298       0.4323     0.5195        0.6758
    2.500  -5.187  1.151  2.00913  2.00913  0.02967  0.093289958829313  -0.13399  0.162787337116202  0.0  -0.006870000000000  -1.91787  -1.90393   0.08743  2.478890119830560  -0.00125  -0.002226291691253   0.00000  -23.905120000000000    0.406    0.17749   0.48879   0.92903  0.605  0.376    0.713       0.4003     0.4084        0.5718        0.4343     0.4310        0.6119       0.3955     0.4530        0.6014       0.4128     0.5059        0.6529
    3.000  -5.183  1.151  2.06765  2.06765  0.01078  0.091055639803074  -0.12604  0.155180191692808  0.0  -0.013150000000000  -1.89632  -1.92241   0.17408  2.464735244149810  -0.00144  -0.001844374770841   0.00000  -24.794480000000000    0.364    0.16807   0.48245   0.89351  0.591  0.363    0.694       0.4033     0.4052        0.5717        0.4328     0.4152        0.5997       0.3995     0.4030        0.5674       0.4170     0.4886        0.6424
    3.500  -5.181  1.151  2.12357  2.12357  0.00000  0.090028774676100  -0.11905  0.148526449306405  0.0  -0.018490000000000  -1.87695  -1.93474   0.24501  2.452674190639510  -0.00159  -0.001603938312670   0.00000  -25.588720000000000    0.327    0.15988   0.47612   0.85603  0.578  0.363    0.682       0.4026     0.3861        0.5578        0.4214     0.3953        0.5778       0.4131     0.3803        0.5615       0.4265     0.4928        0.6517
    4.000  -5.178  1.151  2.13734  2.13734  0.00000  0.088965758728213  -0.11280  0.142598301048652  0.0  -0.022980000000000  -1.86168  -1.94360   0.31173  2.442705939276230  -0.00171  -0.001487903801684   0.00000  -26.046350000000000    0.294    0.15433   0.46978   0.81676  0.556  0.376    0.671       0.3804     0.3756        0.5346        0.4264     0.3681        0.5633       0.4060     0.3228        0.5187       0.4259     0.4510        0.6203
    4.500  -5.176  1.151  2.13734  2.13734  0.00000  0.087216625027152  -0.10713  0.137242613236394  0.0  -0.026720000000000  -1.85415  -1.95343   0.37949  2.433909230947000  -0.00176  -0.001451647632538   0.00000  -26.370080000000000    0.263    0.15116   0.46344   0.77379  0.542  0.377    0.661       0.3736     0.3595        0.5185        0.4290     0.3589        0.5593       0.3921     0.3069        0.4979       0.4256     0.4386        0.6111
    5.000  -5.174  1.151  2.13734  2.13734  0.00000  0.084444226520033  -0.10194  0.132351162212196  0.0  -0.029800000000000  -1.85292  -1.96352   0.45204  2.426728340621800  -0.00177  -0.001498616447348   0.00000  -26.677970000000000    0.235    0.15275   0.45711   0.72802  0.538  0.395    0.667       0.3831     0.3594        0.5253        0.4378     0.3298        0.5481       0.3779     0.3076        0.4873       0.4195     0.3774        0.5643
    """)
    # Coefficients specific to the site amplification
    SITE_COEFFS = CoeffsTable(sa_damping=5, table="""\
    imt    LnAmax1D1   LnAmax1D2   LnAmax1D3   LnAmax1D4     Src1D1     Src1D2     Src1D3     Src1D4      fsr1      fsr2      fsr3      fsr4
    pga     0.650220    0.709730    0.644340    0.404280   8.429000   1.913680   1.117140   0.836440  1.000000  1.000000  1.000000  1.000000
    0.005   0.650220    0.709730    0.644340    0.404280   8.429000   1.913680   1.117140   0.836440  1.000000  1.000000  1.000000  1.000000
    0.010   0.651810    0.706790    0.646240    0.404280   8.090000   1.882560   1.114440   0.836440  1.000000  1.200000  1.000000  1.000000
    0.020   0.653620    0.694650    0.638650    0.387890   6.992000   1.778610   1.124370   0.830000  1.000000  1.300000  1.000000  0.949000
    0.030   0.654670    0.687550    0.634210    0.378300   6.350000   1.717810   1.130170   0.826240  1.000000  1.253000  1.000000  0.550000
    0.040   0.652850    0.698920    0.606040    0.317370   4.883000   2.052340   1.150800   0.767580  1.000000  1.064000  1.000000  0.477000
    0.050   0.672640    0.701370    0.617160    0.309340   5.043000   2.387130   1.239710   0.786320  1.000000  1.120000  1.000000  0.492000
    0.060   0.699660    0.724450    0.637970    0.325300   6.271000   2.833990   1.348190   0.837750  1.000000  1.207000  1.000000  0.531000
    0.070   0.717130    0.743430    0.654370    0.354120   7.667000   3.294470   1.451810   0.926160  1.000000  1.238000  1.000000  0.613000
    0.080   0.716030    0.785980    0.680190    0.392820   9.034000   3.990910   1.583150   1.022280  1.000000  1.360000  1.000000  0.693000
    0.090   0.725610    0.797210    0.708890    0.421840  11.251000   4.465760   1.732920   1.118020  1.000000  1.355000  1.000000  0.780000
    0.100   0.742000    0.816680    0.718810    0.437360  14.817000   5.045610   1.841340   1.165780  1.000000  1.341000  1.080000  0.816000
    0.120   0.762360    0.845230    0.725810    0.472080  14.817000   5.899600   2.030290   1.285510  0.000000  1.195000  1.093000  0.998000
    0.140   0.752150    0.782960    0.745250    0.512780  14.817000   5.053530   2.281330   1.398080  0.000000  0.835000  0.948000  0.954000
    0.150   0.738190    0.794800    0.761030    0.534320  14.817000   5.204900   2.444130   1.443270  0.000000  0.781000  0.908000  0.942000
    0.160   0.719110    0.808610    0.768130    0.550220  14.817000   5.386940   2.580170   1.471770  0.000000  0.738000  0.862000  0.927000
    0.180   0.654080    0.843310    0.756900    0.572790  14.817000   5.871650   2.741610   1.546940  0.000000  0.684000  0.745000  0.927000
    0.200   0.583950    0.877700    0.717850    0.596740  14.817000   6.573910   2.825870   1.644010  0.000000  0.654000  0.623000  0.949000
    0.250   0.583950    0.937670    0.654700    0.611360  14.817000   8.500000   2.718930   1.790130  0.000000  0.683000  0.436000  0.970000
    0.300   0.583950    0.950000    0.696190    0.626380  14.817000  10.670300   2.417590   1.823450  0.000000  0.691000  0.400000  0.961000
    0.350   0.583950    1.000000    0.779070    0.630120  14.817000  10.670300   2.303750   1.790370  0.000000  0.800000  0.433000  0.948000
    0.400   0.583950    1.000000    0.827760    0.647730  14.817000  10.670300   2.236250   1.768440  0.000000  0.876000  0.460000  0.965000
    0.450   0.583950    1.000000    0.876450    0.641520  14.817000  10.670300   2.216780   1.675390  0.000000  0.966000  0.496000  0.958000
    0.500   0.583950    1.000000    0.925140    0.655820  14.817000  10.670300   2.243380   1.625390  0.000000  1.034000  0.529000  0.984000
    0.600   0.583950    1.000000    0.973830    0.686680  14.817000  10.670300   2.805350   1.524530  0.000000  1.206000  0.578000  1.055000
    0.700   0.583950    1.000000    1.022520    0.705600  14.817000  10.670300   6.658390   1.397240  0.000000  1.314000  0.578000  1.114000
    0.800   0.583950    1.000000    1.071220    0.714290  14.817000  10.670300  30.000000   1.320290  0.000000  1.357000  0.578000  1.175000
    0.900   0.583950    1.000000    1.119910    0.703880  14.817000  10.670300  30.000000   1.266370  0.000000  1.357000  0.578000  1.216000
    1.000   0.583950    1.000000    1.168600    0.678130  14.817000  10.670300  30.000000   1.226800  0.000000  1.357000  0.000000  1.230000
    1.250   0.583950    1.000000    1.217290    0.611190  14.817000  10.670300  30.000000   1.220650  0.000000  0.000000  0.000000  1.192000
    1.500   0.583950    1.000000    1.265980    0.547360  14.817000  10.670300  30.000000   1.318050  0.000000  0.000000  0.000000  0.942000
    2.000   0.583950    1.000000    1.314670    0.459440  14.817000  10.670300  30.000000   2.124850  0.000000  0.000000  0.000000  0.000000
    2.500   0.583950    1.000000    1.363360    0.408460  14.817000  10.670300  30.000000  14.381810  0.000000  0.000000  0.000000  0.000000
    3.000   0.583950    1.000000    1.412050    0.364210  14.817000  10.670300  30.000000  14.381810  0.000000  0.000000  0.000000  0.000000
    3.500   0.583950    1.000000    1.460750    0.329840  14.817000  10.670300  30.000000  14.381810  0.000000  0.000000  0.000000  0.000000
    4.000   0.583950    1.000000    1.509440    0.309120  14.817000  10.670300  30.000000  14.381810  0.000000  0.000000  0.000000  0.000000
    4.500   0.583950    1.000000    1.558130    0.292510  14.817000  10.670300  30.000000  14.381810  0.000000  0.000000  0.000000  0.000000
    5.000   0.583950    1.000000    1.606820    0.547360  14.817000  10.670300  30.000000  14.381810  0.000000  0.000000  0.000000  0.000000
    """)
    CONSTANTS = {"m_c": 7.1,
                 "xcro": 2.0,
                 "xinto": 10.0,  # Used in subduction Interface class
                 "alpha": 2.0,
                 "beta": 0.6,
                 "Imin": 1.0,
                 "Imax": 12.0,
                 "m_sc": 6.3}  # Used in Subduction Slab class
    # Impedence ratio factors for each site class
    IMF = {1: (1. + 0.8 * 2.73) / 3.5,  # IMF 0.91
           2: 3.07 / 3.0,
           3: (1. + 0.9 * 1.76) / 2.5,
           4: (1. + 0.6 * 2.02) / 3.0} 
[docs]class ZhaoEtAl2016AscSiteSigma(ZhaoEtAl2016Asc):
    """
    Adaption of the Zhao et al (2016a) GMPE for active shallow crust
    events for the case when within-event variability is dependent on site
    class
    """
[docs]    def get_stddevs(self, C, n_sites, idx, stddev_types):
        """
        Returns site class specific standard deviation
        """
        stddevs = []
        tau = C["tau"] + np.zeros(n_sites)
        phi = np.zeros(n_sites)
        for i in range(1, 5):
            phi[idx[i]] += C["sc{:g}_sigma_S".format(i)]
        for stddev_type in stddev_types:
            assert stddev_type in self.DEFINED_FOR_STANDARD_DEVIATION_TYPES
            if stddev_type == const.StdDev.TOTAL:
                stddevs.append(np.sqrt(phi ** 2. + tau ** 2.))
            elif stddev_type == const.StdDev.INTRA_EVENT:
                stddevs.append(phi)
            elif stddev_type == const.StdDev.INTER_EVENT:
                stddevs.append(tau)
        return stddevs  
[docs]class ZhaoEtAl2016UpperMantle(ZhaoEtAl2016Asc):
    """
    Adaptation of the Zhao et al. (2016a) GMPE for the upper mantle events
    """
    #: Supported tectonic region type is upper mantle
    DEFINED_FOR_TECTONIC_REGION_TYPE = const.TRT.UPPER_MANTLE
[docs]    def get_sof_term(self, C, rup):
        """
        In the case of the upper mantle events separate coefficients
        are considered for normal, reverse and strike-slip
        """
        if rup.rake <= -45.0 and rup.rake >= -135.0:
            # Normal faulting
            return C["FN_UM"]
        elif rup.rake > 45.0 and rup.rake < 135.0:
            # Reverse faulting
            return C["FRV_UM"]
        else:
            # No adjustment for strike-slip faulting
            return 0.0 
[docs]    def get_depth_term(self, C, rup):
        """
        No top of rupture depth is considered for upper mantle events
        """
        return 0.0 
[docs]    def get_distance_term(self, C, dists, rup):
        """
        Returns the distance attenuation term
        """
        x_ij = dists.rrup
        gn_exp = np.exp(C["c1"] + 6.5 * C["c2"])
        g_n = C["gcrN"] * np.log(self.CONSTANTS["xcro"] + 30. + gn_exp) *\
            
np.ones_like(x_ij)
        idx = x_ij <= 30.0
        if np.any(idx):
            g_n[idx] = C["gcrN"] * np.log(self.CONSTANTS["xcro"] +
                                          x_ij[idx] + gn_exp)
        c_m = min(rup.mag, self.CONSTANTS["m_c"])
        r_ij = self.CONSTANTS["xcro"] + x_ij + np.exp(C["c1"] + C["c2"] * c_m)
        return C["gUM"] * np.log(r_ij) +\
            
C["gcrL"] * np.log(x_ij + 200.0) +\
            
g_n + C["eum"] * x_ij + C["ecrV"] * dists.rvolc + C["gamma_S"] 
    # For Upper Mantle
    SITE_COEFFS = CoeffsTable(sa_damping=5, table="""\
    imt    LnAmax1D1   LnAmax1D2   LnAmax1D3   LnAmax1D4     Src1D1     Src1D2     Src1D3     Src1D4      fsr1      fsr2      fsr3      fsr4
    pga     0.650220    0.709730    0.644340    0.404280   8.429000   1.913680   1.117140   0.836440  1.000000  1.000000  1.000000  1.000000
    0.005   0.650220    0.709730    0.644340    0.404280   8.429000   1.913680   1.117140   0.836440  1.000000  1.000000  1.000000  1.000000
    0.010   0.651810    0.706790    0.646240    0.404280   8.090000   1.882560   1.114440   0.836440  1.000000  1.000000  1.000000  1.000000
    0.020   0.653620    0.694650    0.638650    0.387890   6.992000   1.778610   1.124370   0.830000  1.000000  1.000000  1.000000  1.150000
    0.030   0.654670    0.687550    0.634210    0.378300   6.350000   1.717810   1.130170   0.826240  1.000000  1.000000  1.000000  0.800000
    0.040   0.652850    0.698920    0.606040    0.317370   4.883000   2.052340   1.150800   0.767580  1.000000  1.000000  1.000000  0.613000
    0.050   0.672640    0.701370    0.617160    0.309340   5.043000   2.387130   1.239710   0.786320  1.000000  1.000000  1.000000  0.542000
    0.060   0.699660    0.724450    0.637970    0.325300   6.271000   2.833990   1.348190   0.837750  1.000000  1.000000  1.000000  0.534000
    0.070   0.717130    0.743430    0.654370    0.354120   7.667000   3.294470   1.451810   0.926160  1.000000  1.000000  1.000000  0.583000
    0.080   0.716030    0.785980    0.680190    0.392820   9.034000   3.990910   1.583150   1.022280  1.000000  1.000000  0.830000  0.643000
    0.090   0.725610    0.797210    0.708890    0.421840  11.251000   4.465760   1.732920   1.118020  1.000000  1.000000  0.706000  0.674000
    0.100   0.742000    0.816680    0.718810    0.437360  14.817000   5.045610   1.841340   1.165780  1.000000  1.000000  0.800000  0.694000
    0.120   0.762360    0.845230    0.725810    0.472080  14.817000   5.899600   2.030290   1.285510  0.000000  1.000000  0.759000  0.763000
    0.140   0.752150    0.782960    0.745250    0.512780  14.817000   5.053530   2.281330   1.398080  0.000000  0.767000  0.715000  0.684000
    0.150   0.738190    0.794800    0.761030    0.534320  14.817000   5.204900   2.444130   1.443270  0.000000  0.708000  0.686000  0.645000
    0.160   0.719110    0.808610    0.768130    0.550220  14.817000   5.386940   2.580170   1.471770  0.000000  0.657000  0.644000  0.610000
    0.180   0.654080    0.843310    0.756900    0.572790  14.817000   5.871650   2.741610   1.546940  0.000000  0.568000  0.549000  0.532000
    0.200   0.583950    0.877700    0.717850    0.596740  14.817000   6.573910   2.825870   1.644010  0.000000  0.509000  0.434000  0.468000
    0.250   0.583950    0.937670    0.654700    0.611360  14.817000   8.500000   2.718930   1.790130  0.000000  0.433000  0.292000  0.291000
    0.300   0.583950    0.950000    0.696190    0.626380  14.817000  10.670300   2.417590   1.823450  0.000000  0.337000  0.275000  0.275000
    0.350   0.583950    1.000000    0.779070    0.630120  14.817000  10.670300   2.303750   1.790370  0.000000  0.337000  0.295000  0.295000
    0.400   0.583950    1.000000    0.827760    0.647730  14.817000  10.670300   2.236250   1.768440  0.000000  0.337000  0.293000  0.293000
    0.450   0.583950    1.000000    0.876450    0.641520  14.817000  10.670300   2.216780   1.675390  0.000000  0.000000  0.000000  0.000000
    0.500   0.583950    1.000000    0.925140    0.655820  14.817000  10.670300   2.243380   1.625390  0.000000  0.000000  0.000000  0.000000
    0.600   0.583950    1.000000    0.973830    0.686680  14.817000  10.670300   2.805350   1.524530  0.000000  0.000000  0.000000  0.000000
    0.700   0.583950    1.000000    1.022520    0.705600  14.817000  10.670300   6.658390   1.397240  0.000000  0.000000  0.000000  0.000000
    0.800   0.583950    1.000000    1.071220    0.714290  14.817000  10.670300  30.000000   1.320290  0.000000  0.000000  0.000000  0.000000
    0.900   0.583950    1.000000    1.119910    0.703880  14.817000  10.670300  30.000000   1.266370  0.000000  0.000000  0.000000  0.000000
    1.000   0.583950    1.000000    1.168600    0.678130  14.817000  10.670300  30.000000   1.226800  0.000000  0.000000  0.000000  0.000000
    1.250   0.583950    1.000000    1.217290    0.611190  14.817000  10.670300  30.000000   1.220650  0.000000  0.000000  0.000000  0.000000
    1.500   0.583950    1.000000    1.265980    0.547360  14.817000  10.670300  30.000000   1.318050  0.000000  0.000000  0.000000  0.000000
    2.000   0.583950    1.000000    1.314670    0.459440  14.817000  10.670300  30.000000   2.124850  0.000000  0.000000  0.000000  0.000000
    2.500   0.583950    1.000000    1.363360    0.408460  14.817000  10.670300  30.000000  14.381810  0.000000  0.000000  0.000000  0.000000
    3.000   0.583950    1.000000    1.412050    0.364210  14.817000  10.670300  30.000000  14.381810  0.000000  0.000000  0.000000  0.000000
    3.500   0.583950    1.000000    1.460750    0.329840  14.817000  10.670300  30.000000  14.381810  0.000000  0.000000  0.000000  0.000000
    4.000   0.583950    1.000000    1.509440    0.309120  14.817000  10.670300  30.000000  14.381810  0.000000  0.000000  0.000000  0.000000
    4.500   0.583950    1.000000    1.558130    0.292510  14.817000  10.670300  30.000000  14.381810  0.000000  0.000000  0.000000  0.000000
    5.000   0.583950    1.000000    1.606820    0.547360  14.817000  10.670300  30.000000  14.381810  0.000000  0.000000  0.000000  0.000000
    """) 
[docs]class ZhaoEtAl2016UpperMantleSiteSigma(ZhaoEtAl2016UpperMantle):
    """
    Adaption of the Zhao et al (2016a) GMPE for upper mantle events for the
    case when within-event variability is dependent on site class
    """
[docs]    def get_stddevs(self, C, n_sites, idx, stddev_types):
        """
        Returns site class specific standard deviation
        """
        stddevs = []
        tau = C["tau"] + np.zeros(n_sites)
        phi = np.zeros(n_sites)
        for i in range(1, 5):
            phi[idx[i]] += C["sc{:g}_sigma_S".format(i)]
        for stddev_type in stddev_types:
            assert stddev_type in self.DEFINED_FOR_STANDARD_DEVIATION_TYPES
            if stddev_type == const.StdDev.TOTAL:
                stddevs.append(np.sqrt(phi ** 2. + tau ** 2.))
            elif stddev_type == const.StdDev.INTRA_EVENT:
                stddevs.append(phi)
            elif stddev_type == const.StdDev.INTER_EVENT:
                stddevs.append(tau)
        return stddevs  
[docs]class ZhaoEtAl2016SInter(ZhaoEtAl2016Asc):
    """
    Implements the subduction interface GMPE of Zhao et al (2016b)
    Zhao, J. X., Liang, X., Jiang, F., Xing, H., Zhu, M., Hou, R., Zhang, Y.,
    Lan, X., Rhoades, D. A., Irikura, K., Fukushima, Y.,
    Somerville, P. (2016b), "Ground-Motion Prediction Equations for
    Subduction Interface Earthquakes in Japan Using Site Class and Simple
    Geometric Attenuation Functions", Bulletin of the Seismological
    Society of America, 106(4), 1518-1534
    Main version with standard deviations independent of site term
    """
    #: Supported tectonic region type is subduction interface
    DEFINED_FOR_TECTONIC_REGION_TYPE = const.TRT.SUBDUCTION_INTERFACE
    #: Required rupture parameters are magnitude and top-of-rupture depth
    REQUIRES_RUPTURE_PARAMETERS = set(('mag', 'ztor'))
[docs]    def get_magnitude_scaling_term(self, C, rup):
        """
        Returns magnitude scaling term, which is dependent on top of rupture
        depth - as described in equations 1 and 2
        """
        if rup.ztor > 25.0:
            # Deep interface events
            c_int = C["cint"]
        else:
            c_int = C["cintS"]
        if rup.mag <= self.CONSTANTS["m_c"]:
            return c_int * rup.mag
        else:
            return (c_int * self.CONSTANTS["m_c"]) +\
                
(C["dint"] * (rup.mag - self.CONSTANTS["m_c"])) 
[docs]    def get_sof_term(self, C, rup):
        """
        No style of faulting dependence here
        """
        return 0.0 
[docs]    def get_depth_term(self, C, rup):
        """
        Returns depth term (dependent on top of rupture depth) as given
        in equations 1 and 2
        """
        return (C["bint"] * rup.ztor) 
[docs]    def get_distance_term(self, C, dists, rup):
        """
        Returns distance scaling term, dependent on top of rupture depth,
        as described in equation 6
        """
        x_ij = dists.rrup
        # Get r_ij - distance for geometric spreading (equations 4 & 5)
        c_m = min(rup.mag, self.CONSTANTS["m_c"])
        r_ij = self.CONSTANTS["xinto"] + x_ij +\
            
np.exp(C["alpha"] + C["beta"] * c_m)
        # Get factors common to both shallow and deep
        dist_term = C["gint"] * np.log(r_ij) + C["eintV"] * dists.rvolc +\
            
C["gammaint"]
        if rup.ztor < 25.:
            # Shallow events have geometric and anelastic attenuation term
            dist_term += (C["gintLS"] * np.log(x_ij + 200.0)
                          + C["eintS"] * x_ij) + C["gamma_ints"]
        else:
            # Deep events do not have an anelastic attenuation term
            dist_term += (C["gintLD"] * np.log(x_ij + 200.0))
        return dist_term 
    def _get_ln_a_n_max(self, C, n_sites, idx, rup):
        """
        Defines the rock site amplification defined in equations 7a and 7b
        For events deeper than 25 km the rock-site factor is slightly different
        for site classes SCII, SCIII, SCIV
        """
        ln_a_n_max = C["lnSC1AM"] * np.ones(n_sites)
        for i in [2, 3, 4]:
            if np.any(idx[i]):
                # For deep events site classes 5, 6 and 7 are used
                if rup.ztor > 25.0:
                    loc = i + 3
                else:
                    loc = i
                ln_a_n_max[idx[i]] += C["S{:g}".format(loc)]
        return ln_a_n_max
    def _get_ln_sf(self, C, C_SITE, idx, n_sites, rup):
        """
        Returns the log SF term required for equation 9
        For events deeper than 25 km the rock-site factor is slightly different
        for site classes SCII, SCIII, SCIV
        """
        ln_sf = np.zeros(n_sites)
        for i in range(1, 5):
            ln_sf_i = (C["lnSC1AM"] - C_SITE["LnAmax1D{:g}".format(i)])
            if i > 1:
                if rup.ztor > 25.0:
                    # For deep events site classes 5, 6, and 7 are used
                    loc = i + 3
                else:
                    # For shallow events the conventional approach applies
                    loc = i
                ln_sf_i += C["S{:g}".format(loc)]
            ln_sf[idx[i]] += ln_sf_i
        return ln_sf
    # Coefficients table taken from spreadsheet supplied by the author
    COEFFS = CoeffsTable(sa_damping=5, table="""\
    imt                  alpha   beta     cint    cintS   dint  gamma_ints     bint      gint             gintLD             gintLS     eintV     eintS   gammaint       S2                   S3        S4       S5                   S6       S7              lnSC1AM   sigma    tau    sigma_T  sc1_sigma_S  sc1_tau_S  sc1_sigma_ST  sc2_sigma_S  sc2_tau_T  sc2_sigma_ST  sc3_sigma_S  sc3_tau_S  sc3_sigma_ST  sc4_sigma_S  sc4_tau_S  sc4_sigma_ST
    pga    -5.3011890395444800  1.151  1.09973  1.31479  0.553    -3.89528  0.01999  -2.05587  0.545410000000000  1.133644136349760  -0.01123  -0.00628   -4.49858  0.31288  -0.0043099999999998   0.22838  0.31288  -0.0043099999999998  0.22838   0.3059054757248630   0.553  0.377      0.669        0.398      0.419         0.571        0.417      0.424         0.597        0.409      0.376         0.544        0.415      0.346         0.574
    0.005  -5.3011890395444800  1.151  1.09973  1.31479  0.553    -3.89528  0.01999  -2.05587  0.545410000000000  1.133644136349760  -0.01123  -0.00628   -4.49858  0.31288  -0.0043099999999998   0.22838  0.31288  -0.0043099999999998  0.22838   0.3059054757248630   0.553  0.377      0.669        0.398      0.419         0.571        0.417      0.424         0.597        0.409      0.376         0.544        0.415      0.346         0.574
    0.010  -5.2884351314221800  1.151  1.09848  1.31739  0.553    -3.89528  0.01999  -2.06565  0.549750000000000  1.133647532106160  -0.01125  -0.00625   -4.45894  0.30850  -0.0111500000000002   0.22305  0.30850  -0.0111500000000002  0.22305   0.2211189175034500   0.554  0.377      0.670        0.397      0.420         0.571        0.417      0.424         0.598        0.409      0.377         0.545        0.415      0.348         0.543
    0.020  -5.2756812232998800  1.151  1.09227  1.31919  0.553    -3.89528  0.01999  -2.10231  0.561715000000000  1.133645539711160  -0.01127  -0.00616   -4.25807  0.29297  -0.0216599999999998   0.20892  0.29297  -0.0216599999999998  0.20892   0.1391818272825550   0.553  0.384      0.673        0.395      0.425         0.574        0.417      0.425         0.598        0.408      0.376         0.544        0.416      0.352         0.544
    0.030  -5.2682206653106900  1.151  1.10690  1.34096  0.553    -3.89528  0.02066  -2.19232  0.578870000000000  1.133638051189290  -0.01158  -0.00572   -3.91800  0.22869  -0.1129091455512500   0.13314  0.22869  -0.0829091455512501  0.16314   0.0928148352701154   0.555  0.397      0.682        0.389      0.444         0.586        0.418      0.422         0.595        0.409      0.386         0.553        0.417      0.355         0.546
    0.040  -5.2629273151775800  1.151  1.11578  1.38051  0.553    -3.89528  0.02308  -2.24640  0.493330000000000  0.988105377906839  -0.01203  -0.00532   -3.11423  0.16316  -0.1887005077743300   0.06959  0.16316  -0.1887005077743300  0.05959   0.0626979621246270   0.565  0.428      0.709        0.387      0.474         0.611        0.420      0.434         0.604        0.413      0.393         0.557        0.420      0.362         0.555
    0.050  -5.2588214738333900  1.151  1.10234  1.43246  0.553    -3.89528  0.02709  -2.29341  0.491000000000000  0.904439734658832  -0.01256  -0.00503   -2.76035  0.12129  -0.2283118706921090   0.02845  0.12129  -0.2283118706921090  0.00845   0.0360112352938003   0.570  0.463      0.734        0.387      0.486         0.620        0.422      0.440         0.608        0.409      0.384         0.554        0.422      0.375         0.562
    0.060  -5.2554667571883900  1.151  1.08611  1.46238  0.553    -3.89528  0.02972  -2.31172  0.508475000000000  0.887664211721920  -0.01312  -0.00528   -2.64088  0.12345  -0.2192024788530120   0.00070  0.12345  -0.2192024788530120  0.00070   0.0372315296271544   0.583  0.488      0.760        0.397      0.500         0.632        0.416      0.449         0.614        0.401      0.379         0.550        0.423      0.388         0.571
    0.070  -5.2526303846795600  1.151  1.07291  1.47120  0.553    -3.89528  0.03207  -2.31101  0.527500000000000  0.904912893427476  -0.01359  -0.00569   -2.65622  0.13970  -0.1900877585085220  -0.00949  0.13970  -0.1900877585085220  0.00551   0.0491648511532895   0.602  0.501      0.784        0.403      0.531         0.658        0.412      0.466         0.628        0.394      0.377         0.558        0.420      0.410         0.587
    0.080  -5.2501734070552700  1.151  1.06383  1.46432  0.553    -3.89461  0.03196  -2.28778  0.545953146186990  0.942062229717542  -0.01382  -0.00619   -2.75266  0.16385  -0.1549929496094120  -0.00485  0.16385  -0.1549929496094120  0.01415   0.0983337731804003   0.614  0.501      0.793        0.413      0.553         0.681        0.412      0.489         0.647        0.389      0.374         0.552        0.423      0.416         0.591
    0.090  -5.2480061991992000  1.151  1.05863  1.44695  0.553    -3.90179  0.02972  -2.24680  0.563067703920420  0.986519531877540  -0.01393  -0.00673   -2.89920  0.20501  -0.1125034957053890   0.03047  0.20501  -0.1125034957053890  0.04047   0.1753764826899090   0.625  0.495      0.797        0.422      0.559         0.688        0.412      0.521         0.672        0.391      0.381         0.557        0.427      0.435         0.604
    0.100  -5.2460675657110900  1.151  1.05673  1.42323  0.553    -3.90765  0.02789  -2.20410  0.576153228856880  1.035532649999650  -0.01395  -0.00718   -3.07698  0.24449  -0.0750832172171707   0.06080  0.24449  -0.0750832172171707  0.07080   0.2447184227049870   0.637  0.478      0.796        0.429      0.562         0.693        0.418      0.540         0.687        0.394      0.409         0.574        0.426      0.469         0.632
    0.120  -5.2427128490660800  1.151  1.06051  1.36833  0.553    -3.91644  0.02470  -2.12011  0.592575859588849  1.135292002539040  -0.01381  -0.00793   -3.48283  0.32284   0.0150002886394358   0.14231  0.32284   0.0150002886394358  0.14031   0.3366973661131230   0.646  0.453      0.789        0.440      0.564         0.697        0.429      0.537         0.684        0.428      0.480         0.635        0.445      0.517         0.670
    0.140  -5.2398764765572600  1.151  1.07135  1.31558  0.553    -3.92273  0.02117  -2.04337  0.609834200714791  1.234237180364630  -0.01351  -0.00853   -3.91612  0.40120   0.0969875152845021   0.22696  0.40120   0.0969875152845021  0.20196   0.4219918629306410   0.654  0.412      0.773        0.441      0.556         0.692        0.435      0.560         0.712        0.433      0.440         0.599        0.442      0.507         0.670
    0.150  -5.2386070077219000  1.151  1.07856  1.29277  0.553    -3.92526  0.01951  -2.01088  0.619605756588544  1.281341268532020  -0.01333  -0.00879   -4.13481  0.43622   0.1458772263727260   0.25758  0.43622   0.1358772263727260  0.23258   0.4561999113437010   0.659  0.404      0.773        0.450      0.552         0.690        0.440      0.574         0.724        0.420      0.427         0.592        0.440      0.504         0.663
    0.160  -5.2374194989329700  1.151  1.08664  1.27319  0.553    -3.92753  0.01793  -1.98301  0.630846000686806  1.326585227368230  -0.01312  -0.00902   -4.35243  0.46736   0.1879291503650610   0.30748  0.46736   0.1729291503650610  0.26248   0.4857829542311720   0.663  0.398      0.774        0.452      0.548         0.688        0.444      0.573         0.726        0.424      0.429         0.589        0.437      0.496         0.661
    0.180  -5.2352522910768900  1.151  1.10470  1.24828  0.553    -3.93130  0.01505  -1.94607  0.661957417503245  1.411336369650280  -0.01269  -0.00927   -4.78030  0.51201   0.2515429577444550   0.35974  0.51201   0.2415429577444550  0.31974   0.5337861886971570   0.672  0.387      0.776        0.454      0.534         0.681        0.447      0.557         0.719        0.446      0.436         0.600        0.436      0.488         0.667
    0.200  -5.2333136575887900  1.151  1.12443  1.23715  0.553    -3.93446  0.01255  -1.92702  0.699775273836698  1.488543999616950  -0.01223  -0.00942   -5.19439  0.53926   0.3029826435245730   0.40313  0.53926   0.3029826435245730  0.37313   0.5700442187746950   0.678  0.382      0.778        0.462      0.528         0.679        0.450      0.532         0.710        0.441      0.437         0.602        0.432      0.481         0.663
    0.250  -5.2292078162446100  1.151  1.17689  1.22387  0.553    -3.94068  0.00769  -1.89876  0.784470723616457  1.652089063569910  -0.01108  -0.00959   -6.15803  0.58602   0.4269231521787280   0.50765  0.58602   0.4269231521787280  0.48765   0.6247924955873390   0.659  0.365      0.753        0.474      0.493         0.650        0.470      0.551         0.723        0.459      0.398         0.572        0.432      0.448         0.637
    0.300  -5.2258530995996000  1.151  1.22970  1.22846  0.553    -3.94547  0.00438  -1.89141  0.859387831257168  1.781266639239090  -0.00998  -0.00952   -7.02003  0.60465   0.5161970850888910   0.57779  0.60465   0.5161970850888910  0.57779   0.6505259707420690   0.640  0.348      0.729        0.472      0.471         0.632        0.475      0.509         0.695        0.437      0.421         0.579        0.432      0.442         0.623
    0.350  -5.2230167270907800  1.151  1.28058  1.24219  0.553    -3.94943  0.00215  -1.89299  0.923381083222217  1.884375114633360  -0.00898  -0.00933   -7.79153  0.60640   0.5695125616089470   0.63821  0.60640   0.5795125616089470  0.64821   0.6617360212939630   0.634  0.360      0.729        0.468      0.474         0.629        0.478      0.485         0.683        0.444      0.457         0.607        0.432      0.442         0.618
    0.400  -5.2205597494664900  1.151  1.32873  1.26077  0.553    -3.95273  0.00000  -1.89531  0.980106570565885  1.967625670226430  -0.00808  -0.00911   -8.49551  0.60277   0.6236634605365610   0.70323  0.60277   0.6336634605365610  0.71323   0.6649532313027650   0.627  0.354      0.720        0.457      0.449         0.610        0.484      0.496         0.683        0.453      0.463         0.607        0.416      0.435         0.607
    0.450  -5.2183925416104100  1.151  1.37394  1.28190  0.553    -3.95558  0.00000  -1.90578  1.022203929823320  2.035537053673680  -0.00727  -0.00888   -9.11351  0.58043   0.6581416274761160   0.75082  0.58043   0.6581416274761160  0.75082   0.6654266030879300   0.620  0.363      0.719        0.450      0.423         0.595        0.477      0.495         0.679        0.477      0.447         0.593        0.408      0.418         0.592
    0.500  -5.2164539081223000  1.151  1.41630  1.30432  0.553    -3.95795  0.00000  -1.91467  1.058737908474810  2.091423339372400  -0.00656  -0.00866   -9.68515  0.55692   0.6867116556863830   0.79378  0.55692   0.6867116556863830  0.79378   0.6635290829305090   0.612  0.364      0.712        0.445      0.415         0.583        0.470      0.473         0.658        0.472      0.435         0.579        0.409      0.432         0.603
    0.600  -5.2130991914773000  1.151  1.49310  1.35019  0.553    -3.96181  0.00000  -1.92743  1.118034334349720  2.176403198118720  -0.00534  -0.00824  -10.68946  0.50969   0.7122000042516460   0.84953  0.50969   0.7122000042516460  0.84953   0.6564608147533650   0.613  0.379      0.720        0.448      0.419         0.576        0.460      0.450         0.636        0.459      0.434         0.580        0.407      0.442         0.598
    0.700  -5.2102628189684700  1.151  1.56069  1.39523  0.560    -3.96483  0.00000  -1.93452  1.163018824473690  2.235996913698260  -0.00437  -0.00787  -11.54596  0.46501   0.7123896083711760   0.87979  0.46501   0.7123896083711760  0.87979   0.6475225398028140   0.625  0.393      0.739        0.440      0.429         0.583        0.460      0.454         0.634        0.461      0.448         0.591        0.403      0.454         0.613
    0.800  -5.2078058413441800  1.151  1.62055  1.43824  0.580    -3.96729  0.00000  -1.93739  1.197347867256100  2.278310911386920  -0.00359  -0.00755  -12.28722  0.42440   0.6993827558539090   0.89539  0.42440   0.6993827558539090  0.89539   0.6378151725112400   0.628  0.396      0.743        0.441      0.427         0.580        0.460      0.448         0.631        0.457      0.440         0.590        0.407      0.468         0.627
    0.900  -5.2056386334881000  1.151  1.67390  1.47881  0.602    -3.96962  0.00000  -1.93725  1.223616172806850  2.308465259401480  -0.00296  -0.00726  -12.93630  0.38841   0.6799630664371980   0.90256  0.38841   0.6799630664371980  0.90256   0.6275299463931780   0.628  0.397      0.743        0.435      0.433         0.586        0.456      0.446         0.622        0.449      0.445         0.593        0.408      0.485         0.633
    1.000  -5.2037000000000000  1.151  1.72171  1.51685  0.622    -3.97202  0.00000  -1.93505  1.243670000000000  2.329852618176160  -0.00244  -0.00700  -13.51000  0.35703   0.6582841883037910   0.90528  0.35703   0.6582841883037910  0.90528   0.6166948032035810   0.633  0.403      0.750        0.427      0.453         0.606        0.448      0.445         0.617        0.442      0.422         0.578        0.408      0.498         0.642
    1.250  -5.1995941586558200  1.151  1.82188  1.60148  0.667    -3.97949  0.00000  -1.92471  1.272450000000000  2.358529248389570  -0.00153  -0.00644  -14.69034  0.29673   0.6192828473123780   0.91793  0.29673   0.6192828473123780  0.91793   0.5871136982629510   0.636  0.404      0.753        0.413      0.457         0.613        0.442      0.457         0.624        0.428      0.428         0.587        0.412      0.507         0.657
    1.500  -5.1962394420108100  1.151  1.90081  1.67280  0.705    -3.99048  0.00000  -1.91189  1.285410000000000  2.366526445593360  -0.00097  -0.00597  -15.60298  0.25785   0.5828781633806380   0.92130  0.25785   0.5828781633806380  0.92130   0.5541350591719840   0.644  0.392      0.754        0.416      0.464         0.619        0.448      0.448         0.628        0.418      0.434         0.604        0.418      0.505         0.653
    2.000  -5.1909460918777000  1.151  2.01482  1.78372  0.768    -4.02652  0.00000  -1.88859  1.288300000000000  2.355357695068850  -0.00043  -0.00518  -16.90010  0.22262   0.5262044723719100   0.91709  0.22262   0.5262044723719100  0.91709   0.4823188293988830   0.635  0.382      0.741        0.409      0.464         0.623        0.437      0.458         0.633        0.406      0.470         0.625        0.413      0.524         0.665
    2.500  -5.1868402505335200  1.151  2.08892  1.86241  0.820    -4.08299  0.00000  -1.87252  1.277270000000000  2.331055616102490  -0.00023  -0.00451  -17.73658  0.21840   0.4871991042586300   0.90551  0.21840   0.4871991042586300  0.90551   0.4108485356913110   0.619  0.393      0.734        0.398      0.441         0.599        0.429      0.443         0.623        0.387      0.446         0.612        0.414      0.529         0.676
    3.000  -5.1834855338885100  1.151  2.13574  1.91711  0.863    -4.15939  0.00000  -1.86345  1.260490000000000  2.304087350833550  -0.00016  -0.00393  -18.27135  0.21595   0.4569807448342530   0.88668  0.21595   0.4569807448342530  0.88668   0.3476970039189440   0.599  0.385      0.712        0.390      0.412         0.572        0.423      0.441         0.623        0.369      0.400         0.565        0.412      0.524         0.668
    3.500  -5.1806491613796900  1.151  2.16254  1.95322  0.902    -4.25418  0.00000  -1.85969  1.241065000000000  2.277938604223720   0.00000  -0.00344  -18.59264  0.21595   0.4280893607115190   0.85880  0.21595   0.4280893607115190  0.85880   0.2981089167617070   0.581  0.376      0.692        0.386      0.394         0.553        0.410      0.424         0.608        0.376      0.353         0.536        0.402      0.535         0.672
    4.000  -5.1781921837553900  1.151  2.17393  1.97450  0.935    -4.36584  0.00000  -1.85953  1.220255000000000  2.253713119173820   0.00000  -0.00302  -18.75474  0.21595   0.3952406635315720   0.82025  0.21595   0.3952406635315720  0.82025   0.2652398018598770   0.568  0.377      0.682        0.377      0.376         0.541        0.410      0.409         0.603        0.362      0.365         0.540        0.394      0.542         0.671
    4.500  -5.1760249758993200  1.151  2.17301  1.98361  0.966    -4.49267  0.00000  -1.86151  1.198585000000000  2.231608900335380   0.00000  -0.00267  -18.79351  0.21595   0.3548841036361290   0.76990  0.21595   0.3548841036361290  0.76990   0.2508917433151500   0.551  0.376      0.667        0.360      0.363         0.528        0.412      0.393         0.591        0.368      0.349         0.519        0.385      0.530         0.652
    5.000  -5.1740863424112100  1.151  2.16199  1.98255  0.994    -4.63313  0.00000  -1.86451  1.176285000000000  2.211490595470470   0.00000  -0.00240  -18.73393  0.21595   0.3046830024209600   0.70705  0.21595   0.3046830024209600  0.70705   0.2365436847704230   0.563  0.374      0.675        0.361      0.346         0.525        0.447      0.408         0.615        0.381      0.293         0.476        0.380      0.514         0.633
    """)
    # Coefficients specific to the site amplification
    SITE_COEFFS = CoeffsTable(sa_damping=5, table="""\
    imt    LnAmax1D1   LnAmax1D2   LnAmax1D3   LnAmax1D4     Src1D1     Src1D2     Src1D3     Src1D4     fsr1    fsr2    fsr3    fsr4
    pga     0.650220    0.709730    0.644340    0.404280   8.429000   1.913680   1.117140   0.836440   1.0000  1.0000  1.1650  1.0000
    0.005   0.650220    0.709730    0.644340    0.404280   8.429000   1.913680   1.117140   0.836440   1.0000  1.0000  1.1650  1.0000
    0.010   0.651810    0.706790    0.646240    0.404280   8.090000   1.882560   1.114440   0.836440   1.0000  1.0000  0.9440  1.0000
    0.020   0.653620    0.694650    0.638650    0.387890   6.992000   1.778610   1.124370   0.830000   1.0000  1.0000  1.0120  1.0000
    0.030   0.654670    0.687550    0.634210    0.378300   6.350000   1.717810   1.130170   0.826240   1.0000  0.9990  1.1000  1.0000
    0.040   0.652850    0.698920    0.606040    0.317370   4.883000   2.052340   1.150800   0.767580   1.0000  0.8430  0.9590  0.5570
    0.050   0.672640    0.701370    0.617160    0.309340   5.043000   2.387130   1.239710   0.786320   1.0000  0.6630  0.8890  0.5430
    0.060   0.699660    0.724450    0.637970    0.325300   6.271000   2.833990   1.348190   0.837750   1.0000  0.8410  0.9460  0.5740
    0.070   0.717130    0.743430    0.654370    0.354120   7.667000   3.294470   1.451810   0.926160   1.0000  1.0290  1.0060  0.6480
    0.080   0.716030    0.785980    0.680190    0.392820   9.034000   3.990910   1.583150   1.022280   1.0000  1.2350  1.0650  0.7210
    0.090   0.725610    0.797210    0.708890    0.421840  11.251000   4.465760   1.732920   1.118020   1.0000  1.1440  1.0930  0.8090
    0.100   0.742000    0.816680    0.718810    0.437360  14.817000   5.045610   1.841340   1.165780   1.0000  1.0920  1.0770  1.0150
    0.120   0.762360    0.845230    0.725810    0.472080  14.817000   5.899600   2.030290   1.285510   0.0000  0.9450  1.0360  0.9720
    0.140   0.752150    0.782960    0.745250    0.512780  14.817000   5.053530   2.281330   1.398080   0.0000  0.6240  0.8950  0.9670
    0.150   0.738190    0.794800    0.761030    0.534320  14.817000   5.204900   2.444130   1.443270   0.0000  0.5770  0.8600  0.9630
    0.160   0.719110    0.808610    0.768130    0.550220  14.817000   5.386940   2.580170   1.471770   0.0000  0.5450  0.8220  0.9530
    0.180   0.654080    0.843310    0.756900    0.572790  14.817000   5.871650   2.741610   1.546940   0.0000  0.5270  0.7430  0.9670
    0.200   0.583950    0.877700    0.717850    0.596740  14.817000   6.573910   2.825870   1.644010   0.0000  0.5460  0.6630  1.0050
    0.250   0.583950    0.937670    0.654700    0.611360  14.817000   8.500000   2.718930   1.790130   0.0000  0.5960  0.4870  1.0450
    0.300   0.583950    0.950000    0.696190    0.626380  14.817000  10.670300   2.417590   1.823450   0.0000  0.6230  0.4470  1.0350
    0.350   0.583950    1.000000    0.779070    0.630120  14.817000  10.670300   2.303750   1.790370   0.0000  0.7010  0.4730  1.0080
    0.400   0.583950    1.000000    0.827760    0.647730  14.817000  10.670300   2.236250   1.768440   0.0000  0.7080  0.4870  1.0070
    0.450   0.583950    1.000000    0.876450    0.641520  14.817000  10.670300   2.216780   1.675390   0.0000  0.7370  0.5110  0.9810
    0.500   0.583950    1.000000    0.925140    0.655820  14.817000  10.670300   2.243380   1.625390   0.0000  0.7480  0.5360  0.9900
    0.600   0.583950    1.000000    0.973830    0.686680  14.817000  10.670300   2.805350   1.524530   0.0000  0.7280  0.5400  1.0160
    0.700   0.583950    1.000000    1.022520    0.705600  14.817000  10.670300   6.658390   1.397240   0.0000  0.6340  0.4770  1.0220
    0.800   0.583950    1.000000    1.071220    0.714290  14.817000  10.670300  30.000000   1.320290   0.0000  0.0000  0.0000  1.0230
    0.900   0.583950    1.000000    1.119910    0.703880  14.817000  10.670300  30.000000   1.266370   0.0000  0.0000  0.0000  0.9970
    1.000   0.583950    1.000000    1.168600    0.678130  14.817000  10.670300  30.000000   1.226800   0.0000  0.0000  0.0000  0.9480
    1.250   0.583950    1.000000    1.217290    0.611190  14.817000  10.670300  30.000000   1.220650   0.0000  0.0000  0.0000  0.8020
    1.500   0.583950    1.000000    1.265980    0.547360  14.817000  10.670300  30.000000   1.318050   0.0000  0.0000  0.0000  0.0000
    2.000   0.583950    1.000000    1.314670    0.459440  14.817000  10.670300  30.000000   2.124850   0.0000  0.0000  0.0000  0.0000
    2.500   0.583950    1.000000    1.363360    0.408460  14.817000  10.670300  30.000000  14.381810   0.0000  0.0000  0.0000  0.0000
    3.000   0.583950    1.000000    1.412050    0.364210  14.817000  10.670300  30.000000  14.381810   0.0000  0.0000  0.0000  0.0000
    3.500   0.583950    1.000000    1.460750    0.329840  14.817000  10.670300  30.000000  14.381810   0.0000  0.0000  0.0000  0.0000
    4.000   0.583950    1.000000    1.509440    0.309120  14.817000  10.670300  30.000000  14.381810   0.0000  0.0000  0.0000  0.0000
    4.500   0.583950    1.000000    1.558130    0.292510  14.817000  10.670300  30.000000  14.381810   0.0000  0.0000  0.0000  0.0000
    5.000   0.583950    1.000000    1.606820    0.547360  14.817000  10.670300  30.000000  14.381810   0.0000  0.0000  0.0000  0.0000
    """) 
[docs]class ZhaoEtAl2016SInterSiteSigma(ZhaoEtAl2016SInter):
    """
    Subclass of the Zhao et al. (2016b) subduction interface GMPE for the
    case of site-dependent within-event variability
    """
[docs]    def get_stddevs(self, C, n_sites, idx, stddev_types):
        """
        """
        stddevs = []
        tau = C["tau"] + np.zeros(n_sites)
        phi = np.zeros(n_sites)
        for i in range(1, 5):
            phi[idx[i]] += C["sc{:g}_sigma_S".format(i)]
        for stddev_type in stddev_types:
            assert stddev_type in self.DEFINED_FOR_STANDARD_DEVIATION_TYPES
            if stddev_type == const.StdDev.TOTAL:
                stddevs.append(np.sqrt(phi ** 2. + tau ** 2.))
            elif stddev_type == const.StdDev.INTRA_EVENT:
                stddevs.append(phi)
            elif stddev_type == const.StdDev.INTER_EVENT:
                stddevs.append(tau)
        return stddevs  
[docs]class ZhaoEtAl2016SSlab(ZhaoEtAl2016Asc):
    """
    Implements the subduction slab GMPE of Zhao et al (2016c)
    Zhao, J. X., Jiang, F., Shi, P., Xing, H., Huang, H., Hou, R.,
    Zhang, Y., Yu, P., Lan, X., Rhoades, D. A., Somerville, P. G., Irikura, K.,
    Fukushima, Y. (2016c), "Ground-Motion Prediction Equations for
    Subduction Slab Earthquakes in Japan Using Site Class and Simple
    Geometric Attenuation Functions", Bulletin of the Seismological
    Society of America, 106(4), 1535-1551
    Main version with standard deviations independent of site term
    """
    #: Supported tectonic region type is subduction inslab
    DEFINED_FOR_TECTONIC_REGION_TYPE = const.TRT.SUBDUCTION_INTRASLAB
    #: Required rupture parameters are magnitude and top of rupture depth.
    REQUIRES_RUPTURE_PARAMETERS = set(('mag', 'ztor'))
[docs]    def get_magnitude_scaling_term(self, C, rup):
        """
        Returns the magnitude scaling defined in equation 1
        """
        m_c = self.CONSTANTS["m_c"]
        if rup.mag <= m_c:
            return C["cSL"] * rup.mag +\
                
C["cSL2"] * ((rup.mag - self.CONSTANTS["m_sc"]) ** 2.)
        else:
            return C["cSL"] * m_c +\
               
C["cSL2"] * ((m_c - self.CONSTANTS["m_sc"]) ** 2.) +\
               
C["dSL"] * (rup.mag - m_c) 
[docs]    def get_sof_term(self, C, rup):
        """
        No style of faulting dependence here
        """
        return 0.0 
[docs]    def get_depth_term(self, C, rup):
        """
        Returns depth term (dependent on top of rupture depth) as given
        in equations 1
        Note that there is a ztor cap of 100 km that is introduced in the
        Fortran code but not mentioned in the original paper!
        """
        if rup.ztor > 100.0:
            return C["bSLH"] * 100.0
        else:
            return C["bSLH"] * rup.ztor 
[docs]    def get_distance_term(self, C, dists, rup):
        """
        Returns the distance scaling term in equation 2a
        Note that the paper describes a lower and upper cap on Rvolc that
        is not found in the Fortran code, and is thus neglected here.
        """
        x_ij = dists.rrup
        # Get anelastic scaling term in quation 5
        if rup.ztor >= 50.:
            qslh = C["eSLH"] * (0.02 * rup.ztor - 1.0)
        else:
            qslh = 0.0
        # r_volc = np.copy(dists.rvolc)
        # r_volc[np.logical_and(r_volc > 0.0, r_volc <= 12.0)] = 12.0
        # r_volc[r_volc >= 80.0] = 80.0
        # Get r_ij - distance for geometric spreading (equations 3 and 4)
        c_m = min(rup.mag, self.CONSTANTS["m_c"])
        r_ij = x_ij + np.exp(C["alpha"] + C["beta"] * c_m)
        return C["gSL"] * np.log(r_ij) + \
            
C["gLL"] * np.log(x_ij + 200.) +\
            
C["eSL"] * x_ij + qslh * x_ij +\
            
C["eSLV"] * dists.rvolc + C["gamma"] 
    # Coefficients table taken from spreadsheet supplied by the author
    COEFFS = CoeffsTable(sa_damping=5, table="""\
imt                alpha   beta      cSL     cSL2      dSL              bSLH       gSL      gLL      eSLV       eSL       eSLH       gamma         S2         S3         S4              lnSC1AM    sigma     tau  sigma_T  sc1_sigma_S  sc1_tau_S  sc1_sigma_ST  sc2_sigma_S  sc2_tau_S  sc2_sigma_ST  sc3_sigma_S  sc3_tau_S  sc3_sigma_ST  sc4_sigma_S  sc4_tau_S  sc4_sigma_ST
pga    -5.30118903954448  1.151  1.44758  0.37625  0.42646  0.01825668401347  -1.98471  1.12071  -0.01499  -0.00340  -0.000501   -9.879560   0.232000   0.143711   0.147037   0.3230000000000000   0.5870  0.4570   0.7440       0.3981     0.5107        0.6475       0.4174     0.4494        0.6133       0.4091     0.4306        0.5940       0.4152     0.4217        0.5918
0.005  -5.30118903954448  1.151  1.44758  0.37625  0.42646  0.01825668401347  -1.98471  1.12071  -0.01499  -0.00340  -0.000501   -9.879560   0.232000   0.143711   0.147037   0.3230000000000000   0.5870  0.4570   0.7440       0.3981     0.5107        0.6475       0.4174     0.4494        0.6133       0.4091     0.4306        0.5940       0.4152     0.4217        0.5918
0.010  -5.28843513142218  1.151  1.45400  0.38099  0.42075  0.01825668401347  -1.96360  1.03278  -0.01503  -0.00331  -0.000501   -9.512690   0.228860   0.139780   0.132840   0.2050000000000000   0.5870  0.4590   0.7460       0.3968     0.5166        0.6514       0.4173     0.4499        0.6136       0.4086     0.4314        0.5941       0.4149     0.4183        0.5892
0.020  -5.27568122329988  1.151  1.46625  0.39101  0.40055  0.01825668401347  -1.91839  0.94715  -0.01517  -0.00345  -0.000501   -9.266260   0.218250   0.126000   0.144310   0.0830000000000000   0.5870  0.4650   0.7490       0.3951     0.5180        0.6515       0.4172     0.4488        0.6128       0.4082     0.4313        0.5938       0.4158     0.4245        0.5942
0.030  -5.26822066531069  1.151  1.49246  0.41976  0.36433  0.01825668401347  -1.89271  0.93420  -0.01567  -0.00391  -0.000501   -9.331500   0.187370   0.061640   0.066000   0.0410000000000000   0.5880  0.4800   0.7590       0.3894     0.5369        0.6633       0.4179     0.4492        0.6135       0.4088     0.4300        0.5933       0.4166     0.4224        0.5933
0.040  -5.26292731517758  1.151  1.50129  0.45746  0.32072  0.01825668401347  -1.87260  0.97168  -0.01616  -0.00454  -0.000501   -9.507980   0.123320  -0.017050  -0.017140   0.0340000000000000   0.6000  0.5200   0.7940       0.3873     0.5716        0.6905       0.4201     0.4559        0.6200       0.4125     0.4281        0.5945       0.4201     0.4308        0.6017
0.050  -5.25882147383339  1.151  1.51051  0.48601  0.30000  0.01825668401347  -1.85351  1.01492  -0.01676  -0.00510  -0.000501   -9.728580   0.072070  -0.063310  -0.073120   0.0460000000000000   0.6070  0.5550   0.8230       0.3874     0.5857        0.7022       0.4219     0.4794        0.6386       0.4089     0.4286        0.5924       0.4217     0.4387        0.6085
0.060  -5.25546675718839  1.151  1.51380  0.50311  0.31147  0.01825668401347  -1.83395  1.06854  -0.01722  -0.00552  -0.000501   -9.966280   0.027010  -0.101030  -0.119550   0.0690000000000000   0.6230  0.5840   0.8540       0.3970     0.6131        0.7304       0.4160     0.5074        0.6561       0.4012     0.4485        0.6018       0.4227     0.4450        0.6138
0.070  -5.25263038467956  1.151  1.51111  0.50704  0.32673  0.01825668401347  -1.81345  1.13401  -0.01752  -0.00588  -0.000487  -10.225830  -0.006210  -0.146840  -0.160060   0.0980000000000000   0.6380  0.5980   0.8750       0.4027     0.6326        0.7499       0.4121     0.5317        0.6727       0.3942     0.4556        0.6025       0.4203     0.4732        0.6329
0.080  -5.25017340705527  1.151  1.50406  0.50004  0.34289  0.01825668401347  -1.79189  1.20364  -0.01768  -0.00615  -0.000479  -10.551110   0.015650  -0.144790  -0.124340   0.1320000000000000   0.6510  0.5980   0.8840       0.4130     0.6434        0.7646       0.4124     0.5554        0.6918       0.3887     0.4554        0.5987       0.4230     0.4905        0.6477
0.090  -5.24800619919920  1.151  1.49423  0.48071  0.35921  0.01825668401347  -1.76931  1.25808  -0.01772  -0.00635  -0.000476  -10.807210   0.050890  -0.126660  -0.072930   0.1690000000000000   0.6630  0.5850   0.8840       0.4221     0.6307        0.7589       0.4122     0.5677        0.7015       0.3905     0.4752        0.6151       0.4269     0.5177        0.6710
0.100  -5.24606756571109  1.151  1.48300  0.45759  0.37000  0.01825668401347  -1.74581  1.30112  -0.01768  -0.00652  -0.000478  -11.021900   0.095600  -0.093190  -0.014580   0.2080000000000000   0.6740  0.5670   0.8810       0.4286     0.6258        0.7585       0.4177     0.5662        0.7036       0.3936     0.5067        0.6416       0.4263     0.5593        0.7033
0.120  -5.24271284906608  1.151  1.45559  0.41355  0.40606  0.01825668401347  -1.73746  1.39137  -0.01742  -0.00660  -0.000489  -11.365300   0.200370  -0.008780   0.082520   0.2880000000000000   0.6900  0.5340   0.8720       0.4402     0.6135        0.7551       0.4285     0.5695        0.7127       0.4279     0.5479        0.6951       0.4445     0.5762        0.7277
0.140  -5.23987647655726  1.151  1.44277  0.37828  0.43450  0.01825668401347  -1.74463  1.47084  -0.01700  -0.00652  -0.000508  -11.730390   0.303720   0.089260   0.171510   0.3700000000000000   0.6920  0.5040   0.8560       0.4411     0.6126        0.7549       0.4347     0.5971        0.7386       0.4326     0.5072        0.6666       0.4424     0.5608        0.7143
0.150  -5.23860700772190  1.151  1.43314  0.36308  0.45000  0.01825668401347  -1.74972  1.50784  -0.01676  -0.00647  -0.000520  -11.880130   0.342840   0.136020   0.209320   0.4120000000000000   0.6960  0.4860   0.8500       0.4495     0.6023        0.7515       0.4399     0.5985        0.7428       0.4200     0.4896        0.6450       0.4401     0.5546        0.7080
0.160  -5.23741949893297  1.151  1.43253  0.34919  0.46055  0.01825668401347  -1.76259  1.54326  -0.01649  -0.00636  -0.000532  -12.056370   0.374000   0.177510   0.241170   0.4530000000000000   0.6970  0.4650   0.8380       0.4518     0.5987        0.7500       0.4443     0.5970        0.7442       0.4239     0.4939        0.6509       0.4369     0.5517        0.7037
0.180  -5.23525229107689  1.151  1.43710  0.32464  0.48439  0.01825668401347  -1.78989  1.60985  -0.01594  -0.00614  -0.000559  -12.420440   0.427000   0.253090   0.298960   0.5350000000000000   0.7040  0.4300   0.8250       0.4540     0.5990        0.7516       0.4474     0.6005        0.7489       0.4463     0.5003        0.6704       0.4361     0.5534        0.7046
0.200  -5.23331365758879  1.151  1.44781  0.30358  0.50900  0.01825668401347  -1.82110  1.67146  -0.01537  -0.00590  -0.000588  -12.785420   0.462970   0.320050   0.345910   0.6060000000000000   0.7130  0.4060   0.8210       0.4622     0.5897        0.7493       0.4499     0.5962        0.7469       0.4411     0.4907        0.6598       0.4322     0.5617        0.7088
0.250  -5.22920781624461  1.151  1.48260  0.26174  0.55500  0.01825668401347  -1.90412  1.80738  -0.01395  -0.00526  -0.000667  -13.635370   0.508560   0.453040   0.442310   0.6700000000000000   0.7110  0.3850   0.8080       0.4743     0.5545        0.7297       0.4702     0.6010        0.7631       0.4587     0.4500        0.6426       0.4319     0.5065        0.6657
0.300  -5.22585309959960  1.151  1.51881  0.23036  0.59300  0.01825668401347  -1.98439  1.92242  -0.01261  -0.00468  -0.000749  -14.380860   0.507760   0.548750   0.517820   0.7100000000000000   0.6830  0.3650   0.7750       0.4723     0.5320        0.7114       0.4749     0.5574        0.7322       0.4369     0.4989        0.6631       0.4323     0.4889        0.6526
0.350  -5.22301672709078  1.151  1.55291  0.20580  0.62500  0.01825668401347  -2.05756  2.02102  -0.01139  -0.00415  -0.000831  -15.035110   0.497100   0.617130   0.575960   0.7189367707551090   0.6650  0.3730   0.7620       0.4677     0.5050        0.6883       0.4780     0.5178        0.7047       0.4435     0.5315        0.6922       0.4318     0.4630        0.6331
0.400  -5.22055974946649  1.151  1.58443  0.18597  0.65200  0.01825668401347  -2.12282  2.10642  -0.01029  -0.00369  -0.000912  -15.615990   0.480650   0.666340   0.622390   0.7056101598849490   0.6570  0.3830   0.7610       0.4574     0.4792        0.6625       0.4836     0.4878        0.6868       0.4530     0.5458        0.7093       0.4155     0.4661        0.6244
0.450  -5.21839254161041  1.151  1.61360  0.16960  0.67500  0.01825668401347  -2.18047  2.18097  -0.00931  -0.00327  -0.000993  -16.138300   0.461590   0.701110   0.659760   0.6928932372909810   0.6470  0.3910   0.7560       0.4500     0.4608        0.6441       0.4772     0.4790        0.6761       0.4771     0.5294        0.7127       0.4079     0.4613        0.6158
0.500  -5.21645390812230  1.151  1.64075  0.15585  0.69500  0.01825668401347  -2.23118  2.24651  -0.00843  -0.00290  -0.001071  -16.613239   0.442240   0.725580   0.690660   0.6807534705053220   0.6400  0.4030   0.7560       0.4452     0.4506        0.6334       0.4696     0.4713        0.6653       0.4718     0.4947        0.6836       0.4087     0.4665        0.6202
0.600  -5.21309919147730  1.151  1.69020  0.13405  0.72900  0.01825668401347  -2.31475  2.35602  -0.00694  -0.00227  -0.001239  -17.452980   0.405370   0.752940   0.737960   0.6580415130288750   0.6330  0.4120   0.7550       0.4480     0.4355        0.6248       0.4597     0.4671        0.6553       0.4590     0.4701        0.6570       0.4065     0.4335        0.5943
0.700  -5.21026281896847  1.151  1.73450  0.11757  0.75600  0.01825668401347  -2.37885  2.44331  -0.00574  -0.00178  -0.001393  -18.180950   0.373420   0.762450   0.772260   0.6371531353146750   0.6330  0.4320   0.7660       0.4396     0.4299        0.6149       0.4595     0.4642        0.6532       0.4611     0.4727        0.6604       0.4031     0.4300        0.5894
0.800  -5.20780584134418  1.151  1.77474  0.10476  0.77800  0.01825668401347  -2.42769  2.51391  -0.00477  -0.00139  -0.001535  -18.824989   0.346230   0.761190   0.797360   0.6178103254041100   0.6360  0.4360   0.7710       0.4412     0.4269        0.6139       0.4596     0.4559        0.6474       0.4573     0.4565        0.6461       0.4067     0.4543        0.6097
0.900  -5.20563863348810  1.151  1.81162  0.09458  0.79600  0.01825668401347  -2.46450  2.57166  -0.00398  -0.00109  -0.001664  -19.403130   0.323640   0.753840   0.816160   0.5997867391697460   0.6360  0.4370   0.7720       0.4345     0.4314        0.6123       0.4559     0.4659        0.6519       0.4490     0.4391        0.6280       0.4082     0.4556        0.6117
1.000  -5.20370000000000  1.151  1.84561  0.08636  0.81200  0.01825668401347  -2.49170  2.61931  -0.00333  -0.00086  -0.001781  -19.927660   0.304790   0.742790   0.830090   0.5829000000000000   0.6370  0.4360   0.7720       0.4270     0.4400        0.6131       0.4479     0.4663        0.6466       0.4419     0.4415        0.6246       0.4080     0.4619        0.6163
1.250  -5.19959415865582  1.151  1.92015  0.07173  0.84100  0.01807627932941  -2.52758  2.70638  -0.00215  -0.00052  -0.001989  -21.058180   0.270260   0.708330   0.850360   0.5447531267038370   0.6350  0.4440   0.7750       0.4126     0.4401        0.6032       0.4422     0.4755        0.6493       0.4279     0.4321        0.6081       0.4123     0.4437        0.6057
1.500  -5.19623944201081  1.151  1.98274  0.06258  0.86100  0.01785908731221  -2.53359  2.76244  -0.00142  -0.00043  -0.002134  -21.996330   0.248310   0.672560   0.857320   0.5111822983011660   0.6450  0.4480   0.7850       0.4157     0.4485        0.6115       0.4477     0.4730        0.6513       0.4177     0.4605        0.6217       0.4178     0.4432        0.6090
2.000  -5.19094609187770  1.151  2.08214  0.05327  0.88400  0.01717728835933  -2.49565  2.82205  -0.00067  -0.00070  -0.002245  -23.488390   0.225290   0.610670   0.849910   0.4538170835899950   0.6330  0.4240   0.7620       0.4089     0.4409        0.6013       0.4371     0.4624        0.6362       0.4061     0.4720        0.6227       0.4133     0.4392        0.6031
2.500  -5.18684025053352  1.151  2.15841  0.05036  0.90000  0.01628389643418  -2.42623  2.84475  -0.00039  -0.00127  -0.002188  -24.647409   0.215400   0.564030   0.827570   0.4056165742693500   0.6080  0.4130   0.7350       0.3979     0.4247        0.5820       0.4293     0.4273        0.6057       0.3868     0.4841        0.6197       0.4139     0.4267        0.5945
3.000  -5.18348553388851  1.151  2.22046  0.04536  0.90000  0.01549254642056  -2.34726  2.84988  -0.00030  -0.00198  -0.002068  -25.597130   0.211540   0.526120   0.799110   0.3638313271186210   0.5820  0.4070   0.7110       0.3901     0.3963        0.5561       0.4227     0.4071        0.5869       0.3688     0.4470        0.5795       0.4117     0.4309        0.5959
3.500  -5.18064916137969  1.151  2.27406  0.04536  0.90000  0.01489171351523  -2.27002  2.84667  -0.00026  -0.00271  -0.001926  -26.409969   0.209756   0.497660   0.767820   0.3268167127622250   0.5620  0.3940   0.6870       0.3858     0.3856        0.5454       0.4104     0.4011        0.5738       0.3763     0.4339        0.5743       0.4016     0.4127        0.5758
4.000  -5.17819218375539  1.151  2.32307  0.04536  0.90000  0.01458020631717  -2.19947  2.83992  -0.00021  -0.00341  -0.001798  -27.131809   0.208748   0.476850   0.735940   0.2935047212753080   0.5400  0.3810   0.6600       0.3766     0.3728        0.5299       0.4104     0.3862        0.5636       0.3621     0.4064        0.5443       0.3943     0.3906        0.5550
4.500  -5.17602497589932  1.151  2.37009  0.04536  0.90000  0.01458710652043  -2.12528  2.82802  -0.00021  -0.00421  -0.001701  -27.792990   0.207737   0.462230   0.704070   0.2630000000000000   0.5250  0.3650   0.6400       0.3604     0.3635        0.5119       0.4116     0.3731        0.5555       0.3675     0.3831        0.5309       0.3853     0.3664        0.5317
5.000  -5.17408634241121  1.151  2.37009  0.04536  0.90000  0.01458710652043  -2.02646  2.82521  -0.00021  -0.00500  -0.001575  -28.313459   0.206721   0.452670   0.672200   0.2350000000000000   0.5220  0.3780   0.6450       0.3612     0.3588        0.5091       0.4469     0.3219        0.5508       0.3806     0.3163        0.4949       0.3799     0.3235        0.4990
    """)
    # Coefficients specific to the site amplification
    SITE_COEFFS = CoeffsTable(sa_damping=5, table="""\
    imt    LnAmax1D1   LnAmax1D2   LnAmax1D3   LnAmax1D4     Src1D1     Src1D2     Src1D3     Src1D4     fsr1    fsr2    fsr3    fsr4
    pga     0.650220    0.709730    0.644340    0.404280   8.429000   1.913680   1.117140   0.836440   1.0000  1.0000  1.0000  1.0000
    0.005   0.650220    0.709730    0.644340    0.404280   8.429000   1.913680   1.117140   0.836440   1.0000  1.0000  1.0000  1.0000
    0.010   0.651810    0.706790    0.646240    0.404280   8.090000   1.882560   1.114440   0.836440   1.0000  1.0000  1.0000  1.0000
    0.020   0.653620    0.694650    0.638650    0.387890   6.992000   1.778610   1.124370   0.830000   1.0000  1.0000  1.0000  1.0500
    0.030   0.654670    0.687550    0.634210    0.378300   6.350000   1.717810   1.130170   0.826240   1.0000  1.0000  1.0000  0.5800
    0.040   0.652850    0.698920    0.606040    0.317370   4.883000   2.052340   1.150800   0.767580   1.0000  1.0060  1.0000  0.4820
    0.050   0.672640    0.701370    0.617160    0.309340   5.043000   2.387130   1.239710   0.786320   1.0000  0.8510  1.0000  0.4720
    0.060   0.699660    0.724450    0.637970    0.325300   6.271000   2.833990   1.348190   0.837750   1.0000  0.8030  1.0440  0.5060
    0.070   0.717130    0.743430    0.654370    0.354120   7.667000   3.294470   1.451810   0.926160   1.0000  0.9180  0.9750  0.5870
    0.080   0.716030    0.785980    0.680190    0.392820   9.034000   3.990910   1.583150   1.022280   1.0000  1.0620  0.9640  0.6830
    0.090   0.725610    0.797210    0.708890    0.421840  11.251000   4.465760   1.732920   1.118020   1.0000  1.1060  0.9800  0.7820
    0.100   0.742000    0.816680    0.718810    0.437360  14.817000   5.045610   1.841340   1.165780   1.0000  1.0710  0.9700  0.8230
    0.120   0.762360    0.845230    0.725810    0.472080  14.817000   5.899600   2.030290   1.285510   0.0000  0.9515  1.0220  1.0290
    0.140   0.752150    0.782960    0.745250    0.512780  14.817000   5.053530   2.281330   1.398080   0.0000  0.6720  0.8890  0.9910
    0.150   0.738190    0.794800    0.761030    0.534320  14.817000   5.204900   2.444130   1.443270   0.0000  0.6310  0.8610  0.9830
    0.160   0.719110    0.808610    0.768130    0.550220  14.817000   5.386940   2.580170   1.471770   0.0000  0.6000  0.8310  0.9730
    0.180   0.654080    0.843310    0.756900    0.572790  14.817000   5.871650   2.741610   1.546940   0.0000  0.5710  0.7480  0.9790
    0.200   0.583950    0.877700    0.717850    0.596740  14.817000   6.573910   2.825870   1.644010   0.0000  0.5650  0.6500  1.0060
    0.250   0.583950    0.937670    0.654700    0.611360  14.817000   8.500000   2.718930   1.790130   0.0000  0.6010  0.4790  1.0270
    0.300   0.583950    0.950000    0.696190    0.626380  14.817000  10.670300   2.417590   1.823450   0.0000  0.5790  0.4490  1.0210
    0.350   0.583950    1.000000    0.779070    0.630120  14.817000  10.670300   2.303750   1.790370   0.0000  0.6790  0.4820  1.0030
    0.400   0.583950    1.000000    0.827760    0.647730  14.817000  10.670300   2.236250   1.768440   0.0000  0.6550  0.4990  1.0100
    0.450   0.583950    1.000000    0.876450    0.641520  14.817000  10.670300   2.216780   1.675390   0.0000  0.6150  0.5150  0.9850
    0.500   0.583950    1.000000    0.925140    0.655820  14.817000  10.670300   2.243380   1.625390   0.0000  0.5500  0.5300  0.9900
    0.600   0.583950    1.000000    0.973830    0.686680  14.817000  10.670300   2.805350   1.524530   0.0000  0.0000  0.5300  1.0060
    0.700   0.583950    1.000000    1.022520    0.705600  14.817000  10.670300   6.658390   1.397240   0.0000  0.0000  0.4990  1.0000
    0.800   0.583950    1.000000    1.071220    0.714290  14.817000  10.670300  30.000000   1.320290   0.0000  0.0000  0.3690  1.0000
    0.900   0.583950    1.000000    1.119910    0.703880  14.817000  10.670300  30.000000   1.266370   0.0000  0.0000  0.3000  0.9600
    1.000   0.583950    1.000000    1.168600    0.678130  14.817000  10.670300  30.000000   1.226800   0.0000  0.0000  0.2000  0.9040
    1.250   0.583950    1.000000    1.217290    0.611190  14.817000  10.670300  30.000000   1.220650   0.0000  0.0000  0.0000  0.7380
    1.500   0.583950    1.000000    1.265980    0.547360  14.817000  10.670300  30.000000   1.318050   0.0000  0.0000  0.0000  0.5350
    2.000   0.583950    1.000000    1.314670    0.459440  14.817000  10.670300  30.000000   2.124850   0.0000  0.0000  0.0000  0.3580
    2.500   0.583950    1.000000    1.363360    0.408460  14.817000  10.670300  30.000000  14.381810   0.0000  0.0000  0.0000  0.0000
    3.000   0.583950    1.000000    1.412050    0.364210  14.817000  10.670300  30.000000  14.381810   0.0000  0.0000  0.0000  0.0000
    3.500   0.583950    1.000000    1.460750    0.329840  14.817000  10.670300  30.000000  14.381810   0.0000  0.0000  0.0000  0.0000
    4.000   0.583950    1.000000    1.509440    0.309120  14.817000  10.670300  30.000000  14.381810   0.0000  0.0000  0.0000  0.0000
    4.500   0.583950    1.000000    1.558130    0.292510  14.817000  10.670300  30.000000  14.381810   0.0000  0.0000  0.0000  0.0000
    5.000   0.583950    1.000000    1.606820    0.547360  14.817000  10.670300  30.000000  14.381810   0.0000  0.0000  0.0000  0.0000
    """) 
[docs]class ZhaoEtAl2016SSlabSiteSigma(ZhaoEtAl2016SSlab):
    """
    Subclass of the Zhao et al. (2016c) subduction in-slab GMPE for the
    case of site-dependent within-event variability
    """
[docs]    def get_stddevs(self, C, n_sites, idx, stddev_types):
        """
        Returns the intra-event standard deviation calibrated for the
        specific site class
        """
        stddevs = []
        tau = C["tau"] + np.zeros(n_sites)
        phi = np.zeros(n_sites)
        for i in range(1, 5):
            phi[idx[i]] += C["sc{:g}_sigma_S".format(i)]
        for stddev_type in stddev_types:
            assert stddev_type in self.DEFINED_FOR_STANDARD_DEVIATION_TYPES
            if stddev_type == const.StdDev.TOTAL:
                stddevs.append(np.sqrt(phi ** 2. + tau ** 2.))
            elif stddev_type == const.StdDev.INTRA_EVENT:
                stddevs.append(phi)
            elif stddev_type == const.StdDev.INTER_EVENT:
                stddevs.append(tau)
        return stddevs