docs: def from_model_files(cls, limits, input_model, investigation_time=1.0,
                           simple_mesh_spacing=1.0, complex_mesh_spacing=5.0,
                           mfd_width=0.1, area_discretisation=10.0):
          """
          Reads the hazard model from a file
  
          :param list limits:
               Grid configuration [west, east, xspc, south, north, yspc,
                                   upper, lower, zspc]
          :param str input_model:
              Path to input source model
          :param float investigation_time:
              Investigation time of Poisson model
          :param float simple_mesh_spacing:
              Rupture mesh spacing of simple fault (km)
          :param float complex_mesh_spacing:
              Rupture mesh spacing of complex fault (km)
          :param float mfd_width:
              Spacing (in magnitude units) of MFD
          :param float area_discretisation:
              Spacing of discretisation of area source (km)
          """
          converter = SourceConverter(investigation_time,
                                      simple_mesh_spacing,
                                      complex_mesh_spacing,
                                      mfd_width,
                                      area_discretisation)
          sources = []
          for grp in nrml.to_python(input_model, converter):
              sources.extend(grp.sources)
          return cls(limits, sources, area_discretisation)