def _get_mean_and_stddevs(self, sites, rup, dists, imt, stddev_types): """ Returns only the mean values. See documentation for method `GroundShakingIntensityModel` in :class:~`openquake.hazardlib.gsim.base.GSIM` """ # distances distsl = copy.copy(dists) distsl.rjb, distsl.rrup = \ utils.get_equivalent_distances_east(rup.mag, dists.repi) # # Pezeshk et al. 2011 - Rrup mean1, stds1 = super().get_mean_and_stddevs(sites, rup, distsl, imt, stddev_types) mean1 = self.apply_correction_to_BC(mean1, imt, distsl) # # Atkinson 2008 - Rjb gmpe = Atkinson2008prime() mean2, stds2 = gmpe.get_mean_and_stddevs(sites, rup, distsl, imt, stddev_types) # # Silva et al. 2002 - Rjb gmpe = SilvaEtAl2002SingleCornerSaturation() mean4, stds4 = gmpe.get_mean_and_stddevs(sites, rup, distsl, imt, stddev_types) mean4 = self.apply_correction_to_BC(mean4, imt, distsl) # # Silva et al. 2002 - Rjb gmpe = SilvaEtAl2002DoubleCornerSaturation() mean5, stds5 = gmpe.get_mean_and_stddevs(sites, rup, distsl, imt, stddev_types) mean5 = self.apply_correction_to_BC(mean5, imt, distsl) # # distances distsl.rjb, distsl.rrup = \ utils.get_equivalent_distances_east(rup.mag, dists.repi, ab06=True) # # Atkinson and Boore 2006 - Rrup gmpe = AtkinsonBoore2006Modified2011() mean3, stds3 = gmpe.get_mean_and_stddevs(sites, rup, distsl, imt, stddev_types) # Computing adjusted mean and stds mean_adj = np.log( np.exp(mean1) * 0.2 + np.exp(mean2) * 0.2 + np.exp(mean3) * 0.2 + np.exp(mean4) * 0.2 + np.exp(mean5) * 0.2) # Note that in this case we do not apply a triangular smoothing on # distance as explained at page 996 of Atkinson and Adams (2013) # for the calculation of the standard deviation stds_adj = np.log( np.exp(stds1) * 0.2 + np.exp(stds2) * 0.2 + np.exp(stds3) * 0.2 + np.exp(stds4) * 0.2 + np.exp(stds5) * 0.2) # return mean_adj, stds_adj
def _get_mean_and_stddevs(self, sites, rup, dists, imt, stddev_types): """ Returns only the mean values. See documentation for method `GroundShakingIntensityModel` in :class:~`openquake.hazardlib.gsim.base.GSIM` """ # distances distsl = copy.copy(dists) distsl.rjb, distsl.rrup = \ utils.get_equivalent_distances_east(rup.mag, dists.repi) # # Pezeshk et al. 2011 - Rrup mean1, stds1 = super().get_mean_and_stddevs(sites, rup, distsl, imt, stddev_types) mean1 = self.apply_correction_to_BC(mean1, imt, distsl) # # Atkinson 2008 - Rjb gmpe = Atkinson2008prime() mean2, stds2 = gmpe.get_mean_and_stddevs(sites, rup, distsl, imt, stddev_types) # # Silva et al. 2002 - Rjb gmpe = SilvaEtAl2002SingleCornerSaturation() mean4, stds4 = gmpe.get_mean_and_stddevs(sites, rup, distsl, imt, stddev_types) mean4 = self.apply_correction_to_BC(mean4, imt, distsl) # # Silva et al. 2002 - Rjb gmpe = SilvaEtAl2002DoubleCornerSaturation() mean5, stds5 = gmpe.get_mean_and_stddevs(sites, rup, distsl, imt, stddev_types) mean5 = self.apply_correction_to_BC(mean5, imt, distsl) # # distances distsl.rjb, distsl.rrup = \ utils.get_equivalent_distances_east(rup.mag, dists.repi, ab06=True) # # Atkinson and Boore 2006 - Rrup gmpe = AtkinsonBoore2006Modified2011() mean3, stds3 = gmpe.get_mean_and_stddevs(sites, rup, distsl, imt, stddev_types) # Computing adjusted mean and stds mean_adj = mean1*0.2 + mean2*0.2 + mean3*0.2 + mean4*0.2 + mean5*0.2 # Note that in this case we do not apply a triangular smoothing on # distance as explained at page 996 of Atkinson and Adams (2013) # for the calculation of the standard deviation stds_adj = np.log(np.exp(stds1)*0.2 + np.exp(stds2)*0.2 + np.exp(stds3)*0.2 + np.exp(stds4)*0.2 + np.exp(stds5)*0.2) # return mean_adj, stds_adj
def test_get_distances_ab06_01(self): mag = 6.5 repi = 15. focal_depth = 10. comp_rrup, comp_rjb = get_equivalent_distances_east( mag, repi, focal_depth, True) expected_rrup = 10.53042 self.assertAlmostEqual(comp_rrup, expected_rrup, places=2) expected_rjb = 12.36326 self.assertAlmostEqual(comp_rjb, expected_rjb, places=2)
def test_get_distances_ab06_01(self): mag = 6.5 repi = 15. focal_depth = 10. comp_rrup, comp_rjb = get_equivalent_distances_east(mag, repi, focal_depth, True) expected_rrup = 10.53042 self.assertAlmostEqual(comp_rrup, expected_rrup, places=2) expected_rjb = 12.36326 self.assertAlmostEqual(comp_rjb, expected_rjb, places=2)