Documentaion for SPFIT and SPCAT

Last local (HSPM) modification: May 2, 2001
Notes, hints, and special considerations are highlighted.

These programs use subroutines in SPINV.C to calculate energies and intensities for asymmetric rotors and linear molecules with up to 99 vibrational states and up to 9 spins. No distinction is made between electronic states and vibrational states, or between electronic and nuclear spins. SPFIT is used for fitting transitions and term values, with no requirement that the transitions obey any particular selection rules. SPFIT takes input files with extensions par and lin, copies the par file to a bak file, creates new text output files with extensions par, fit, var, and creates a binary file with extension unf which is redundant with the var file but carries more precision for use in SPCAT. (Note: The unf file has been omitted in the more recent versions !) The par and var files follow essentially the same format and contain fitting parameters and optionally correlation information. The fit file contains the results of the fit. SPCAT is used for predicting line positions and strengths. It takes the var and unf files as input along with an int file that specifies limits for the calculation and contains the transition dipoles. The main output files for SPCAT use extensions out and cat, which are for general information and for the catalog output format, respectively. The cat file follows the format of the JPL catalog, but does not have experimental data flagged. Auxiliary output files with extensions egy and str can also be requested. The egy file can contain energies, derivatives with respect to the parameters, eigenvalues, and the undiagonalized Hamiltonian. The str file contains a list of all transition dipole moments. The file names for SPFIT and SPCAT can be specified as command line arguments in any order. The first file name is used as the base file name for any files not explicitly specified. If no command line arguments are specified the program will give a prompt for the file names.

Some of the details of the program are described in

H. M. Pickett, "The Fitting and Prediction of Vibration-Rotation Spectra with Spin Interactions," J. Mol. Spectros. 148, 371-377 (1991).

Quantum numbers which are used in the files can be given in several formats:

The field QNFMT in the cat file can be regarded as having 3 sub-fields: QNFMT = Q*100 + H*10 + NQN, in which NQN is the number of quanta per state, H is a binary code to indicate which of the last three quantum numbers are half integer quanta (1 indicates that F is half integer), and Q is the number in square brackets in the table below. The least significant bit of H refers to the F quantum number and is 1 if F is half integer.

Qmod5 gives the number of principal quantum numbers, i.e. without those designating spin quanta. Thus it is 0 for atoms, 1 for linear molecules in S states, 2 for symmetric rotors and linear molecules in states other than S, and 3 for asymmetric rotors.
Add 11 if several states are fit together. These can be vibrational or electronic states, different isotopomers etc.
Add 20 if two spins are coupled to Itot.
Add 40 if aggregate spin number n is used because the number of quantum numbers needed otherwise exceeds 6.

Note: These "corrections" to Q can be used simultaneously. For example, it can be 43 for NH2
(see lase entry in table below) or 63 if the two hydrogen nuclei are coupled to Itot before they are coupled to J.

Examples for Q:

Linear Sigma States: [Q]
N v J F1 F2 F [12]
N J F1 F2 F3 F [01]
N v J F1 Itot F [32]
N J F1 F2 Itot F [21]
N v n F - - [52]
Symmetric Tops: [Q]
N K v J F1 F [13]
N K J F1 F2 F [02]
N K v J Itot F [33]
N K J F1 Itot F [22]
N K v n F - [53]
N K n F - - [42]
Asymmetric Tops: [Q]
N Ka Kc v J F [14]
N Ka Kc J F1 F [03]
N Ka Kc J Itot F [23]
N Ka Kc v n F [54]
N Ka Kc n F - [43]

In most cases, the spin coupling scheme is N + S = J, J + I1 = F1,…, Fn-1 + In = F, but an alternative that can be selected is the scheme …, In-1 + In = Itot, Fn-2 + Itot = F. The quantum number n is an aggregate spin quantum number which is used when the number of quantum numbers would otherwise be greater than 6. Half integer spins are rounded up to the next integer. The sign of K for symmetric top notation designates parity under rotation about the b axis. When the vibronic wave function is even with respect to reflection in the ac plane, then the sign of K will also indicate the parity with respect to inversion. The symmetric top notation can also be used equivalently for linear molecules with orbital or vibrational angular momentum (lambda not zero). If the number of vibrations is one, then v is not included. The sequence J, F1 … F can be replaced with F1, F2 … F if no electronic spin is present. The length of the quantum number list is determined by the number of spins requested. The factoring of the Hamiltonian is determined by the parameter set.

line 1-NLINE [12|3, freeform]: QN, FREQ, ERR, WT

  • QN = 12 integer field of quantum numbers. Interpreted in a multiple I3 format as the quantum numbers for the line (upper quanta first, followed immediately by lower quanta). Unused fields can be used for annotation. The entire field is printed in
  • FREQ = frequency in MHz or cm-1
  • ERR = experimental error.
NOTE: Minus sign means that the frequency and error are in units of cm–1. FREQ and ERR will be converted internally to units of MHz.
  • WT = relative weight of line within a blend (normalized to unity by program). Not needed for unblended lines. If WT is not specifically given in the line file, 1/n will be used by the program if n is the number of blended lines at the same frequency and following successively.
NOTES: If an end-of-file is encountered before all the lines are read in, NLINE is set to the number read to that point. If successive lines have the same frequency, the lines will be treated as a blend and derivatives will be averaged using WT/ERR. Any lines with format errors will be ignored.

The freeform input begins in column 37 and extends to the end of the line. See the notes at the end of the next section for more on the freeform input.

Parameter lines: IDPAR, PAR, ERRPAR / LABEL

The Makefile shows how the various files are to be linked. The programs have been tested with Microsoft Visual C++ compiler and the gnu gcc compiler (which is freely available for unix and windows platforms). The programs should work without modification with any ANSI compliant 'c' compiler on any size computer. All arrays are allocated dynamically, and addressing or memory limits will place a practical limit on the size of matrices that can be used. For 16-bit computers the address limit is equivalent to a 90 X 90 double precision matrix, while for a 32-bit computer the adressing limit is 23170 X 23170. The program has been used on a 64-bit DEC alpha computer where the adressing limit is correspondingly larger. For both 32-bit and 64-bit computers, a more significant practical limit is usually given by the amount of memory or the amount of disk space available for virtual memory.

The identity of the files are:

  • calfit.c, calcat.c, and calmrg.c are the main programs.
  • subfit.c is supplementary to calfit.
  • ulib.c, blas.c, and cnjj.c are generic libraries.
  • calpgm.h, cnjj.h, and blas.h are required header files.
  • slibgcc.c contains system dependent fuctions.
  • spinv.c contains functions for spins and multiple vibrations. The executables using this library and calfit or calcat are called SPFIT and SPCAT respectively.
  • dpi.c is contains functions for doublet pi with a nuclear spin. The executables using this library and calfit or calcat are called DPFIT and DPCAT respectively.
  • *.nam are parameter name files for function getlbl in subfit. They are only used to label the output from calfit. The first default directory is the current directory. The second default directory is given in an environment variable named SPECNAME. Under Unix put a line like 'setenv SPECNAME /home/myname/' in one of your initialization files (e.g. .cshrc).
  • blas.c contains needed LINPACK double precision Basic Linear Algebra Subroutines (these may be available on some systems in a machine coded and/or vector processor form).
  • Makefile is the make file for the gcc compilation.
  • spinv.html is the specific documentation for the SPFIT and SPCAT and dpi.html is the specific documentation for the DPFIT and DPCAT.
  • general.txt
  • Last modified: 2019/02/10 10:50
  • by admin