docs: 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