def assert_mesh_is(testcase, surface, expected_mesh): expected_mesh = list(itertools.chain(*expected_mesh)) testcase.assertEqual(len(surface.mesh), len(expected_mesh)) testcase.assertIsInstance(surface.mesh, Mesh) for i, point in enumerate(surface.mesh): expected_point = Point(*expected_mesh[i]) distance = expected_point.distance(point) * 1e3 testcase.assertAlmostEqual( 0, distance, delta=2, # allow discrepancy of 2 meters msg="point %d is off: %s != %s (distance is %.3fm)" % (i, point, expected_point, distance))
def assert_mesh_is(testcase, surface, expected_mesh): mesh = surface.get_mesh() testcase.assertIs(mesh, surface.get_mesh()) expected_mesh = list(itertools.chain(*expected_mesh)) testcase.assertEqual(len(mesh), len(expected_mesh)) testcase.assertIsInstance(mesh, Mesh) for i, point in enumerate(mesh): expected_point = Point(*expected_mesh[i]) distance = expected_point.distance(point) * 1e3 testcase.assertAlmostEqual( 0, distance, delta=2, # allow discrepancy of 2 meters msg="point %d is off: %s != %s (distance is %.3fm)" % (i, point, expected_point, distance) )
def getLength(self): """ Compute length of rupture (km). For EdgeRupture, we compute the length as the length of the top edge projected to the surface. Returns: float: Rupture length in km. """ lons = self._toplons lats = self._toplats seg = self._group_index groups = np.unique(seg) ng = len(groups) rlength = 0 for i in range(ng): group_segments = np.where(groups[i] == seg)[0] nseg = len(group_segments) - 1 for j in range(nseg): ind = group_segments[j] P0 = Point(lons[ind], lats[ind]) P1 = Point(lons[ind + 1], lats[ind + 1]) dist = P0.distance(P1) rlength = rlength + dist return rlength