def test_distance_no_rupture(): event = {'lat': 34.1, 'lon': -118.2, 'depth': 1, 'mag': 6, 'id': '', 'locstring': '', 'timezone': 'UTC'} origin = Origin(event) origin.setMechanism('ALL') # Make sites instance vs30file = os.path.join(shakedir, 'tests/data/Vs30_test.grd') cx = -118.2 cy = 34.1 dx = 0.0083 dy = 0.0083 xspan = 0.0083 * 5 yspan = 0.0083 * 5 site = Sites.fromCenter(cx, cy, xspan, yspan, dx, dy, vs30File=vs30file, padding=True, resample=False) # Make souce instance # - Unknown/no tectonic region # - Mech is ALL gmpe = AbrahamsonEtAl2014() rupture = PointRupture(origin) dists = Distance.fromSites(gmpe, site, rupture) dctx = dists.getDistanceContext() rjb = np.array([[ 1.03475736, 0.82507289, 0.69891123, 0.6553167 , 0.69891123, 0.82507289, 1.03475736], [ 0.72918893, 0.50725874, 0.36675284, 0.31957002, 0.36675284, 0.50725874, 0.72918893], [ 0.53487557, 0.30135487, 0.14776055, 0.09290799, 0.14776055, 0.30135487, 0.53487557], [ 0.46963915, 0.2280053 , 0.06643829, 0. , 0.06643829, 0.2280053 , 0.46963915], [ 0.53495323, 0.30139344, 0.14777086, 0.09290799, 0.14777086, 0.30139344, 0.53495323], [ 0.72933979, 0.50732902, 0.36677229, 0.31957002, 0.36677229, 0.50732902, 0.72933979], [ 1.03497272, 0.82517579, 0.69893672, 0.6553167 , 0.69893672, 0.82517579, 1.03497272]]) np.testing.assert_allclose( rjb, dctx.rjb, rtol=0, atol=0.01) rrup = np.array([[ 8.26004043, 8.11921658, 8.11376473, 8.09579991, 8.11376473, 8.11921658, 8.26004043], [ 8.12023764, 8.01816823, 7.93517669, 7.9600631 , 7.93517669, 8.01816823, 8.12023764], [ 8.00702434, 7.95888951, 7.8881565 , 7.88352525, 7.8881565 , 7.95888951, 8.00702434], [ 8.02022568, 7.90722113, 7.85639147, 0. , 7.85639147, 7.90722113, 8.02022568], [ 8.00698213, 7.95890141, 7.88813785, 7.88352525, 7.88813785, 7.95890141, 8.00698213], [ 8.12025813, 8.01814988, 7.93520725, 7.9600631 , 7.93520725, 8.01814988, 8.12025813], [ 8.26012423, 8.11931772, 8.1137722 , 8.09579991, 8.1137722 , 8.11931772, 8.26012423]]) np.testing.assert_allclose( rrup, dctx.rrup, rtol=0, atol=0.01) # Souce instance # - Tectonic region unsupported # - Mech is ALL origin._tectonic_region = 'Volcano' dists = Distance.fromSites(gmpe, site, rupture) dctx = dists.getDistanceContext() rjbt = np.array([[ 1.03475736, 0.82507289, 0.69891123, 0.6553167 , 0.69891123, 0.82507289, 1.03475736], [ 0.72918893, 0.50725874, 0.36675284, 0.31957002, 0.36675284, 0.50725874, 0.72918893], [ 0.53487557, 0.30135487, 0.14776055, 0.09290799, 0.14776055, 0.30135487, 0.53487557], [ 0.46963915, 0.2280053 , 0.06643829, 0. , 0.06643829, 0.2280053 , 0.46963915], [ 0.53495323, 0.30139344, 0.14777086, 0.09290799, 0.14777086, 0.30139344, 0.53495323], [ 0.72933979, 0.50732902, 0.36677229, 0.31957002, 0.36677229, 0.50732902, 0.72933979], [ 1.03497272, 0.82517579, 0.69893672, 0.6553167 , 0.69893672, 0.82517579, 1.03497272]]) np.testing.assert_allclose( rjbt, dctx.rjb, rtol=0, atol=0.01) # Souce instance # - Tectonic region: active # - Mech is ALL origin.setMechanism('ALL') origin._tectonic_region = 'Active Shallow Crust' dists = Distance.fromSites(gmpe, site, rupture) dctx = dists.getDistanceContext() rjb = np.array([[ 1.10115976, 0.88331216, 0.75077594, 0.70491937, 0.75077594, 0.88331216, 1.10115976], [ 0.78261273, 0.54865189, 0.39914713, 0.34852149, 0.39914713, 0.54865189, 0.78261273], [ 0.57800579, 0.32895654, 0.16294131, 0.10290794, 0.16294131, 0.32895654, 0.57800579], [ 0.50865092, 0.25000954, 0.07371315, 0. , 0.07371315, 0.25000954, 0.50865092], [ 0.57808833, 0.32899797, 0.16295256, 0.10290794, 0.16295256, 0.32899797, 0.57808833], [ 0.78277133, 0.5487266 , 0.39916785, 0.34852149, 0.39916785, 0.5487266 , 0.78277133], [ 1.10138329, 0.88341918, 0.75080275, 0.70491937, 0.75080275, 0.88341918, 1.10138329]]) np.testing.assert_allclose( rjb, dctx.rjb, rtol=0, atol=0.01) rrup = np.array([[ 8.72726953, 8.58534811, 8.58323541, 8.5654409 , 8.58323541, 8.58534811, 8.72726953], [ 8.58922774, 8.4871601 , 8.40244887, 8.4297141 , 8.40244887, 8.4871601 , 8.58922774], [ 8.47470803, 8.42880892, 8.35631312, 8.35201539, 8.35631312, 8.42880892, 8.47470803], [ 8.49021276, 8.37536496, 8.32350188, 0. , 8.32350188, 8.37536496, 8.49021276], [ 8.47466149, 8.42882081, 8.35629324, 8.35201539, 8.35629324, 8.42882081, 8.47466149], [ 8.58924512, 8.48713903, 8.4024808 , 8.4297141 , 8.4024808 , 8.48713903, 8.58924512], [ 8.72735075, 8.58545174, 8.5832426 , 8.5654409 , 8.5832426 , 8.58545174, 8.72735075]]) np.testing.assert_allclose( rrup, dctx.rrup, rtol=0, atol=0.01) # Souce instance # - Tectonic region: active # - Mech is RS origin.setMechanism('RS') origin._tectonic_region = 'Active Shallow Crust' dists = Distance.fromSites(gmpe, site, rupture) dctx = dists.getDistanceContext() rjb = np.array([[ 0.94405696, 0.73298036, 0.61025288, 0.56806407, 0.61025288, 0.73298036, 0.94405696], [ 0.63960501, 0.42680989, 0.29738908, 0.25562246, 0.29738908, 0.42680989, 0.63960501], [ 0.45239173, 0.23958848, 0.10874248, 0.06508855, 0.10874248, 0.23958848, 0.45239173], [ 0.39203111, 0.17571632, 0.04480241, 0. , 0.04480241, 0.17571632, 0.39203111], [ 0.45246373, 0.2396224 , 0.1087508 , 0.06508855, 0.1087508 , 0.2396224 , 0.45246373], [ 0.63975135, 0.42687494, 0.29740691, 0.25562246, 0.29740691, 0.42687494, 0.63975135], [ 0.94427453, 0.73308353, 0.61027758, 0.56806407, 0.61027758, 0.73308353, 0.94427453]]) np.testing.assert_allclose( rjb, dctx.rjb, rtol=0, atol=0.01) rrup = np.array([[ 8.81700098, 8.67259556, 8.6707467 , 8.65288076, 8.6707467 , 8.67259556, 8.81700098], [ 8.67672238, 8.57444747, 8.49014736, 8.5183922 , 8.49014736, 8.57444747, 8.67672238], [ 8.56159881, 8.51774523, 8.44708824, 8.44391005, 8.44708824, 8.51774523, 8.56159881], [ 8.57788943, 8.46484058, 8.41567031, 0. , 8.41567031, 8.46484058, 8.57788943], [ 8.56155103, 8.51775668, 8.44706792, 8.44391005, 8.44706792, 8.51775668, 8.56155103], [ 8.67673955, 8.5744255 , 8.49017946, 8.5183922 , 8.49017946, 8.5744255 , 8.67673955], [ 8.81708413, 8.67270074, 8.67075389, 8.65288076, 8.67075389, 8.67270074, 8.81708413]]) np.testing.assert_allclose( rrup, dctx.rrup, rtol=0, atol=0.01) # Souce instance # - Tectonic region: active # - Mech is NM origin.setMechanism('NM') origin._tectonic_region = 'Active Shallow Crust' dists = Distance.fromSites(gmpe, site, rupture) dctx = dists.getDistanceContext() rjb = np.array([[ 0.7899535 , 0.61128249, 0.50843465, 0.47310349, 0.50843465, 0.61128249, 0.7899535 ], [ 0.53301769, 0.35495992, 0.24706995, 0.21231668, 0.24706995, 0.35495992, 0.53301769], [ 0.37628889, 0.19897762, 0.09028387, 0.05409271, 0.09028387, 0.19897762, 0.37628889], [ 0.32596438, 0.14586493, 0.03728933, 0. , 0.03728933, 0.14586493, 0.32596438], [ 0.37634892, 0.19900584, 0.09029076, 0.05409271, 0.09029076, 0.19900584, 0.37634892], [ 0.53314026, 0.35501415, 0.24708481, 0.21231668, 0.24708481, 0.35501415, 0.53314026], [ 0.79013775, 0.61136979, 0.50845534, 0.47310349, 0.50845534, 0.61136979, 0.79013775]]) np.testing.assert_allclose( rjb, dctx.rjb, rtol=0, atol=0.01) rrup = np.array([[ 7.94857792, 7.8097532 , 7.80275055, 7.78489184, 7.80275055, 7.8097532 , 7.94857792], [ 7.80938707, 7.70839546, 7.62713392, 7.65061937, 7.62713392, 7.70839546, 7.80938707], [ 7.69799123, 7.64933048, 7.58013644, 7.57530397, 7.58013644, 7.64933048, 7.69799123], [ 7.7099614 , 7.59905656, 7.54904995, 0. , 7.54904995, 7.59905656, 7.7099614 ], [ 7.69795153, 7.64934225, 7.58011859, 7.57530397, 7.58011859, 7.64934225, 7.69795153], [ 7.80940883, 7.70837861, 7.62716348, 7.65061937, 7.62716348, 7.70837861, 7.80940883], [ 7.94866209, 7.80985208, 7.80275807, 7.78489184, 7.80275807, 7.80985208, 7.94866209]]) np.testing.assert_allclose( rrup, dctx.rrup, rtol=0, atol=0.01) # Souce instance # - Tectonic region: active # - Mech is SS origin.setMechanism('SS') origin._tectonic_region = 'Active Shallow Crust' dists = Distance.fromSites(gmpe, site, rupture) dctx = dists.getDistanceContext() rjb = np.array([[ 2.00333625, 1.69987873, 1.49778447, 1.42682201, 1.49778447, 1.69987873, 2.00333625], [ 1.54679373, 1.17582687, 0.914992 , 0.81812345, 0.914992 , 1.17582687, 1.54679373], [ 1.22626178, 0.78021345, 0.43426687, 0.29180829, 0.43426687, 0.78021345, 1.22626178], [ 1.10672645, 0.62338097, 0.21787328, 0. , 0.21787328, 0.62338097, 1.10672645], [ 1.22640328, 0.7802939 , 0.43429295, 0.29180829, 0.43429295, 0.7802939 , 1.22640328], [ 1.54703738, 1.17595553, 0.9150287 , 0.81812345, 0.9150287 , 1.17595553, 1.54703738], [ 2.00364385, 1.7000298 , 1.49782584, 1.42682201, 1.49782584, 1.7000298 , 2.00364385]]) np.testing.assert_allclose( rjb, dctx.rjb, rtol=0, atol=0.01) rrup = np.array([[ 7.97494557, 7.79806013, 7.76281765, 7.735536 , 7.76281765, 7.79806013, 7.97494557], [ 7.77614524, 7.62644695, 7.5120851 , 7.52225031, 7.5120851 , 7.62644695, 7.77614524], [ 7.62326525, 7.51608628, 7.40624352, 7.38577101, 7.40624352, 7.51608628, 7.62326525], [ 7.61851685, 7.44728324, 7.35263272, 0. , 7.35263272, 7.44728324, 7.61851685], [ 7.62324614, 7.51610811, 7.40622914, 7.38577101, 7.40622914, 7.51610811, 7.62324614], [ 7.77620063, 7.62644821, 7.51211876, 7.52225031, 7.51211876, 7.62644821, 7.77620063], [ 7.97507013, 7.798177 , 7.76283076, 7.735536 , 7.76283076, 7.798177 , 7.97507013]]) np.testing.assert_allclose( rrup, dctx.rrup, rtol=0, atol=0.01) # Souce instance # - Tectonic region: stable # - Mech is all origin.setMechanism('ALL') origin._tectonic_region = 'Stable Shallow Crust' dists = Distance.fromSites(gmpe, site, rupture) dctx = dists.getDistanceContext() rjb = np.array([[ 1.25490086, 1.00456938, 0.85266727, 0.80013341, 0.85266727, 1.00456938, 1.25490086], [ 0.8891456 , 0.621322 , 0.4507253 , 0.39310934, 0.4507253 , 0.621322 , 0.8891456 ], [ 0.65483395, 0.37085259, 0.18246645, 0.11472522, 0.18246645, 0.37085259, 0.65483395], [ 0.57566287, 0.28111922, 0.08186392, 0. , 0.08186392, 0.28111922, 0.57566287], [ 0.65492818, 0.37089972, 0.18247916, 0.11472522, 0.18247916, 0.37089972, 0.65492818], [ 0.88932733, 0.62140729, 0.45074894, 0.39310934, 0.45074894, 0.62140729, 0.88932733], [ 1.2551578 , 1.00469232, 0.85269799, 0.80013341, 0.85269799, 1.00469232, 1.2551578 ]]) np.testing.assert_allclose( rjb, dctx.rjb, rtol=0, atol=0.01) rrup = np.array([[ 6.37308879, 6.21401632, 6.17868645, 6.15460391, 6.17868645, 6.21401632, 6.37308879], [ 6.19096821, 6.06108712, 5.96682577, 5.97487576, 5.96682577, 6.06108712, 6.19096821], [ 6.05926472, 5.97000316, 5.88510619, 5.87109182, 5.88510619, 5.97000316, 6.05926472], [ 6.05384337, 5.91573235, 5.84608701, 0. , 5.84608701, 5.91573235, 6.05384337], [ 6.05925153, 5.97002045, 5.88509436, 5.87109182, 5.88509436, 5.97002045, 6.05925153], [ 6.1910207 , 6.0610899 , 5.96685295, 5.97487576, 5.96685295, 6.0610899 , 6.1910207 ], [ 6.37320723, 6.21411804, 6.17869829, 6.15460391, 6.17869829, 6.21411804, 6.37320723]]) np.testing.assert_allclose( rrup, dctx.rrup, rtol=0, atol=0.01) # Souce instance # - Tectonic region: stable # - Mech is RS origin.setMechanism('RS') origin._tectonic_region = 'Stable Shallow Crust' dists = Distance.fromSites(gmpe, site, rupture) dctx = dists.getDistanceContext() rjb = np.array([[ 1.06775489, 0.83169032, 0.69344486, 0.645892 , 0.69344486, 0.83169032, 1.06775489], [ 0.72652464, 0.48639585, 0.33959401, 0.2920419 , 0.33959401, 0.48639585, 0.72652464], [ 0.51540522, 0.27378007, 0.12450057, 0.07451822, 0.12450057, 0.27378007, 0.51540522], [ 0.44695345, 0.20099496, 0.05123817, 0. , 0.05123817, 0.20099496, 0.44695345], [ 0.51548687, 0.2738187 , 0.12451008, 0.07451822, 0.12451008, 0.2738187 , 0.51548687], [ 0.72668956, 0.48646962, 0.33961424, 0.2920419 , 0.33961424, 0.48646962, 0.72668956], [ 1.06799812, 0.83180576, 0.6934727 , 0.645892 , 0.6934727 , 0.83180576, 1.06799812]]) np.testing.assert_allclose( rjb, dctx.rjb, rtol=0, atol=0.01) rrup = np.array([[ 6.34187696, 6.18689857, 6.15537676, 6.13263668, 6.15537676, 6.18689857, 6.34187696], [ 6.1667275 , 6.04409157, 5.9555343 , 5.96586226, 5.9555343 , 6.04409157, 6.1667275 ], [ 6.04113522, 5.96186983, 5.88482917, 5.87387645, 5.88482917, 5.96186983, 6.04113522], [ 6.03838637, 5.91117189, 5.85034216, 0. , 5.85034216, 5.91117189, 6.03838637], [ 6.04111884, 5.96188527, 5.88481675, 5.87387645, 5.88481675, 5.96188527, 6.04111884], [ 6.16677535, 6.04409147, 5.9555607 , 5.96586226, 5.9555607 , 6.04409147, 6.16677535], [ 6.34199129, 6.18699823, 6.15538781, 6.13263668, 6.15538781, 6.18699823, 6.34199129]]) np.testing.assert_allclose( rrup, dctx.rrup, rtol=0, atol=0.01) # Souce instance # - Tectonic region: stable # - Mech is NM origin.setMechanism('NM') origin._tectonic_region = 'Stable Shallow Crust' dists = Distance.fromSites(gmpe, site, rupture) dctx = dists.getDistanceContext() rjb = np.array([[ 1.11595412, 0.87047978, 0.72608143, 0.6763976 , 0.72608143, 0.87047978, 1.11595412], [ 0.7606424 , 0.50965507, 0.35594865, 0.30612448, 0.35594865, 0.50965507, 0.7606424 ], [ 0.5400275 , 0.28698884, 0.13052973, 0.0781228 , 0.13052973, 0.28698884, 0.5400275 ], [ 0.46835876, 0.21071547, 0.05370847, 0. , 0.05370847, 0.21071547, 0.46835876], [ 0.54011298, 0.28702933, 0.1305397 , 0.0781228 , 0.1305397 , 0.28702933, 0.54011298], [ 0.76081471, 0.50973231, 0.35596982, 0.30612448, 0.35596982, 0.50973231, 0.76081471], [ 1.116207 , 0.87059985, 0.72611052, 0.6763976 , 0.72611052, 0.87059985, 1.116207 ]]) np.testing.assert_allclose( rjb, dctx.rjb, rtol=0, atol=0.01) rrup = np.array([[ 6.09163676, 5.92783781, 5.88815939, 5.8632258 , 5.88815939, 5.92783781, 6.09163676], [ 5.9012656 , 5.76798442, 5.67370059, 5.68021406, 5.67370059, 5.76798442, 5.9012656 ], [ 5.76720934, 5.67516593, 5.59187321, 5.57813972, 5.59187321, 5.67516593, 5.76720934], [ 5.75981247, 5.62205686, 5.55427369, 0. , 5.55427369, 5.62205686, 5.75981247], [ 5.76719951, 5.67518325, 5.59186206, 5.57813972, 5.59186206, 5.67518325, 5.76719951], [ 5.90132265, 5.76798949, 5.67372705, 5.68021406, 5.67372705, 5.76798949, 5.90132265], [ 6.09176251, 5.92794056, 5.88817184, 5.8632258 , 5.88817184, 5.92794056, 6.09176251]]) np.testing.assert_allclose( rrup, dctx.rrup, rtol=0, atol=0.01) # Souce instance # - Tectonic region: stable # - Mech is SS origin.setMechanism('SS') origin._tectonic_region = 'Stable Shallow Crust' dists = Distance.fromSites(gmpe, site, rupture) dctx = dists.getDistanceContext() rjb = np.array([[ 1.7978181 , 1.48474703, 1.28392745, 1.21396452, 1.28392745, 1.48474703, 1.7978181 ], [ 1.3323943 , 0.97123526, 0.72919945, 0.64364445, 0.72919945, 0.97123526, 1.3323943 ], [ 1.01846151, 0.61039475, 0.3191157 , 0.20751973, 0.3191157 , 0.61039475, 1.01846151], [ 0.90673813, 0.47477623, 0.15160737, 0. , 0.15160737, 0.47477623, 0.90673813], [ 1.01859418, 0.61046522, 0.3191364 , 0.20751973, 0.3191364 , 0.61046522, 1.01859418], [ 1.33263554, 0.97135557, 0.72923321, 0.64364445, 0.72923321, 0.97135557, 1.33263554], [ 1.79813761, 1.48490175, 1.28396831, 1.21396452, 1.28396831, 1.48490175, 1.79813761]]) np.testing.assert_allclose( rjb, dctx.rjb, rtol=0, atol=0.01) rrup = np.array([[ 5.27459324, 5.06456452, 4.9821571 , 4.94467172, 4.9821571 , 5.06456452, 5.27459324], [ 5.00483041, 4.80820132, 4.67381918, 4.65867853, 4.67381918, 4.80820132, 5.00483041], [ 4.81923672, 4.64680257, 4.514164 , 4.47986499, 4.514164 , 4.64680257, 4.81923672], [ 4.78581905, 4.57286829, 4.44979468, 0. , 4.44979468, 4.57286829, 4.78581905], [ 4.81926166, 4.64683299, 4.51415954, 4.47986499, 4.51415954, 4.64683299, 4.81926166], [ 5.00493679, 4.80823501, 4.67384847, 4.65867853, 4.67384847, 4.80823501, 5.00493679], [ 5.27477487, 5.06468553, 4.98217732, 4.94467172, 4.98217732, 5.06468553, 5.27477487]]) np.testing.assert_allclose( rrup, dctx.rrup, rtol=0, atol=0.01)