spectrum_exomol: Description of the input/output structure

Purpose: Program to generate synthetic synthetic spectra using the PN
         line lists in the ExoMol format for a specified temperature.
         The spectrum is given either as a stick diagram (cm/molecule or erg/s  molecule-1 sr-1), 
         or in the form of cross-sections with a Gaussian/Doppler profile on
         a grid of frequency points (cm^2/molecule or erg/s cm molecule-1 sr-1 ).
         The partition function value can be also recomputed, if it is not provided by the user.
         The total intensity is also estimated as well as the distribution of the number 
         of lines per log10(intensity)

Input structure:
 
    ! number of Transition files to read
    !
    read*,nfiles
 
    ! names of Transition files 
    !
    do i = 1,nfiles
      read*,intfilename(i)
    enddo

    ! name of the Energy file
    !
    read*,enrfilename

    ! the selected by the frequency limits transitions will be stored to the temporary file 'swapfile', 
    ! which can be later used in stead of the Transition file  - this will make the simualtions faster

    !Name of the Swapfile
     read*,swapfile

    !read the number of characters for the quantum numbers from the .states file
    read*,nchar

    ! temperature (K), partition function; 
    ! if partfunc <0 the partition function will be computed using the energies  provided
    !
    read*,temp,partfunc

    ! frequency range (cm-1) and number of grid points; the latter is not
    referenced for proftype='stick'
    !
    read*,freql,freqr,npoints

    ! form of spectra (profiles): 'gauss', 'doppler', 'bin' or 'stick' 
    !
    read*,proftype
    !
    ! type of spectra:
    ! 'absorption': absorption coefficients (cm/mol) 
    ! 'emission': emission coefficients (Ergs/mol/Sr)
    ! 'partfunc': partition function for a series of temperatures together with
    derivatives
    !
    read*,specttype

    ! HWPar = HWHM (cm-1) if ProfType='gauss'
    ! HWPar = molecular mean molar mass (g) if ProfType='doppler'
    ! HWPar = a print our threshold for absorption coefficient (cm/mol) if ProfType='stick'
    !
    read*, HWPar

    ! intensity cutoff (cm/mol or Ergs/mol/Sr) to spead up evaluation of 
    intensity, can be set negative for a zero-cutoff.
    ! not referenced for 'stick'
    !
    read*,thresh
    !

    !Output structure: 

    ! for 'gauss', 'doppler', 'bin'
    !
    print('(2(1x,es16.8))'), (Freq(i), Intens(i), i = 1, Npoints)
 
    ! for 'stick' the typical record  has the following format:

!     nu(cm-1)      Intensity       J_f     E_f           J_i     E_i          v of f-state  <- v of i-state (sring of ncahr length)
   1.90839060E+01  3.02879991E-21    1.0    19.8416 <-    0.0     0.7577        2    <-     5 
    ! where i,f stand for initial and final states, respectively;
    ! nu is the transition frequency
    ! Intensity is the absorption (cm/molecule)/emission (erg/s molecule-1 Sr-1) intensity 
    ! J_f and J_i  are the rotational angular momentum quantum number
    ! E_i and E_f are the rovibrational term values;
    ! nchar - number of characters used for quantum numbers as appear in .states