docs: def create_geometry(self, input_geometry,  mesh_spacing=1.0):
          '''
          If geometry is defined as a numpy array then create instance of
          nhlib.geo.line.Line class, otherwise if already instance of class
          accept class
  
          :param input_geometry:
              List of at least two fault edges of the fault source from
              shallowest to deepest. Each edge can be represented as as either
              i) instance of nhlib.geo.polygon.Polygon class
              ii) numpy.ndarray [Longitude, Latitude, Depth]
  
          :param float mesh_spacing:
              Spacing of the fault mesh (km) {default = 1.0}
  
          '''
          if not isinstance(input_geometry, list) or len(input_geometry) < 2:
              raise ValueError('Complex fault geometry incorrectly defined')
  
          self.fault_edges = []
          for edge in input_geometry:
              if not isinstance(edge, Line):
                  if not isinstance(edge, np.ndarray):
                      raise ValueError('Unrecognised or unsupported geometry '
                                       'definition')
                  else:
                      self.fault_edges.append(Line([Point(row[0], row[1], row[2])
                                                    for row in edge]))
              else:
                  self.fault_edges.append(edge)
              # Updates the upper and lower sesmogenic depths to reflect geometry
              self._get_minmax_edges(edge)
          # Build fault surface
          self.geometry = ComplexFaultSurface.from_fault_data(self.fault_edges,
                                                              mesh_spacing)
          # Get a mean dip
          self.dip = self.geometry.get_dip()