Source code for openquake.hazardlib.gsim.berge_thierry_2003
# -*- coding: utf-8 -*-
# vim: tabstop=4 shiftwidth=4 softtabstop=4
#
# Copyright (C) 2014-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:`BergeThierryEtAl2003SIGMA`.
"""
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
from scipy.constants import g
[docs]class BergeThierryEtAl2003SIGMA(GMPE):
    """
    Implements GMPE developed by Catherine Berge-Thierry, Fabrice Cotton,
    Oona Scoti, Daphne-Anne Griot-Pommera, and Yoshimitsu Fukushima and
    published as "New Empirical Response Spectral Attenuation Laws For Moderate
    European Earthquakes" (2003, Journal of Earthquake Engineering, 193-222)
    The class implements also adjustment of the sigma value as required by
    the SIGMA project to make the GMPE usable with Mw (the GMPE was
    originally developed for Ms).
    """
    #: Supported tectonic region type is active shallow crust, see
    #: `Introduction`, page 194.
    DEFINED_FOR_TECTONIC_REGION_TYPE = const.TRT.ACTIVE_SHALLOW_CRUST
    #: Supported intensity measure types are spectral acceleration, and peak
    #: ground acceleration. The original manuscript provide coefficients only
    #: SA. For PGA, coefficients are assumed equal to the ones of SA for the
    #: smallest period (0.03 s)
    DEFINED_FOR_INTENSITY_MEASURE_TYPES = set([
        PGA,
        SA
    ])
    #: Supported intensity measure component is horizontal, see page 196.
    DEFINED_FOR_INTENSITY_MEASURE_COMPONENT = const.IMC.HORIZONTAL
    #: Supported standard deviation type is total, see table 3, page 203
    DEFINED_FOR_STANDARD_DEVIATION_TYPES = set([
        const.StdDev.TOTAL
    ])
    #: Required site parameters is Vs30, used to distinguish between rock sites
    #: (Vs30 >= 800) m/s and alluvium sites (300 < Vs < 800), see section 2.2.3
    #: page 201
    REQUIRES_SITES_PARAMETERS = set(('vs30', ))
    #: Required rupture parameters is magnitude, see equation 1 page 201
    REQUIRES_RUPTURE_PARAMETERS = set(('mag', ))
    #: Required distance measure is hypocentral distance, see equation 1 page
    #: 201
    REQUIRES_DISTANCES = set(('rhypo', ))
[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.
        """
        # extract dictionaries of coefficients specific to required
        # intensity measure type
        C = self.COEFFS[imt]
        # clip distance at 4 km, minimum distance for which the equation is
        # valid (see section 2.2.4, page 201). This also avoids singularity
        # in the equation
        rhypo = dists.rhypo
        rhypo[rhypo < 4.] = 4.
        mean = C['a'] * rup.mag + C['b'] * rhypo - np.log10(rhypo)
        mean[sites.vs30 >= 800] += C['c1']
        mean[sites.vs30 < 800] += C['c2']
        # convert from log10 to ln, and from cm/s2 to g
        mean = mean * np.log(10) - 2 * np.log(10) - np.log(g)
        stddevs = self._get_stddevs(C, stddev_types, rhypo.shape[0])
        return mean, stddevs 
    def _get_stddevs(self, C, stddev_types, num_sites):
        """
        Return total standard deviation.
        """
        assert all(stddev_type in self.DEFINED_FOR_STANDARD_DEVIATION_TYPES
                   for stddev_type in stddev_types)
        # adjustement for sigma, as explained in section 3.7.3 in
        # Delivrable_SIGMA-V02-2012-D4-18+reviews
        sigma = np.zeros(num_sites) + C['sigma'] * np.log(10)
        sigma = np.sqrt(sigma ** 2 + (C['a'] ** 2) * (0.2 ** 2))
        stddevs = [sigma for _ in stddev_types]
        return stddevs
    #: Coefficient tables are constructed from the electronic suplements of
    #: the original paper. Original coefficients in function of frequency.
    COEFFS = CoeffsTable(sa_damping=5, table="""\
    IMT         a             b             c1           c2         sigma
    pga         0.3118000    -0.0009303     1.537000     1.57300    0.2923
    0.029412    0.3118000    -0.0009303     1.537000     1.57300    0.2923
    0.030000    0.3114000    -0.0009334     1.541000     1.57600    0.2924
    0.032258    0.3097000    -0.0009422     1.558000     1.58900    0.2928
    0.034000    0.3083000    -0.0009547     1.573000     1.60200    0.2935
    0.035714    0.3068000    -0.0009822     1.593000     1.61800    0.2947
    0.040000    0.3033000    -0.0011190     1.653000     1.66500    0.2982
    0.045455    0.3016000    -0.0012820     1.701000     1.70000    0.3015
    0.050000    0.2992000    -0.0013410     1.740000     1.72900    0.3009
    0.053000    0.2981000    -0.0014290     1.766000     1.74900    0.3022
    0.055556    0.2969000    -0.0014320     1.785000     1.76500    0.3027
    0.058824    0.2960000    -0.0014600     1.809000     1.78400    0.3040
    0.059999    0.2960000    -0.0014720     1.814000     1.78800    0.3041
    0.062500    0.2965000    -0.0015070     1.826000     1.79600    0.3047
    0.064998    0.2944000    -0.0015150     1.851000     1.81700    0.3059
    0.066667    0.2933000    -0.0015130     1.865000     1.82900    0.3059
    0.068966    0.2924000    -0.0015460     1.881000     1.84200    0.3048
    0.069999    0.2920000    -0.0015700     1.888000     1.84900    0.3046
    0.071429    0.2909000    -0.0015830     1.901000     1.86100    0.3047
    0.074074    0.2879000    -0.0015550     1.926000     1.88700    0.3059
    0.075002    0.2871000    -0.0015400     1.933000     1.89300    0.3066
    0.076923    0.2857000    -0.0015200     1.947000     1.90600    0.3072
    0.080000    0.2866000    -0.0015310     1.954000     1.91100    0.3061
    0.083333    0.2858000    -0.0015520     1.968000     1.92700    0.3058
    0.084998    0.2856000    -0.0015830     1.976000     1.93500    0.3053
    0.086957    0.2848000    -0.0015710     1.987000     1.94600    0.3042
    0.090001    0.2819000    -0.0015360     2.011000     1.97300    0.3020
    0.090909    0.2809000    -0.0015280     2.020000     1.98100    0.3016
    0.095238    0.2781000    -0.0015430     2.054000     2.01000    0.3017
    0.100000    0.2786000    -0.0014740     2.059000     2.01600    0.3019
    0.105260    0.2776000    -0.0014220     2.072000     2.03400    0.3043
    0.110000    0.2783000    -0.0014420     2.075000     2.04500    0.3073
    0.111110    0.2783000    -0.0014380     2.077000     2.04700    0.3079
    0.117650    0.2793000    -0.0014380     2.081000     2.05600    0.3103
    0.120000    0.2806000    -0.0014360     2.076000     2.05400    0.3106
    0.125000    0.2831000    -0.0014150     2.066000     2.05100    0.3121
    0.129030    0.2863000    -0.0014400     2.052000     2.04200    0.3137
    0.130010    0.2867000    -0.0014250     2.050000     2.04000    0.3142
    0.133330    0.2887000    -0.0013970     2.040000     2.03300    0.3156
    0.137930    0.2903000    -0.0013380     2.032000     2.02800    0.3161
    0.140000    0.2915000    -0.0013220     2.027000     2.02200    0.3166
    0.142860    0.2933000    -0.0013070     2.018000     2.01400    0.3173
    0.148150    0.2950000    -0.0012560     2.009000     2.01000    0.3191
    0.149990    0.2955000    -0.0012180     2.004000     2.00900    0.3196
    0.153850    0.2955000    -0.0010520     1.997000     2.00700    0.3201
    0.160000    0.2939000    -0.0008056     1.996000     2.01300    0.3200
    0.166670    0.2952000    -0.0007097     1.989000     2.00600    0.3215
    0.170010    0.2974000    -0.0006986     1.978000     1.99400    0.3230
    0.173910    0.3016000    -0.0007341     1.957000     1.97000    0.3247
    0.179990    0.3089000    -0.0007793     1.915000     1.93000    0.3267
    0.181820    0.3109000    -0.0007826     1.901000     1.91900    0.3271
    0.190010    0.3147000    -0.0007369     1.868000     1.89400    0.3262
    0.190480    0.3149000    -0.0007337     1.867000     1.89300    0.3262
    0.200000    0.3167000    -0.0006889     1.843000     1.88100    0.3250
    0.208330    0.3196000    -0.0006719     1.814000     1.86100    0.3261
    0.217390    0.3254000    -0.0006750     1.770000     1.82500    0.3281
    0.219780    0.3271000    -0.0006918     1.758000     1.81500    0.3292
    0.227270    0.3303000    -0.0006678     1.726000     1.79200    0.3320
    0.238100    0.3340000    -0.0006171     1.683000     1.76200    0.3367
    0.239980    0.3344000    -0.0005988     1.677000     1.75800    0.3371
    0.250000    0.3365000    -0.0005750     1.651000     1.73600    0.3394
    0.259740    0.3430000    -0.0007075     1.609000     1.69700    0.3422
    0.263160    0.3442000    -0.0007200     1.599000     1.68800    0.3429
    0.277780    0.3501000    -0.0007520     1.550000     1.64500    0.3444
    0.280030    0.3511000    -0.0007530     1.542000     1.63800    0.3447
    0.290020    0.3555000    -0.0007836     1.506000     1.60500    0.3458
    0.300030    0.3590000    -0.0008520     1.477000     1.58100    0.3477
    0.303030    0.3602000    -0.0008737     1.466000     1.57300    0.3483
    0.316960    0.3671000    -0.0009272     1.412000     1.52500    0.3491
    0.320000    0.3690000    -0.0009468     1.397000     1.51200    0.3487
    0.333330    0.3742000    -0.0010100     1.352000     1.47200    0.3474
    0.340020    0.3752000    -0.0010060     1.337000     1.46100    0.3469
    0.344830    0.3760000    -0.0009698     1.326000     1.45200    0.3471
    0.357140    0.3807000    -0.0009114     1.286000     1.41500    0.3481
    0.359970    0.3822000    -0.0009039     1.275000     1.40500    0.3484
    0.370370    0.3867000    -0.0008635     1.237000     1.37200    0.3492
    0.379940    0.3909000    -0.0008074     1.199000     1.33900    0.3500
    0.384620    0.3931000    -0.0007955     1.179000     1.32100    0.3507
    0.400000    0.3997000    -0.0007078     1.119000     1.26700    0.3517
    0.416670    0.4028000    -0.0006613     1.078000     1.23200    0.3512
    0.419990    0.4034000    -0.0006513     1.070000     1.22600    0.3513
    0.434780    0.4070000    -0.0006167     1.029000     1.19100    0.3521
    0.439950    0.4089000    -0.0006118     1.011000     1.17400    0.3527
    0.454550    0.4148000    -0.0005931     0.960100     1.12500    0.3547
    0.459980    0.4165000    -0.0005816     0.944000     1.10900    0.3549
    0.476190    0.4222000    -0.0005404     0.893100     1.05800    0.3555
    0.480080    0.4239000    -0.0005484     0.879500     1.04500    0.3556
    0.500000    0.4323000    -0.0005680     0.815000     0.97970    0.3555
    0.520020    0.4372000    -0.0005396     0.764200     0.93240    0.3568
    0.526320    0.4379000    -0.0005050     0.752200     0.92080    0.3570
    0.539960    0.4394000    -0.0004330     0.727100     0.89590    0.3574
    0.555560    0.4418000    -0.0003601     0.694100     0.86610    0.3587
    0.559910    0.4425000    -0.0003380     0.684400     0.85710    0.3592
    0.580050    0.4472000    -0.0002702     0.635700     0.81170    0.3610
    0.588240    0.4492000    -0.0002522     0.615700     0.79260    0.3609
    0.599880    0.4516000    -0.0002175     0.589500     0.76820    0.3603
    0.619960    0.4559000    -0.0001953     0.547800     0.72820    0.3604
    0.625000    0.4569000    -0.0001995     0.538300     0.71870    0.3609
    0.640200    0.4596000    -0.0001666     0.510600     0.69100    0.3625
    0.660070    0.4637000    -0.0001549     0.472500     0.65200    0.3647
    0.666670    0.4655000    -0.0001550     0.457300     0.63630    0.3649
    0.679810    0.4688000    -0.0001668     0.428400     0.60810    0.3655
    0.699790    0.4732000    -0.0001700     0.385700     0.56760    0.3667
    0.714290    0.4771000    -0.0002019     0.354800     0.53540    0.3680
    0.750190    0.4847000    -0.0003009     0.287100     0.46810    0.3700
    0.769230    0.4875000    -0.0003122     0.254500     0.43800    0.3703
    0.800000    0.4940000    -0.0002568     0.190600     0.37820    0.3714
    0.833330    0.5010000    -0.0001932     0.126400     0.31450    0.3746
    0.850340    0.5040000    -0.0001433     0.096150     0.28420    0.3758
    0.900090    0.5098000     3.28E-05      0.020060     0.21300    0.3747
    0.909090    0.5104000     8.39E-05      0.008195     0.20220    0.3744
    1.000000    0.5199000     0.0002516    -0.116200     0.08290    0.3737
    1.100100    0.5273000     0.0003908    -0.212300    -0.02900    0.3794
    1.111100    0.5278000     0.0004074    -0.220700    -0.03875    0.3804
    1.200500    0.5361000     0.0004479    -0.313300    -0.13380    0.3838
    1.250000    0.5409000     0.0004860    -0.367900    -0.18910    0.3877
    1.300400    0.5444000     0.0005329    -0.411300    -0.23770    0.3920
    1.400600    0.5481000     0.0007676    -0.487000    -0.31550    0.3935
    1.428600    0.5494000     0.0008272    -0.509500    -0.33850    0.3941
    1.499300    0.5527000     0.0009124    -0.560400    -0.39350    0.3932
    1.600000    0.5557000     0.0009844    -0.618600    -0.45830    0.3919
    1.666700    0.5580000     0.0010850    -0.656400    -0.50260    0.3919
    1.798600    0.5620000     0.0012450    -0.725800    -0.58340    0.3942
    2.000000    0.5622000     0.0013750    -0.796300    -0.66600    0.4030
    2.197800    0.5617000     0.0016520    -0.865600    -0.73950    0.4055
    2.398100    0.5641000     0.0018290    -0.940600    -0.81580    0.4093
    2.500000    0.5654000     0.0019210    -0.978700    -0.85420    0.4110
    2.597400    0.5677000     0.0020060    -1.019000    -0.89800    0.4130
    2.801100    0.5666000     0.0022770    -1.071000    -0.94950    0.4202
    3.003000    0.5683000     0.0024490    -1.130000    -1.01400    0.4255
    3.205100    0.5686000     0.0025360    -1.179000    -1.06900    0.4301
    3.333300    0.5705000     0.0025330    -1.220000    -1.11100    0.4329
    3.401400    0.5715000     0.0025410    -1.243000    -1.13500    0.4340
    3.597100    0.5727000     0.0025730    -1.300000    -1.19400    0.4359
    3.802300    0.5712000     0.0026620    -1.350000    -1.24200    0.4365
    4.000000    0.5722000     0.0027110    -1.417000    -1.30300    0.4344
    4.504500    0.5856000     0.0024490    -1.662000    -1.52000    0.4278
    5.000000    0.5990000     0.0021050    -1.886000    -1.72900    0.4233
    5.494500    0.6106000     0.0019410    -2.072000    -1.90400    0.4260
    5.988000    0.6160000     0.0018800    -2.201000    -2.02800    0.4284
    6.993000    0.6175000     0.0017660    -2.373000    -2.19200    0.4299
    8.000000    0.6145000     0.0017210    -2.491000    -2.30800    0.4284
    9.009000    0.6122000     0.0016370    -2.592000    -2.40800    0.4236
    10.00000    0.6086000     0.0015630    -2.668000    -2.48500    0.4183
    """)