Source code for openquake.hazardlib.gsim.abrahamson_gulerce_2020
# -*- coding: utf-8 -*-# vim: tabstop=4 shiftwidth=4 softtabstop=4## Copyright (C) 2015-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:`AbrahamsonGulerce2020SInter`, :class:`AbrahamsonGulerce2020SSlab`"""importnumpyasnpfromopenquake.hazardlib.gsim.baseimportGMPE,CoeffsTable,add_aliasfromopenquake.hazardlibimportconstfromopenquake.hazardlib.imtimportPGA,SAfromopenquake.hazardlib.gsim.utils_usgs_basin_scalingimport \
_get_z2pt5_usgs_basin_scaling# The regions for which the model is supported. If not listed then the# global model (GLO) should be appliedSUPPORTED_REGIONS=["GLO","USA-AK","CAS","CAM","JPN","NZL","SAM","TWN"]# Region-specific constants or references to the corresponding column# of the coefficients tableREGIONAL_TERMS={"GLO":{"C1s":7.5,"a1":"a1",},"USA-AK":{"C1s":7.9,# In-slab magnitude scaling breakpoint"a1":"a31",# Region-specific base constant"a2-adj":None,# Adjustment to the geometric spreading term"a6-adj":"a24",# Adjustment to the anelastic attenuation term"a12-adj":"a17",# Adjustment to the linear Vs30 scaling term"Z25-adj":None,# Adjustment to the basin depth scaling term},"CAS":{"C1s":7.1,"a1":"a32","a2-adj":None,"a6-adj":"a25","a12-adj":"a18","Z25-adj":"a39",},"CAM":{"C1s":7.4,"a1":"a33","a2-adj":None,"a6-adj":"a26","a12-adj":"a19","Z25-adj":None,},"JPN":{"C1s":7.6,"a1":"a34","a2-adj":None,"a6-adj":"a27","a12-adj":"a20","Z25-adj":"a41",},"NZL":{"C1s":8.0,"a1":"a35","a2-adj":None,"a6-adj":"a28","a12-adj":"a21","Z25-adj":None,},"SAM":{"C1s":7.5,"a1":"a36","a2-adj":None,"a6-adj":"a29","a12-adj":"a22","Z25-adj":None,},"TWN":{"C1s":7.7,"a1":"a37","a2-adj":"a16","a6-adj":"a30","a12-adj":"a23","Z25-adj":None,},}# Region- and period-independent constant valuesCONSTS={"C4":10.0,"a3":0.1,"a4":0.73,"a5":0.0,"a9":0.4,"a15":-0.1,"a17":0.0,"a19":0.0,"a45":0.34,"d0":0.47,"n":1.18,"c":1.88,"tau_lin":0.47,"phi_amp":0.3,"alpha_phi3":0.42,"T1_phi2":0.03,"T2_phi2":0.075,"T3_phi2":0.20,"T4_phi2":1.0,"T1_phi3":0.03,"T2_phi3":0.075,"T3_phi3":0.10,"T4_phi3":0.3,"d3_phi2":0.109,"d4_phi2":0.062,"d5_phi2":0.470,"d3_phi3":0.242,"d4_phi3":0.000,"d5_phi3":0.000,}
[docs]defget_base_term(C,region,apply_adjust):""" Returns the region-specific base term (a1 - Equation 3.1) :param C: Coefficient dictionary for the specfic IMT :param str region: Region identifier :param bool apply_adjust: For Alaska and Cascadia apply the modeller-defined adjustment factors to the base term (True) or else leave regionalised but unadjusted (False) """ifregionin("USA-AK","CAS")andapply_adjust:# For Alaska and Cascdia, apply the adjustments to the coefficient a1returnC[REGIONAL_TERMS[region]["a1"]]+C["{:s}_Adj".format(region)]else:returnC[REGIONAL_TERMS[region]["a1"]]
[docs]defget_magnitude_scaling_term(C,trt,region,mag):""" Returns the magnitude scaling term (defined in Eq 3.3) and regional constant :param str trt: Tectonic region type :param np.ndarray mag: Earthquake magnitude """f_mag_quad=C["a13"]*((10.0-mag)**2.0)a4=CONSTS["a4"]iftrt==const.TRT.SUBDUCTION_INTERFACE:c1=C["c1i"]else:c1=REGIONAL_TERMS[region]["C1s"]a4+=CONSTS["a45"]f_mag=np.where(mag<=c1,f_mag_quad+a4*(mag-c1),f_mag_quad+CONSTS["a5"]*(mag-c1))returnf_mag
[docs]defget_geometric_spreading_term(C,region,mag,rrup):""" Returns the geometric spreading term defined in equation 3.1 :param numpy.ndarray rrup: Rupture distances (km) """a_2=C["a2"]ifregion=="TWN":a_2+=C[REGIONAL_TERMS[region]["a2-adj"]]f_r=a_2+CONSTS["a3"]*(mag-7.0)hff=CONSTS["C4"]*np.exp(CONSTS["a9"]*(mag-6.0))f_r*=np.log(rrup+hff)returnf_r
[docs]defget_anelastic_attenuation_term(C,region,rrup):""" Returns the regionally-adjusted anelastic attenuation term """a_6=C["a6"]ifregion!="GLO":a_6+=C[REGIONAL_TERMS[region]["a6-adj"]]returna_6*rrup
[docs]defget_inslab_scaling_term(C,trt,region,mag,rrup):""" For inslab events, returns the inslab scaling term defined in equation 3.5 and corrected in the Erratum """iftrt==const.TRT.SUBDUCTION_INTERFACE:# Doesn't apply to interface eventsreturn0.0hff=10.0*np.exp(CONSTS["a9"]*(mag-6.0))c1s=REGIONAL_TERMS[region]["C1s"]returnC["a10"]+(CONSTS["a4"]+CONSTS["a45"])*(c1s-7.5)+\
C["a14"]*np.log(rrup+hff)
[docs]defget_rupture_depth_scaling_term(C,trt,ctx):""" Returns the rupture depth scaling described in Equation 3.6, which takes the value 0 for interface events :param numpy.ndarray ztor: Top of rupture depths (km) """iftrt==const.TRT.SUBDUCTION_INTERFACE:# Not defined for interface eventsreturn0.0ifisinstance(ctx.ztor,np.ndarray):f_dep=C["a11"]*(ctx.ztor-50.0)f_dep[ctx.ztor>200.0]=C["a11"]*150.0idx=ctx.ztor<=50.0f_dep[idx]=C["a8"]*(ctx.ztor[idx]-50.0)elifctx.ztor>200.0:f_dep=C["a11"]*150.0elifctx.ztor<=50.0:f_dep=C["a8"]*(ctx.ztor-50.0)else:f_dep=C["a11"]*(ctx.ztor-50.0)returnf_dep
[docs]defget_site_amplification_term(C,region,vs30,pga1000):""" Returns the shallow site amplification term as descrbied in Equation 3.7, and corrected in the Erratum :param numpy.ndarray vs30: 30-m averaged shearwave velocity (m/s) :param numpy.ndarray pga1000: Peak Ground Acceleration (PGA), g, on a reference bedrock of 1000 m/s """a12=C["a12"]ifregion!="GLO":# Apply regional adjustmenta12+=C[REGIONAL_TERMS[region]["a12-adj"]]# V* is defined according to Equation 3.8 (i.e. Vs30 clipped at 1000 m/s# in the Erratum)vstar=np.clip(vs30,-np.inf,1000.0)vnorm=vstar/C["vlin"]fsite=a12*np.log(vnorm)idx=vstar>=C["vlin"]# Linear site termfsite[idx]+=(C["b"]*CONSTS["n"]*np.log(vnorm[idx]))idx=np.logical_not(idx)# Nonlinear site termfsite[idx]+=C["b"]*(np.log(pga1000[idx]+CONSTS["c"]*(vnorm[idx]**CONSTS["n"]))-np.log(pga1000[idx]+CONSTS["c"]))returnfsite
[docs]defget_reference_basin_depth(region,vs30):""" For the Cascadia and Japan regions a reference basin depth, dependent on the Vs30, is returned according to equations 2.1 and 2.2 """ifregion=="CAS":ln_zref=np.clip(8.52-0.88*np.log(vs30/200.0),7.6,8.52)elifregion=="JPN":ln_zref=np.clip(7.3-2.066*np.log(vs30/170.0),4.1,7.3)else:raiseValueError("No reference basin depth term defined for region %s"%region)returnnp.exp(ln_zref)
def_get_basin_term(C,ctx,region,usgs_baf):""" Returns the basin depth scaling term, applicable only for the Cascadia and Japan regions, defined in equations 3.9 - 3.11 and corrected in the Erratum :param numpy.ndarray z25: Depth to 2.5 m/s shearwave velocity layer (km) """ifregionnotin("CAS","JPN"):# Basin depth defined only for Cascadia and Japan, so return 0return0.0# Convert z25 from km to mz25=1000.0*ctx.z2pt5# Define the reference basin depth from Vs30z25_ref=get_reference_basin_depth(region,ctx.vs30)# Normalise the basin depth term (Equation 3.9)ln_z25_prime=np.log((z25+50.0)/(z25_ref+50.0))f_basin=np.zeros(ctx.vs30.shape)ifregion=="JPN":# Japan Basin (Equation 3.10)f_basin=C["a41"]*np.clip(ln_z25_prime,-2.0,np.inf)else:# Cascadia Basin (Equation 3.11)idx=ln_z25_prime>0.0f_basin[idx]=C["a39"]*ln_z25_prime[idx]*usgs_baf[idx]returnf_basin
[docs]defget_acceleration_on_reference_rock(C,trt,region,ctx,apply_adjustment):""" Returns acceleration on reference rock - intended for use primarily with PGA. Overrides the Vs30 values and removes any basin depth terms """# Set all Vs30 to 1000 m/svs30=np.full_like(ctx.vs30,1000.)# On rock the amplification is only linear, so PGA1000 is not used# set to a null arraynull_pga1000=np.zeros(vs30.shape)# No basin depth is calculated herereturn(get_base_term(C,region,apply_adjustment)+get_magnitude_scaling_term(C,trt,region,ctx.mag)+get_geometric_spreading_term(C,region,ctx.mag,ctx.rrup)+get_anelastic_attenuation_term(C,region,ctx.rrup)+get_rupture_depth_scaling_term(C,trt,ctx)+get_inslab_scaling_term(C,trt,region,ctx.mag,ctx.rrup)+get_site_amplification_term(C,region,vs30,null_pga1000))
[docs]defget_mean_acceleration(C,trt,region,ctx,pga1000,apply_adjustment,usgs_baf):""" Returns the mean acceleration on soil """return(get_base_term(C,region,apply_adjustment)+get_magnitude_scaling_term(C,trt,region,ctx.mag)+get_geometric_spreading_term(C,region,ctx.mag,ctx.rrup)+get_anelastic_attenuation_term(C,region,ctx.rrup)+get_rupture_depth_scaling_term(C,trt,ctx)+get_inslab_scaling_term(C,trt,region,ctx.mag,ctx.rrup)+get_site_amplification_term(C,region,ctx.vs30,pga1000)+_get_basin_term(C,ctx,region,usgs_baf))
def_get_f2(t1,t2,t3,t4,alpha,period):""" Returns the linear phi short-period scaling term (f2) defined in equation 5.3 and corrected in the Erratum """ifperiod<=t1:f2=1.0-alphaelifperiod<=t2:f2=1.0-alpha*(np.log(period/t2)/np.log(t1/t2))elifperiod<=t3:f2=1.0elifperiod<t4:f2=np.log(period/t4)/np.log(t3/t4)else:f2=0.0returnf2def_get_a_phi2(rrup,d3,d4,d5):""" Returns Aphi, the short period linear phi normalising factor to be added to the base linear within-event term, as defined in Equation 5.4 """rrup_norm=(rrup-225.0)/225.0a_phi2=d3+d4*rrup_norm+d5*(rrup_norm**2.)a_phi2[rrup<225]=d3a_phi2[rrup>450.0]=d3+d4+d5returna_phi2
[docs]defget_phi_lin_model(C,C_PGA,region,period,rrup):""" Returns the distance-dependent linear phi term for both PGA and the required spectral period. The term is regionally dependent with additional factors added on for Central America, Japan and South America Several equations are used here, described fully in section 5.3 :param float period: Spectral period of ground motion """# Define phi1 term according to equation 5.2rrup_norm=(rrup-150.0)/300.0phi1_sq=np.clip(C["d1"]+C["d2"]*rrup_norm,C["d1"],C["d1"]+C["d2"])phi1_sq_pga=np.clip(C_PGA["d1"]+C_PGA["d2"]*rrup_norm,C_PGA["d1"],C_PGA["d1"]+C_PGA["d2"])ifregionin("USA-AK","CAS","NZL","TWN","GLO"):# For Alaska, Cascadia, New Zealand and Taiwan then phi_lin corresponds# only to phi1returnnp.sqrt(phi1_sq),np.sqrt(phi1_sq_pga)# Phi 2 model# Alpha according to equation 5.6alpha=np.clip(1.0-0.0036*(rrup-250.0),0.28,1.0)# Retrieve the specific corner periods needed for phi2t1,t2,t3,t4=CONSTS["T1_phi2"],CONSTS["T2_phi2"],CONSTS["T3_phi2"],\
CONSTS["T4_phi2"]# Retrieve the function describing the trapezoidal shape of the increase# in linear phi at short periodsf2_phi2=_get_f2(t1,t2,t3,t4,alpha,period)f2_phi2_pga=1.0-alpha# Retrieve constants needed for the amplitude scaling factor for# the phi2 increased3,d4,d5=CONSTS["d3_phi2"],CONSTS["d4_phi2"],CONSTS["d5_phi2"]a_phi2=_get_a_phi2(rrup,d3,d4,d5)phi2_sq=a_phi2*f2_phi2phi2_sq_pga=a_phi2*f2_phi2_pgaifregion=="CAM":# For Central America and Mexico only the phi1 and phi2 terms are usedreturnnp.sqrt(phi1_sq+phi2_sq),np.sqrt(phi1_sq_pga+phi2_sq_pga)# Phi 3 model - applies to Japan and South America# Alpha term is constantalpha=CONSTS["alpha_phi3"]# Retrieve normalised phi_lin scaling functiont1,t2,t3,t4=CONSTS["T1_phi3"],CONSTS["T2_phi3"],CONSTS["T3_phi3"],\
CONSTS["T4_phi3"]f2_phi3=_get_f2(t1,t2,t3,t4,alpha,period)f2_phi3_pga=1.0-alpha# In this case the amplitude of additional variance is constanta_phi3=CONSTS["d3_phi3"]phi3_sq=a_phi3*f2_phi3phi3_sq_pga=a_phi3*f2_phi3_pgareturnnp.sqrt(phi1_sq+phi2_sq+phi3_sq),\
np.sqrt(phi1_sq_pga+phi2_sq_pga+phi3_sq_pga)
[docs]defget_partial_derivative_site_pga(C,vs30,pga1000):""" Defines the partial derivative of the site term with respect to the PGA on reference rock, described in equation 5.9 (corrected in Erratum) """dfsite_dlnpga=np.zeros(vs30.shape)vstar=np.clip(vs30,-np.inf,1000.0)idx=vstar<=C["vlin"]vnorm=vstar[idx]/C["vlin"]dfsite_dlnpga[idx]=C["b"]*pga1000*((-1.0/(pga1000+CONSTS["c"]))+(1.0/(pga1000+CONSTS["c"]*(vnorm**CONSTS["n"]))))returndfsite_dlnpga
[docs]defget_tau_phi(C,C_PGA,region,period,rrup,vs30,pga1000,ergodic):""" Get the heteroskedastic within-event and between-event standard deviation """# Get the site-to-site variabilityifregion=="CAM":phi_s2s=C["phi_s2s_g2"]phi_s2s_pga=C_PGA["phi_s2s_g2"]elifregionin("JPN","SAM"):phi_s2s=C["phi_s2s_g3"]phi_s2s_pga=C_PGA["phi_s2s_g3"]else:phi_s2s=C["phi_s2s_g1"]phi_s2s_pga=C["phi_s2s_g1"]# Get linear tau and phi# linear tau is period independenttau=CONSTS["tau_lin"]*np.ones(vs30.shape)phi_lin,phi_lin_pga=get_phi_lin_model(C,C_PGA,region,period,rrup)# Find the sites where nonlinear site terms applyidx=np.clip(vs30,-np.inf,1000)<C["vlin"]ifnotnp.any(idx):# Only linear termifergodic:returntau,phi_linelse:# Remove the site-to-site variability from phiphi=np.sqrt(phi_lin**2.0-phi_s2s**2.0)returntau,phi# Process the nonlinear site termsphi=phi_lin.copy()partial_f_pga=get_partial_derivative_site_pga(C,vs30[idx],pga1000[idx])phi_b=np.sqrt(phi_lin[idx]**2.0-CONSTS["phi_amp"]**2.0)phi_b_pga=np.sqrt(phi_lin_pga[idx]**2.0-CONSTS["phi_amp"]**2.0)# Get nonlinear tau and phi termstau_sq=tau[idx]**2.0tau_sq=tau_sq+(partial_f_pga**2.0)*tau_sq+\
2.0*partial_f_pga*tau_sq*C["rhoB"]phi_nl_sq=(phi_lin[idx]**2.0)+\
(partial_f_pga**2.0)*(phi_b_pga**2.0)+\
(2.0*partial_f_pga*phi_b_pga*phi_b*C["rhoW"])tau[idx]=np.sqrt(tau_sq)phi[idx]=np.sqrt(phi_nl_sq)ifnotergodic:# Need to update the nonlinear within-event variability term to remove# the site-to-site variabilityphi_ss=np.sqrt(phi_lin**2.0-phi_s2s**2.0)phi_ss_pga=np.sqrt(phi_lin_pga**2.0-phi_s2s_pga**2.0)phi_ss_b=np.sqrt(phi_ss[idx]**2.0-CONSTS["phi_amp"]**2.0)phi_ss_b_pga=np.sqrt(phi_ss_pga[idx]**2.0-CONSTS["phi_amp"]**2.0)phi_ss_nl_sq=(phi_ss[idx]**2.0)+\
(partial_f_pga**2.0)*(phi_ss_b_pga**2.0)+\
(2.0*partial_f_pga*phi_ss_b_pga*phi_ss_b*C["rhoW"])phi_ss[idx]=np.sqrt(phi_ss_nl_sq)returntau,phi_ssreturntau,phi
[docs]defget_epistemic_adjustment(C,rrup):""" Returns the distance-dependent epistemic adjustment factor defined in equation 6.1. In theory, this should only be applied to the global model, but we do not enforce this constraint here. """rrup_norm=np.clip(rrup,50.0,500.0)/100.0returnC["e1"]+C["e2"]*rrup_norm+C["e3"]*(rrup_norm**2.0)
[docs]classAbrahamsonGulerce2020SInter(GMPE):""" Implements the 2020 Subduction ground motion model of Abrahamson & Gulerce (2020): Abrahamson N. and Gulurce Z. (2020) "Regionalized Ground-Motion Models for Subduction Earthquakes based on the NGA-SUB Database", Pacific Earthquake Engineering Research Center (PEER) Technical Report, PEER 2020/25 The model is regionalised, defining specific adjustment factors for (invoking region term in parenthesis): - Global ("GLO" - for application to any subduction region for which no region-specific adjustment is defined) - Alaska ("USA-AK") - Cascadia ("CAS") - Central America & Mexico ("CAM") - Japan ("JPN") - New Zealand ("NZL") - South America ("SAM") - Taiwan ("TWN") The region-specific adjustments primarily affect the constant term, the anelastic attenuation term and the linear Vs30 scaling term. In addition, however, further period-specific adjustment factors can be applied for the Alaska and Cascadia regions using the boolean input `apply_adjustment`. These adjustments scale the resulting ground motion values to appropriate levels accounting for limited data and the Alaska and Cascadia region, based on analysis undertaken by the authors. A general epistemic uncertainty median adjustment factor is also defined based on the standard deviation of the median ground motion from five regions with estimated regional terms. This term should be applied only to the global model (though this is not strictly enforced), and it is controlled via the use of `sigma_mu_epsilon`, the number of standard deviations by which the adjustment will be multiplied (default = 0) A non-ergodic aleatory uncertainty model can be returned by setting `ergodic=False`. The code implementation and test tables have been verified using Fortran code supplied by Professor N. Abrahamson, and cross-checked against an independent implementation from Feng Li, Jason Motha and James Paterson from University of Canterbury (New Zealand). Attributes: region (str): Choice of region among the supported regions ("GLO", "USA-AK", "CAS", "CAM", "JPN", "NZL", "SAM", "TWN") ergodic (bool): Return the ergodic aleatory variability model (True) or non-ergodic form (False) apply_usa_adjustment (bool): Apply the modeller designated Alaska or Cascadia adjustments (available only for the regions "USA-AK" or "CAS") usgs_basin_scaling (bool): Scaling factor to be applied to basin term based on USGS basin model sigma_mu_epsilon (float): Number of standard deviations to multiply sigma mu (the standard deviation of the median) for the epistemic uncertainty model """#: Supported tectonic region type is subduction interfaceDEFINED_FOR_TECTONIC_REGION_TYPE=const.TRT.SUBDUCTION_INTERFACE#: Supported intensity measure types are spectral acceleration,#: and peak ground accelerationDEFINED_FOR_INTENSITY_MEASURE_TYPES={PGA,SA}#: Supported intensity measure component is RotD50DEFINED_FOR_INTENSITY_MEASURE_COMPONENT=const.IMC.RotD50#: Supported standard deviation types are inter-event, intra-event#: and total, see section 4.5DEFINED_FOR_STANDARD_DEVIATION_TYPES={const.StdDev.TOTAL,const.StdDev.INTER_EVENT,const.StdDev.INTRA_EVENT}#: Site amplification is dependent only upon Vs30 for the majority of cases#: but Z2.5 is added for the JPN and CAS regionsREQUIRES_SITES_PARAMETERS={'vs30',}#: Required rupture parameters are only magnitude for the interface modelREQUIRES_RUPTURE_PARAMETERS={'mag',}#: Required distance measure is closest distance to rupture, for#: interface eventsREQUIRES_DISTANCES={'rrup',}#: Defined for a reference velocity of 1000 m/sDEFINED_FOR_REFERENCE_VELOCITY=1000.0# Other required paramsREQUIRES_ATTRIBUTES={'region','ergodic','apply_usa_adjustment','usgs_basin_scaling','sigma_mu_epsilon'}def__init__(self,region="GLO",ergodic=True,apply_usa_adjustment=False,usgs_basin_scaling=False,sigma_mu_epsilon=0.0):assertregioninSUPPORTED_REGIONS,"Region %s not supported by %s" \
%(region,self.__class__.__name__)self.region=regionself.ergodic=ergodicself.apply_usa_adjustment=apply_usa_adjustmentself.usgs_basin_scaling=usgs_basin_scalingself.sigma_mu_epsilon=sigma_mu_epsilon# If running for Cascadia or Japan then z2.5 is neededifregionin("CAS","JPN"):self.REQUIRES_SITES_PARAMETERS= \
self.REQUIRES_SITES_PARAMETERS.union({"z2pt5",})# USGS basin scaling only used if region is set to Cascadiaifself.usgs_basin_scalingandself.region!="CAS":raiseValueError('USGS basin scaling is only applicable to the ''Cascadia region for AbrahamsonGulerce2020.')
[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. """trt=self.DEFINED_FOR_TECTONIC_REGION_TYPEC_PGA=self.COEFFS[PGA()]pga1000=get_acceleration_on_reference_rock(C_PGA,trt,self.region,ctx,self.apply_usa_adjustment)pga1000=np.exp(pga1000)form,imtinenumerate(imts):C=self.COEFFS[imt]# Get USGS basin scaling factor if required (can only be for# CAS region)ifself.usgs_basin_scaling:usgs_baf=_get_z2pt5_usgs_basin_scaling(ctx.z2pt5,imt.period)else:usgs_baf=np.ones(len(ctx.vs30))mean[m]=get_mean_acceleration(C,trt,self.region,ctx,pga1000,self.apply_usa_adjustment,usgs_baf)ifself.sigma_mu_epsilon:# Apply an epistmic adjustment factormean[m]+=(self.sigma_mu_epsilon*get_epistemic_adjustment(C,ctx.rrup))# Get the standard deviationstau_m,phi_m=get_tau_phi(C,C_PGA,self.region,imt.period,ctx.rrup,ctx.vs30,pga1000,self.ergodic)tau[m]=tau_mphi[m]=phi_msig+=np.sqrt(tau**2.0+phi**2.0)
[docs]classAbrahamsonGulerce2020SSlab(AbrahamsonGulerce2020SInter):""" Implements the 2020 Subduction ground motion model of Abrahamson & Gulerce (2020) for subduction in-slab earthquakes Abrahamson N. and Gulurce Z. (2020) "Regionalized Ground-Motion Models for Subduction Earthquakes based on the NGA-SUB Database", Pacific Earthquake Engineering Research Center (PEER) Technical Report, PEER 2020/25 """#: Required rupture parameters are magnitude and top-of-rupture depthREQUIRES_RUPTURE_PARAMETERS={'mag','ztor'}#: Supported tectonic region type is subduction inslabDEFINED_FOR_TECTONIC_REGION_TYPE=const.TRT.SUBDUCTION_INTRASLAB
# Long form regional aliasesREGION_ALIASES={"GLO":"","USA-AK":"Alaska","CAS":"Cascadia","CAM":"CentralAmericaMexico","JPN":"Japan","NZL":"NewZealand","SAM":"SouthAmerica","TWN":"Taiwan",}forregioninSUPPORTED_REGIONS[1:]:add_alias("AbrahamsonGulerce2020SInter"+REGION_ALIASES[region],AbrahamsonGulerce2020SInter,region=region)add_alias("AbrahamsonGulerce2020SSlab"+REGION_ALIASES[region],AbrahamsonGulerce2020SSlab,region=region)