def check_aki_richards_convention(cls, edges):
        """
        Verify that surface (as defined by corner points) conforms with Aki and
        Richard convention (i.e. surface dips right of surface strike)

        This method doesn't have to be called by hands before creating the
        surface object, because it is called from :meth:`from_fault_data`.
        """
        # 1) extract 4 corner points of surface mesh
        # 2) compute cross products between left and right edges and top edge
        # (these define vectors normal to the surface)
        # 3) compute dot products between cross product results and
        # position vectors associated with upper left and right corners (if
        # both angles are less then 90 degrees then the surface is correctly
        # defined)
        ul = edges[0].points[0]
        ur = edges[0].points[-1]
        bl = edges[-1].points[0]
        br = edges[-1].points[-1]
        ul, ur, bl, br = spherical_to_cartesian(
            [ul.longitude, ur.longitude, bl.longitude, br.longitude],
            [ul.latitude, ur.latitude, bl.latitude, br.latitude],
            [ul.depth, ur.depth, bl.depth, br.depth],
        )

        top_edge = ur - ul
        left_edge = bl - ul
        right_edge = br - ur
        left_cross_top = numpy.cross(left_edge, top_edge)
        right_cross_top = numpy.cross(right_edge, top_edge)

        left_cross_top /= numpy.sqrt(numpy.dot(left_cross_top, left_cross_top))
        right_cross_top /= numpy.sqrt(
            numpy.dot(right_cross_top, right_cross_top)
        )
        ul /= numpy.sqrt(numpy.dot(ul, ul))
        ur /= numpy.sqrt(numpy.dot(ur, ur))

        # rounding to 1st digit, to avoid ValueError raised for floating point
        # imprecision
        angle_ul = round(
            numpy.degrees(numpy.arccos(numpy.dot(ul, left_cross_top))), 1
        )
        angle_ur = round(
            numpy.degrees(numpy.arccos(numpy.dot(ur, right_cross_top))), 1
        )

        if (angle_ul > 90) or (angle_ur > 90):
            raise ValueError(
                "Surface does not conform with Aki & Richards convention"
            )