
def read_vib ( vibfil ): 
  """ Read in data from Vib level index file created by makvib

    Version
      12DEC25 AD Converted from IDL to Python
      05DEC17 AD Original

    Parameters
      vibfil str : Name of Vib file
 
    Returns
      vib obj : file contents
  """

  hdrcls = []
  nmlcls = []
  nvbcls = []
  idxmol = []
  nammol = []
  strvib = []
  idxvib = []
  molvib = []
  with open ( vibfil, 'r' ) as f:
    rec = '!'
    while rec[0:1] == '!': rec = f.readline()
    flds = rec.split()
    ncls = int(flds[0])  # No. different molecule classes
    for icls in range(ncls):
      rec = f.readline() # Assume dummy header record
      hdrcls.append(f.readline()[1:-1])
      flds = f.readline().split()
      icls = int(flds[0])
      nmol = int(flds[1])
      nvib = int(flds[2]) 
      nmlcls.append(nmol)
      nvbcls.append(nvib)
      for imol in range(nmol):
        flds = f.readline().split()
        idx = int(flds[0])
        nam = flds[1].lstrip()
        idxmol.append(idx)
        nammol.append(nam)
      for ivib in range(nvib):
        rec = '!'
        while rec[0:1] == '!': rec = f.readline()  # skip comments
        strvib.append(rec[1:16])
        idxvib.append(rec[17:25])
        molvib.append(rec[25:-1]) 
  return { 'ncls':ncls, 'hdrcls':hdrcls, 'nmlcls':nmlcls, 'nvbcls':nvbcls,
           'nmol':len(idxmol), 'idxmol':idxmol, 'nammol':nammol, 
           'nvib':len(strvib), 'strvib':strvib, 'idxvib':idxvib, 
           'molvib':molvib } 

#----------

