docs: def create_geometry(self, input_geometry, upper_depth, lower_depth):
          '''
          If geometry is defined as a numpy array then create instance of
          nhlib.geo.polygon.Polygon class, otherwise if already instance of class
          accept class
  
          :param input_geometry:
              Input geometry (polygon) as either
              i) instance of nhlib.geo.polygon.Polygon class
              ii) numpy.ndarray [Longitude, Latitude]
  
          :param float upper_depth:
              Upper seismogenic depth (km)
  
          :param float lower_depth:
              Lower seismogenic depth (km)
          '''
          self._check_seismogenic_depths(upper_depth, lower_depth)
  
          # Check/create the geometry class
          if not isinstance(input_geometry, Polygon):
              if not isinstance(input_geometry, np.ndarray):
                  raise ValueError('Unrecognised or unsupported geometry '
                                   'definition')
  
              if np.shape(input_geometry)[0] < 3:
                  raise ValueError('Incorrectly formatted polygon geometry -'
                                   ' needs three or more vertices')
              geometry = []
              for row in input_geometry:
                  geometry.append(Point(row[0], row[1], self.upper_depth))
              self.geometry = Polygon(geometry)
          else:
              self.geometry = input_geometry