DOCUMENTATION for SPFIT and SPCAT
These programs use subroutines in SPINV.FOR to calculate energies and
intensities for asymmetric rotors and linear molecules with up to
9 vibrational states and up to 5 spins. The number of spins can
be increased to 9 by a change of dimensions. Because of other
dimensioning limitations on the size of the Hamiltonian, these
limits on the numbers of vibration and numbers of spins cannot be
exercised at the same time without changing dimension limits on the
size of arrays(see below for directions on how to do this).
No distinction is made between electronic and nuclear spins, or between
electronic states and vibrational states.
See CALPGM.DOC for a description of the input and output files.
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. Molec. Spectroscopy 148, 371-377 (1991).
Quantum numbers which are used in file.lin and file.cat can be given
in several formats:
quantum numbers [ Q]
Linear Sigma States: N, v, J, F1, F2, F [11] or
N, J, F1, F2, F3, F [ 1]
N, v, J, F1, It, F [31]
N, J, F1, F2, It, F [21]
N, v, n, F [51]
N, n, F [41]
Symmetric Tops: N, K, v, J, F1, F [12] or
N, K, J, F1, F2, F [ 2]
N, K, v, J, It, F [32]
N, K, J, F1, It, F [22]
N, K, v, n, F [52]
K, K, n, F [42]
Asymmetric Tops: N, Ka, Kc, v, J, F [13] or
N, Ka, Kc, J, F1, F [ 3]
N, Ka, Kc, J, It, F [23]
N, Ka, Kc, v, n, F [53]
N, Ka, Kc, n, F [43]
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 inversion. The symmetric top notation can also be used
equivalently for linear molecules with orbital 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.
The field QNFMT in file.cat can be regarded as having 3 subfields:
QFMT = Q*100 + H*10 + NQN
in which NQN is the number of quanta per state, H is a binary code
the existence of half integer quanta for the last three quantum numbers,
and Q is the number in square brackets in the table above. The least
significant bit of H refers to the F quantum number and is 1 if F is half
integer
FORMAT option information beginning on line 3 of file.par and file.var :
CHR,SPIND,NVIB,KNMIN,KNMAX,IXX,IAX,WTPL,WTMN,VSYM,EWT,DIAG
CHR = character to modify parameter names file
(must be in first column)
sping.nam , default is 'g'. 'a' is used
for Watson A set, 's' is used for Watson
S set. Other character replaces the 'g' in
the name 'sping'. Only used to label the .fit
output file. (Ignored on all but first option line.)
sign SPIND = negative, use symmetric rotor quanta
positive, use asymmetric rotor quanta
(Sign ignored on all but first option line.)
mag SPIND = degeneracy of spins, first degeneracy
in units digit, second in tens digit, etc.
(If last digit is zero, spin degeneracies occupy
two decimal digits.)
sign NVIB = positive, prolate rotor (z=a,y=b,x=c)
negative, oblate rotor (z=c,y=b,x=a)
(Sign ignored on all but first option line.)
mag NVIB = number of vibrational states on the first option
line, identity of the vibrational state on all but
the first option line. (max. value = 99)
KNMIN,KNMAX = minimum and maximum Kz values
if both = 0 then linear molecule selected
IXX = binary flag for inclusion of interactions
1 means no delta N
2 means no delta J
4 means no delta F1 ,etc.
[default include all interactions]
(Ignored on all but first option line.)
mag IAX = axis for statistical weight ( 1=a, 2=b, 3=c,
add 3 if K-odd are excluded,
add 6 if K-even are excluded)
sign IAX = if negative, use 'It' basis in which the last
two spins are summed to give Itot, which is
then combined with the other spins to give F
(Sign ignored on all but first option line.)
WTPL,WTMN = statistical weights for even and odd state
VSYM = If positive, vibrational symmetry coded as decimal
digits ( odd means reverse WTPL with WTMN)
example: 10 = ( v=0 even, v=1 odd)
(Only works for the first nine states)
(Value ignored on all but first option line.)
If negative, signal that the next line is also an
option line.
EWT = weight for states with 3-fold E symmetry
ignore if EWT is negative (default)
(WTPL and WTMN apply to A1 and A2 symmetry)
EWT=EWT0+EWT1*100
For D3 symmetry (e.g. NH3),
for bosons: WTPL =(2I+1)(2I+3)(I+1)/3
WTMN =(2I+1)(2I-1)(I)/3
EWT0 =(2I+1)(I+1)(2I)/3
for fermions WTPL and WTMN are reversed
for I=1/2, when WTMN=0, multiply EWT0 by 2
because only half the E states are calculated
For C3 symmetry (e.g. CH3F ),
WTPL=WTMN=(2I+1)(4I*I+4I+3)/3
EWT0=(2I+1)(I+1)(4I)/3
Note: These weights can be divided by a
common multiple if the rotational partition
function is divided by the same factor
The A1 and A2 states are for MOD(ABS(K)-EWT1,3)=0
with EWT1=0 for l=0, EWT1=1 for l=1, and EWT1=2 for l=-1
STATES with EWT1 not zero MUST be specified in adjacent pairs
E symmetry states will be designated with positive K for
symmetric top quanta. For asymmetric top quanta with l=1,
Ka+Kc=N+1. For asymmetric top quanta with l=-1, Ka+Kc=N.
This designation for quanta in l=1 and l=-1 states will also be
applied to A symmetry states if there are only delta l=0
operators. If both WTPL and WTMN are not zero, there will be
two E states with the same nominal quantum number. (CALMRG will
merge the degenerate transitions into a single line.)
DIAG = -1 for no diagonalization
0 for energy ordering within Wang subblocks
1 for full projection assignment
For most cases only a single option line is needed. If different vibrational
or electronic states have different spin multiplicity or different KMIN,KMAX
additional lines are needed. Note that additional lines are signaled by the
sign of VSYM. The first option line sets up the defaults for all the
vibrational states, and subsequent option lines specify deviations from
the default. It is possible to mix Boson and Fermion states in the same
calculation, e.g. fitting different isotopomers together, but the qunatum
number format (QNFMT) in the .cat file will be correct only for the
v=0 state.
PARAMETER identifiers in file.par are coded in decimal digit form in the
order
FF,I2,I1,NS,TYP,KSQ,NSQ,V2,V1
for NVIB < 10:
each element occupies one digit except TYP which
occupies two digits, i.e.
((((((FF*10+I2)*10+I1)*10+NS)*100+TYP)*10+KSQ)*10+V2)*10+V1
for NVIB > 9:
each element occupies one digit except TYP, V1, and V2 which
occupy two digits, i.e.
((((((FF*10+I2)*10+I1)*10+NS)*100+TYP)*10+KSQ)*100+V2)*100+V1
FF = Fourier flag (used for internal rotation)
1 = operator multiplied by
cos(2*NS*pi*Kavg*rho/3)
2 = operator multiplied by
sin(2*NS*pi*Kavg*rho/3)
if NS>0 or sign(Kavg) if NS=0
I2,I1 = spin identifiers [I1 GE I2] I1=0 or I2=0 means N.
NS = power of N.S where S is the first spin
when FF=0, otherwise Fourier order
TYP = projection type
0 = scalar
1 = aa projection (no trace for I2 ne 0)
2 = bb projection (no trace for I2 ne 0)
3 = cc projection (no trace for I2 ne 0)
4+n = Phi+**2 N+**2n + Phi-**2 N-**2n
20+n = off-diagonal "a" symmetry
20 = vector along a
21 = bc + cb projection
40+n = off-diagonal "b" symmetry
40 = vector along b
41 = ac + ca projection
60+n = off-diagonal "c" symmetry
60 = vector along c
61 = ab + ba projection
80+n = unique contribution
for K'=K"=n*10+KSQ
90+2n = Euler series multiplying
Phi+**2 N+**2n + Phi-**2 N-**2n
91+2n = constants for Euler and Fourier series
KSQ = power of Nz**2
NSQ1 = power of N*(N+1)
V1,V2 = vibrational identifier, [V1 GE V2]
for NVIB < 10: V1=V2=9 matches all V1=V2
for NVIB > 9: V1=V2=99 matches all V1=V2
note 1: N+ = Nx + i Ny .
If FF < 2, then parameters with EVEN values of TYP >=20 and < 80
have an implicit i. If FF=2, then parameters with ODD values of
TYP >=20 and < 80 have an implicit i. Also, if FF=2, then
all parameters of TYP <20 have an implicit i. If EWT1=1 for both
of the vibrational states, then these nominally imaginary parameters
are assumed to be real and multiplied by the Lz operator (see below).
note 2: Prolate basis is I r, and oblate basis is III l.
note 3: rho(v,v') is specified by 9100vv'. TYP=91+2n parameters,
including rho, are constants and are not fitted.
note 4: For operators with TYP=1,2,3, if I2 is zero the operator is
the expected Cartesian projection, while if I2 is not zero
the operator is the expected Cartesian projection - I2.I1/3.
For example, 10000 is the NzNz operator, 10010000 is the NzSz
operator, 120010000 is the SzIz-S.I/3 operator.
note 5: For operators with I2=I1 > 0, spin corrections appropriate for
nuclear quadrupole coupling are applied: SQRT((2I+1)/(2I-1))/4I.
note 6: For the series with TYP=20+n,40+n,60+n, the operator is the
tensor of order (n+1) with the highest change in K for the given
symmetry. For the series with TYP=40+n, the change in K is
(1,1,3,3,5,5,..) . For a prolate rotor basis, the series with
TYP=20+n corresponds to a change in K of (0,2,2,4,4,6,..),
while the series with TYP=60+n has the same change in K as TYP=
40+n. For the oblate rotor basis, the changes in K are reversed
between TYP=20+n and TYP=60+n.
note 7: When coupling states where a given electronic (or nuclear) spin
is different (e.g. spin-orbit coupling), the reduced matrix
element for the spin operator is assumed to be unity.
FORMAT of dipole identifiers file.int:
IDIP is coded in decimal digit form according to the format
for NVIB < 10:
(((TYP*10 + I1)*10 + V2)*10 + V1)*10 + SYM, with
for NVIB > 9:
(((TYP*10 + I1)*100 + V2)*100+ V1)*10 + SYM, with
TYP = dipole type
I1 = spin identifier [ I1 = 0 means N or null ]
V1,V2 = vibrational states [ V1 GE V2 ]
SYM = symmetry [0 = magnetic, 1=a, 2=b 3=c]
TYP SYM Description
0 0 magnetic dipole [ N, S, I ]
0 1 a dipole, phi-a if I1=0, else phi-a X I
0 2 b dipole, phi-b if I1=0, else phi-b X I
0 3 c dipole, phi-c if I1=0, else phi-c X I
1 0 0.5*(3*phi-z*Nz - 1) or 0.5*(3*phi-z*Iz - 1)
1 1 (phi-b*Nc + phi-c*Nb) or (phi-b*Ic + phi-c*Ib)
1 2 (phi-a*Nc + phi-c*Na) or (phi-a*Ic + phi-c*Ia)
1 3 (phi-a*Nb + phi-b*Na) or (phi-a*Ib + phi-b*Ia)
2 0 (phi-x*Nx - phi-y*Ny)/4 or (phi-x*Ix - phi-y*Iy)/4
3 any TYP=0 * N*(N+1)
4 any TYP=0 * Nz*Nz
5 any TYP=0 left commutator with N*(N+1)/2
6 any TYP=0 * (NbNb - NcNc)
7 any TYP=0 * cos(2*I1*pi*K*rho/3)
8 any TYP=0 * sin(2*I1*pi*K*rho/3)
9 any TYP=0 * N*N*(N+1)*(N+1)
10 any TYP=0 left commutator with N*N*(N+1)*(N+1)/4
Note: Dipoles with SYM not 0 are assumed to be in units of Debye.
Dipoles with SYM = 0 are assumed to be in units of a Bohr
magneton.
Dipoles which are even order in direction cosine or N are
assumed to be multiplied by i, except between states with
EWT1=1. Dipoles between states with EWT1= (0,2), (2,0), and
(2,2) are ignored, but the matrix elements are calculated
using corresponding dipoles from states with EWT1=1 (see
below).
For ITYP = 7 or ITYP = 8, I1 is used for the Fourier order
and not the spin type. The constant rho is
specified in the parameter set. ITYP = 8 dipoles are
multiplied by i, and the symmetry of the states
connected is 3-SYM and the units follow the state
symmetry (e.g. 81000 is in Debye ).
SPECIAL CONSIDERATIONS FOR LINEAR MOLECULES
This program set will calculate a variety of interactions and
transitions within a Hund's case(b) basis, including spin orbit
interactions which change spin multiplicity. In the asymmetric
rotor language of this program, the first-order spin orbit
interaction takes the operator form of a vector dot product of a
direction cosine with the spin vector. It can have three distinct
symmetries: S.Phi-a connects states of the same lambda, while
S.Phi-b and S.Phi-c connect states where lambda differs by one.
Use of the symmetries in this program takes some care,
particularly for linear molecules where it may not be immediately
obvious whether to use the b or the c axis to designate
perpendicular operators. For consistency with the parity
designation for the symmetric top quanta, it is recommended that
the b axis be used for the symmetry defining axis (i.e. IAX=2 in
the option lines of the .par and .var files). With this choice, the
symmetry of rotation lines in the D2h group are:
Ag: even N for Sigma+ and all N for all other even lambda
Au: even N for Sigma-
B(a)u: odd N for Sigma+ and all N for all other even lambda
B(a)g: odd N for Sigma-
B(b)g: for odd lambda (even parity lambda doublet)
B(c)u: for odd lambda ( odd parity lambda doublet)
This means that the Hamiltonian, as well as magnetic dipoles, can
couple Sigma+ with Sigma- via an operator of B(a) symmetry. An
example is an operator like 10200001, which is the S.Phi-a spin
orbit interaction operator between state v=0 and v=1. Similarly,
interactions between Sigma- and Pi states have B(c) symmetry and
all other such interactions between Sigma+ and Pi states and
between Pi and Delta have B(b) symmetry. Electric dipole
transitions between Sigma- and Pi states have B(b) symmetry, while
all other delta lambda = 1 electric dipole transitions have B(c)
symmetry. Electric dipole transitions between the lambda doublets
have B(a) symmetry.
The g,u symmetry above is for the parity of the wavefunction under
inversion of the space fixed axes. The nuclear exchange symmetry,
on the other hand, affects only the statistical weights and does
not have any further impact on the factoring of the Hamiltonian.
In general, if IAX=2, WTPL will be the nuclear spin weight for
the Ag,Au,B(b)g, and B(b)u states, while WTMN will be the weight
for the others. For Sigma+g, Sigma-u, and g states with other
lambda, WTPL is the weight for even permutations, while for
Sigma-g, Sigma+u, and u states with other lambda, WTPL is the
weight for odd permutations. For example, in oxygen, Sigma+g and
Delta(g) have WTPL=1 and WTMN=0, while for Sigma-g WTPL=0 and
WTNM=1.
The dipole types given above provide for both allowed and forbidden
transitions. For transitions that owe their intensity to spin orbit
interactions the effective transition moment with be the product
of the interaction and a transition moment to some intermediate
state. Examples are a Delta Sigma- electric dipole code of 21vv'0
and a magnetic dipole code of 11vv'1. Electric dipole transitions
between Sigma+ and Sigma- will use 11vv'0, while magnetic
transitions will use 1vv'1. For transitions between Sigma+ and
Sigma+ the roles of these operators are reversed. Note that for
Sigma Sigma transitions, 11vv'0 has selection rules of delta
N = -2,0,+2, while 1vv'1 has selection rules of delta N = -1,+1.
Example of .var file for oxygen like molecule:
mock oxygen states
4
-3 3 0 0 0 2 0 1 -1 /default for v=0 triplet Sigma-(g)
1 1 2 2 0 2 1 0 -1 /v=1 is singlet Delta(g)
1 2 0 0 0 2 1 0 0 /v=2 is singlet Sigma-(g)
11 1e+7 0 /term value for v=1
22 2e+7 0 /term value for v=2
110010000 1000.0 0 /spin-spin interaction for v=0
199 10000.0 0 /B for all v
Example of .int file for oxygen like molecule:
mock oxygen rotational and electronic transitions
101 99000 200. 0 6 -80. -80. 99999999.
1000 1. /magnetic moment v=0
1110 1. /magnetic moment v=1
11011 1. /sigma - delta magnetic moment
1021 1. /sigma - sigma magnetic moment
The quantum number correlations between Hund's case (b) and case (a) can
be a bit confusing at first. For A<0 in a doublet Pi state, e.g. OH,
N=J-1/2 always correlates with Omega=3/2 and N=J+1/2 always correlates
with Omega=1/2. The same correlation is present for A>0 as long as
J+1/2 < sqrt(A/2B). Above this J, N=J-1/2 correlates with Omega=1/2 and
N=J+1/2 correlates with Omega=3/2.
--------------------------------------------------
SPECIAL CONSIDERATIONS FOR 'l'-doubled STATES:
The 'l'-doubled states must be specified in adjacent pairs. The EWT1=1 states
are those with K*l >0, and EWT1=2 states are those with K*l <=0. The sign of
K represents the parity, as in the non 'l'-doubled states. Operators should be
only specified between vibrational states with EWT1= (0,0), (0,1), (1,0),
(1,1), (1,2), and (2,1). Operators between vibrational states with
EWT1= (0,2), (2,0), and (2,2) are ignored. Operators connecting vibrational
states with different 'l' obey the selection rule that 'K-l' can only change
by multiples of 3. Operators diagonal in 'l' have no 'K-l' selection rules.
If EWT1=1 for both states and if the parameter would normally be implicitly
imaginary (i.e. operators odd-order in angular momentum for the Hamiltonian,
or even-order for the dipole moment), then the parameter is assumed to be
real and the rotational operator is multiplied by the sign of 'lz'.
The l-doubling option works best with DIAG=1 int the .par file because for
many l-doubling situations it cannot be guaranteed that the energies are
ordered with K.
--------------------------------------------------
Example of parameter types for asymmetric rotors:
11 energy for v=1
10000 A(0)
10099 A ( all vibrational states with v'=v" )
20099 B
30099 C
40099 0.25*(B-C) ( if prolate basis selected )
299 -DJ
1199 -DJK
2000 -DK(0)
600001 i Nc interaction between v=0 and v=1
20000099 N.I for second spin
120010099 SaIa
220010099 1.5 * quadrupole moment aa for second spin
220040099 quadrupole moment 0.25*(xx-yy) for second spin
Warning: parameters requested really signify the operator which
will multiply the parameter. Parameters not explicitly requested
are presumed to be zero. For example, B for a linear molecule or
symmetric top is 100, while for an asymmetric top it is 20000.
-----------------------------------------------------
MODIFYING DIMENSIONS IN SPINV.FOR
For really complicated problems, dimensioning in CALFIT, CALCAT, and SPINV
may not be adequate. All the easily modified dimensions are in the form of
PARAMETER statements. In SPINV make sure to modify all instances of the
given PARAMETER. Generally, there will be an error message which indicates
what PARAMETER is causing a problem.
In CALFIT and CALCAT, basic storage for eigenvectors, derivatives, and
strength matrices are allocated by HEAPLN. The maximum number of parameters
is given by NDPAR and the maximum number of energies is given by NDEGY.
In SPINV, MXSPIN sets the number of spins, but do not set it above 9. MAXQ
sets the maximum number of sub-blocks of a given Hamiltonian, while NX sets
the maximum number of spin combinations for a give F. NDPAR sets the maximum
number of 'internal' parameters. The number of internal parameters is greater
because parameters like the C rotational constant are calculated as three
spherical tensor components. NDMX sets working storage for the number of
elements that are non zero for a given spherical tensor parameter, but its
size should not grow with the problem.