docs: def zip_source_model(ssmLT, archive_zip='', log=logging.info):
      """
      Zip the source model files starting from the smmLT.xml file
      """
      basedir = os.path.dirname(ssmLT)
      if os.path.basename(ssmLT) != 'ssmLT.xml':
          orig = ssmLT
          ssmLT = os.path.join(basedir, 'ssmLT.xml')
          with open(ssmLT, 'wb') as f:
              f.write(open(orig, 'rb').read())
  
      archive_zip = archive_zip or os.path.join(basedir, 'ssmLT.zip')
      if os.path.exists(archive_zip):
          sys.exit('%s exists already' % archive_zip)
      oq = mock.Mock(inputs={'source_model_logic_tree': ssmLT})
      checksum = readinput.get_checksum32(oq)
      checkfile = os.path.join(os.path.dirname(ssmLT), 'CHECKSUM.txt')
      with open(checkfile, 'w') as f:
          f.write(str(checksum))
      files = logictree.collect_info(ssmLT).smpaths + [
          os.path.abspath(ssmLT), os.path.abspath(checkfile)]
      general.zipfiles(files, archive_zip, log=log, cleanup=True)
      return archive_zip