Source code for openquake.hazardlib.gsim.ghasemi_2009
# -*- coding: utf-8 -*-# vim: tabstop=4 shiftwidth=4 softtabstop=4## Copyright (C) 2014-2025 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:'GhasemiEtAl2009' """importnumpyasnpfromscipy.constantsimportgfromopenquake.hazardlib.gsim.baseimportGMPE,CoeffsTablefromopenquake.hazardlibimportconstfromopenquake.hazardlib.imtimportPGA,SAdef_compute_distance_scaling(C,rrup,mag):""" Returns the distance scaling term """a5=0.42rscale1=rrup+C["a4"]*(10.0**(a5*mag))returnC["a3"]*np.log10(rscale1)def_compute_magnitude_scaling(C,mag):""" Returns the magnitude scaling term """returnC["a2"]*mag+C["a1"]def_compute_site_amplification(C,ctx):""" Compute the fourth and fifth terms of the equation 1 described on paragraph """sSoil,sRock=_get_site_type_dummy_variables(ctx)return(C["a6"]*sRock+C['a7']*sSoil)def_get_site_type_dummy_variables(ctx):""" Get site type dummy variables, two site type is considered based on the shear wave velocity intervals in the uppermost 30 m, Vs30: Soil: Vs30 < 760 m/s Rock: Vs30 >= 760 m/s """sRock=np.zeros(len(ctx.vs30))sSoil=np.zeros(len(ctx.vs30))# Soil; Vs30 < 760 m/s.idx=(ctx.vs30>=1E-10)&(ctx.vs30<760)sSoil[idx]=1.0# Rock; Vs30 >= 760 m/s.idx=(ctx.vs30>=760)sRock[idx]=1.0returnsSoil,sRock
[docs]classGhasemiEtAl2009(GMPE):""" Implements the PGA GMPE of H.Ghasemi, M.Zare, Y,Fukushima, K.Koketsu (2009a) An empirical spectral ground-motion model for Iran, J Seismol, 13:499-515, DOI 10.1007/s10950-008-9143-x. """#: The GMPE is derived from shallow earthquakes in California and JapanDEFINED_FOR_TECTONIC_REGION_TYPE=const.TRT.ACTIVE_SHALLOW_CRUST#: Supported intensity measure types is spectral acceleration#: The attenuation relation developed by Ghasemi et. al estimates only the 'SA'.#: Here in this code, the intensity measure of 'PGA' is also considered #: with the same coefficients as SA(0.05 s), in case of need.DEFINED_FOR_INTENSITY_MEASURE_TYPES={PGA,SA}#: Supported intensity measure component is the average horizontal#: component#: :attr:`openquake.hazardlib.const.IMC.GEOMETRIC_MEAN`,DEFINED_FOR_INTENSITY_MEASURE_COMPONENT=const.IMC.GMRotI50#: Supported standard deviation types is total.DEFINED_FOR_STANDARD_DEVIATION_TYPES={const.StdDev.TOTAL}#: Required site parameters is Vs30REQUIRES_SITES_PARAMETERS={'vs30'}#: Required rupture parameters are magnitudeREQUIRES_RUPTURE_PARAMETERS={'mag'}#: Required distance measure is rupture distanceREQUIRES_DISTANCES={'rrup'}
[docs]defcompute(self,ctx:np.recarray,imts,mean,sig,tau,phi):""" See :meth:`superclass method <.base.GroundShakingIntensityModel.compute>` for spec of input and result values. """form,imtinenumerate(imts):C=self.COEFFS[imt]imean=(_compute_magnitude_scaling(C,ctx.mag)+_compute_distance_scaling(C,ctx.rrup,ctx.mag)+_compute_site_amplification(C,ctx))# Original GMPE returns log10 acceleration in cm/s/s# Converts to natural logarithm of gmean[m]=np.log((10.0**(imean-2.0))/g)# Convert from common logarithm to natural logarithmsig[m]=np.log(10**C['sigma'])
#: The attenuation relation developed by Ghasemi et. al estimates only the 'SA'.#: Here in this code, a line for intensity measure of 'PGA' is also considered #: with the same coefficients as SA(0.05 s), in case of need. COEFFS=CoeffsTable(sa_damping=5,table=""" IMT a1 a2 a3 a4 a6 a7 sigma PGA 0.868 0.405 -1.424 0.014 0.859 0.836 0.319 0.05 0.868 0.405 -1.424 0.014 0.859 0.836 0.319 0.06 0.906 0.398 -1.440 0.015 0.944 0.911 0.322 0.07 0.957 0.394 -1.449 0.015 0.978 0.937 0.325 0.08 0.700 0.387 -1.427 0.015 1.282 1.238 0.325 0.09 0.966 0.384 -1.413 0.016 1.046 1.005 0.326 0.10 0.904 0.380 -1.396 0.016 1.136 1.096 0.331 0.20 0.786 0.425 -1.215 0.015 0.663 0.748 0.319 0.30 0.432 0.474 -1.134 0.014 0.477 0.605 0.318 0.40 0.246 0.528 -1.080 0.011 0.135 0.289 0.327 0.50 0.003 0.571 -1.069 0.010 0.002 0.173 0.333 0.60 -0.118 0.608 -1.053 0.010 -0.209 -0.037 0.337 0.70 -0.234 0.635 -1.034 0.009 -0.361 -0.194 0.347 0.80 -0.331 0.673 -1.083 0.010 -0.450 -0.300 0.336 0.90 -0.459 0.706 -1.092 0.011 -0.570 -0.424 0.335 1.00 -0.567 0.727 -1.071 0.011 -0.678 -0.533 0.336 2.00 -1.209 0.876 -1.104 0.011 -1.291 -1.183 0.363 3.00 -1.436 0.920 -1.151 0.012 -1.515 -1.411 0.370 """)