def _get_site_class(self, vs30, mmi_mean):
        """
        Return site class flag for:
        Class E - Very Soft Soil        vs30 < 180
        Class D - Deep or Soft Soil     vs30 >= 180 and vs30 <= 360
        Class C - Shallow Soil          vs30 > 360 and vs30 <= 760
        Class B - Rock                  vs30 > 760 and vs30 <= 1500
        Class A - Strong Rock           vs30 >= 180 and vs30 <= 360
        The S site class is equal to
            S = c1 if MMI <= 7
            S = c1 - d *(MMI - 7.0) if 7<MMI<9.5
            S = c2 if MMI >= 9.5
        """

        if vs30[0] < 180:
            c1 = 1.0
            c2 = -0.25
            d = 0.5
        elif vs30[0] >= 180 and vs30[0] <= 360:
            c1 = 0.5
            c2 = -0.125
            d = 0.25
        elif vs30[0] > 360 and vs30[0] <= 760:
            c1 = 0.
            c2 = 0.
            d = 0.
        elif vs30[0] > 760 and vs30[0] <= 1500:
            c1 = -0.5
            c2 = 0.125
            d = -0.25
        elif vs30[0] > 1500:
            c1 = -1.0
            c2 = 0.25
            d = -0.5

        S = np.zeros_like(vs30)

        for i in range(vs30.size):
            if mmi_mean[i] <= 7.0:
                S[i] += c1
            elif mmi_mean[i] > 7 and mmi_mean[i] < 9.5:
                S[i] += c1 - d * (mmi_mean[i] - 7.0)
            else:
                S[i] += c2

        return S
Return site class flag for:
        Class E - Very Soft Soil        vs30 < 180
        Class D - Deep or Soft Soil     vs30 >= 180 and vs30 <= 360
        Class C - Shallow Soil          vs30 > 360 and vs30 <= 760
        Class B - Rock                  vs30 > 760 and vs30 <= 1500
        Class A - Strong Rock           vs30 >= 180 and vs30 <= 360
        The S site class is equal to
            S = c1 if MMI <= 7
            S = c1 - d *(MMI - 7.0) if 7<MMI<9.5
            S = c2 if MMI >= 9.5