-----------------------------------------------------------------------------
Program XIAM (Holger Hartwig, 15.November 1996)
(email: hartwig@phc.uni-kiel.de )
Version 2.5e (email: phc25@rz.uni-kiel.d400.de)
General Description
XIAM can predict and fit the rotational spectrum of an asymmetric molecule
with maximal 3 symmetric internal rotors and one nucleus leading to a weak
nuclear quadrupole coupling in the spectrum. Centrifugal distortion constants
of the overall rotation up to the 6th order and some 4th order distortion
constants between the internal and overall rotation are included. To analyze
spectra of excited states of the internal rotation motion, some top-top
coupling terms are used.
Copyright
Everybody can use and copy XIAM for free. If you make changes in the source
code: (i) mark them in the source itself
(ii) mention them in a README file
(iii) give XIAM a new unique name (eg. xiam-xx)
(iiii) send me an email (Thanks)
Method
XIAM uses the internal axes method given by Woods [1,2] and modified by
Vacherand et. al. [3]. The centrifugal distortion constants of the
Watson' A and S reduction [4] and the van Eijck-Typke reduction are used.
The nuclear quadrupole coupling is implemented with the matrix elements
given in [5] but neglects the J off-diagonal elements.
This leads to a similar restriction as the normal perturbation treatment
concerning the magnitude of the nuclear quadrupole coupling.
To analyze excited states different sets of rotational
and kinetic internal rotation constants can be fitted simultaneously.
This program is described and used in [6] as well. Please cite [6]!
Hamiltonian
The hamiltonian matrix is set up in the principal axes system PAS of the whole
molecule. Therefore the centrifugal distortion constants are comparable
with rigid rotor calculations. The internal rotation operator Hi of each top
is set up in his own internal axes system (rho-system: RAS) and the resulting
eigenvalues of the diagonalisation of Hi are transformed (rotated) into
the principal axes system. This transformation is done via a rotation about
two Euler angles beta and gamma, were beta and gamma are the angles between
the rho system and the principal axes system. P_r is the angular momentum
vector along the rho axis.
rho_x
gamma = arccos ---------------------------- rotation about x axis
(rho_x**2 + rho_y**2)**0.5
rho_z
beta = arccos ------------------------------------- rotation about y axis
(rho_x**2 + rho_y**2 + rho_z**2)**0.5
The top-top coupling matrix elements Hii are calculated by transforming the
operator (p_alpha - rho P_r) into the principal axes system and multiplying
the matrices then.
Rigid rotor part Hrr:
Hrr = BJ P**2 + BK P_z**2 + B- (P_x**2 - P_y**2)
Centrifugal distortion part Hcd (Watson A)
Hcd = -DJ P**4 - DJK P_z**2 P**2 - DK P_z**4
-2 dj P**2 (P_x**2 - P_y**2)
-dk (P_z**2 (P_x**2 - P_y**2) + (P_x**2 - P_y**2) P_z**2)
+H_J P**6 + HJK P**4 P_z**2 + HKJ P**2 P_z**4 + H_K P_z**6
+2 h_j P**4 (P_x**2 - P_y**2)
+hjk P**2 [P_z**2 (P_x**2 - P_y**2) + (P_x**2 - P_y**2) P_z**2)
+h_k [P_z**4 (P_x**2 - P_y**2) + (P_x**2 - P_y**2) P_z**4]
Internal rotation part of the i-th top in the rho system
Hi = F (p_alpha - rho P_r)**2
+ 0.5 V1n (1 - cos( n alpha))
+ 0.5 V2n (1 - cos(2n alpha))
where P_r is the angular momentum vector along the rho axis
Internal rotation distortion operator in the rho system Hid (none)
Internal rotation overall - rotation distortion operator in the PAS
Hird = 2 Dpi2J (p_alpha - rho P_r)**2 P**2
+ Dpi2K [(p_alpha - rho P_r)**2 P_z**2
+ P_z**2 (p_alpha - rho P_r)**2]
+ Dpi2- [(p_alpha - rho P_r)**2 (P_x**2 - P_y**2)
+ (P_x**2 - P_y**2) (p_alpha - rho P_r)**2]
+ Dc3J cos(3alpha) P**2
Top-Top coupling term Hii
Hii = F12 ((p_alpha_1 - rho_1 P_r_1)(p_alpha_2 - rho_2 P_r_2)
+(p_alpha_2 - rho_2 P_r_2)(p_alpha_1 - rho_1 P_r_1))
+ Vss sin(n alpha_1) sin(n alpha_2)
+ Vcc cos(n alpha_1) cos(n alpha_2)
The matrix elements of the nuclear quadrupole coupling are
chi_z e1 (3 K**2 - J(J+1)) diagonal
chi- e1 0.5((J(J+1)-K(K+1))(J(J+1)-(K+1)(K+2)))**0.5 2th off
chi_xz e1 (1+2K)(J(J+1)-K(K+1))**0.5 1th off
i chi_yz e1 (1+2K)(J(J+1)-K(K+1))**0.5 1th off
i chi_xy e1 ((J(J+1)-K(K+1))(J(J+1)-(K+1)(K+2)))**0.5 2th off
e1= (0.75 G(G+1.0) - I(I+1)J(J+1))/(2I(2I-1)J(J+1)(2J-1)(2J+3))
G = F(F+1) - I(I+1) - J(J+1)
Spin Rotation parameters are
C+ : C_x + C_y
C_z
C- : C_x - C_y
To fit different torsional states with different rotational constants,
several indepentent sets of parameters can be used (maximum: DIMVB).
Input and Output
The input of XIAM is read from the standard input stream of the operating
system (UNIT=5), the output is written to the standard output stream (UNIT 6).
To use an input file on DOS, Unix, and OS/2 type
xiam < inputfilename > outputfilename.
The input in a free format, it is analysed by the subroutine getx, which
enables the user to write comments into the inputfile. They will be ignored
by XIAM. There are three types of comments:
1) Pascal syntax:
input_a {comment .. } input_b
is read input_a input_b
2) Fortran 90 syntax:
input_a ! comment until end of line
is read input_a
3) Continuation character syntax:
input_a \ comment until end of line
input_b
is read input_a input_b
Comment 3) can be used to split one line over several lines in the
input file.
To get the '!', '{' or '\' characters without special meaning use
'\!', '\{' or '\\' instead.
The input of XIAM is divided into 7 blocks. Each block is separated
from the other by an empty line. One block can not contain an empty line.
Each block has a special meaning:
1. Block: Title and Comments.
This block will be written into the output file without any changes.
2. Block: Control parameters.
In this block basic numbers are given, e.g. the number of internal rotors,
the nuclear spin I ...
3. Block: Molecular parameters.
Here the initial values of the parameters of the Hamiltonian are given.
4. Block: Parameters to fit.
The parameters (or linear combination of parameters) which are to be
fitted are declared here.
5. Block: Symmetry labeling.
The symmetry species of the internal rotation (A, E) are defined here.
6. Block: Torsional states.
The torsional basis functions for the matrix are defined.
7. Block: Transitions
The quantum numbers and frequencies (if already known) are typed here.
Block 5 and 6 can be omitted if only a rigid rotor is calculated.
The input of each block has always the form keyword value [value [value..]]
Some control parameters are sums of binary numbers, were each binary number
has a special meaning (e.g. woods and adj).
List of keywords for each block:
1. Block: (no keyword)
2. Block:
ncyc (or nzyk)
maximum number of iteration cycles for the fit C_NZYK
print controls the output amount. (0) C_PRINT
aprint fine control of output amount (for debugging)
xprint fine control of output amount (for debugging)
ints intensity calculation C_INTS
0: no intensities
1: intensities of the transitions in the input-list
2: output of all transitions whose frequencies are
in the region 'freq_l' to 'freq_h' and have intensities
more than 'limit'.
Output for low barrier molecules (sorted acc. symmetry label)
3: same as 2: but with a different sorting scheme.
better suited for high barrier cases.
reduc type of reduction (0: Watson A, 1: Watson S, 2: van Eijck-Typke)
freq_l low boundary for int = 2 and 3
freq_h upper boundary for int = 2 and 3
limit intensity -limit for int = 2 and 3
temp temperature for the Boltzmann distribution intensities
orger use the given freqency errors to calculate the errors C_ORGER
of the parameters (1) or calculate weights of the
frequency errors and use obs.-calc. to calculate the
standard deviation of the parameters (0)
eval create a file 'eval.out' containing the eigenvalues C_EVAL
(0: no 1:yes)
dfrq create a file 'dfreq.out' containing the derivatives C_DFRQ
of the frequencies (0: no 1:yes)
maxm number of basis functions for all tops. (8)
2*maxm+1 functions will be used in the matrix
of operator Hi
woods controls the treatment of torsional integrals (abbr. TI)
for all sets.
sum of binary values:
1: calculate TI (required for the following terms)
2: normalize TI
4: use TI in the transformation of one top (exact)
8: use TI in the transformation of all other tops
32: use TI in the rigid rotor part
64: use TI in the transformation of one top
(approximation Vacherand)
if woods 0 is used TI's are completely ignored.
normally good results can be obtained
with woods 33 (= 32 + 1)
ndata number of transitions to be read (normally not used) C_NDATA
nfold potential barrier fold (normally 3 for methyl tops) C_NFOLD
spin twice nuclear spin of quadrupole coupling nucleus C_SPIN
Nitrogen-14 : spin 2
ntop number of internal rotating tops C_NTOP
adjf controls the value of F, F12, rho depending on the C_ADJF
geometry (the values of rho and the angles)
sum of binary values:
1: calculate F from rho, beta, and gamma each iteration
2: calculate F12 from rho, beta, and gamma each iteration
4: calculate F in a single top mode always (w/o F12)
8: calculate rho from F0, beta and gamma
16: calculate rho, delta and epsilon from F0, beta and gamma
adfj is automatically calculated if not specified in the input.
rofit robust fitting control (0:off ) C_ROFIT
defer default frequency error C_DEFER
eps tolerance limit in the SVD fit C_EPS
weigf not used
convg convergence limit (0.99 to 0.999999) C_CNVG
lambda initial value of lambda in the Marquardt fit C_LMBDA
fitscl scale the design matrix (1:no 0:yes) C_FITSC
svderr calculate the errors including all parameters (1:no 0:yes)
(including parameters rejected by the SVD-fit)
3. Block
This block defines the initial values of the parameters in the Hamiltonian.
If different sets of rotational constants are used, the keywords contain
additional numbers in parenthesis, e.g. BJ(2) is the BJ value for the second
set of constants (noted as B 2 in the transition list).
If no number is given, the parameter is equal for all sets of constants.
BJ * 0.5 (B_x + B_y) B_x,y,z are the cartesian rotational constants
BK * B_z - 0.5 (B_x + B_y) The representation must be chosen with the
B- * 0.5 (B_x - B_y) initial values of BJ, BK, B-.
DJ * 4th order centrifugal distortion
DJK *
DK *
dj *
dk or R6 * choose R6 for van Eijck Typke's reduction.
H_J * 6th order centrifugal distortion
HJK *
HKJ *
H_K *
h_j *
hjk *
h_k *
chi_zz * \chi zz Quadrupole coupling constants
chi- * \chi minus
chi_xy *
chi_xz *
chi_yz *
C+ * = C_x + C_y Spin Rotation coupling
C_z *
C- * = C_x - C_y
F12 Top Top interaction constants
Vss
Vcc
V1n_1 V1n_2 internal rotation parameters for each top. a third top
V2n_1 V2n_2 can be calculated if the matrix dimensions are set
F_1 F_2 properly in the 'iam.fi' file before compilation.
rho_1 rho_2
beta_1 beta_2
gamma_1 gamma_2
Dpi2J_1 Dpi2J_2
Dpi2K_1 Dpi2K_2
Dpi2-_1 Dpi2-_2
Dc3J_1 Dc3J_2
F0_1 F0_2 The inverse value of I_alpha in GHz (F0 = 505.379/I_alpha)
delta_1 delta_2 The angle between the internal rotation axis and the
principal axis z (radiant: 0...2Pi).
epsil_1 epsil_2 The angle between the principal axis x and the projection
of the internal rotation axis onto xy-plane.
The delta and epsilon angles are the polar-coordinates
of the internal rotation axis in the principal axes system.
lambda_z = cos(delta)
lambda_x = sqrt((1-cos(delta)^2)) * cos(epsilon)
lambda_y = sqrt((1-cos(delta)^2)) * sin(epsilon)
cos(epsilon) = lambda_x * sign(lambda_y)/ SQRT(lambda_x^2 + lambda_y^2)
! SQRT correction: Mark Marshall 31.08.2021
mu_x Dipole moment components for intensity calculation.
mu_y can not be fitted.
mu_z
Note: often the value of I_alpha is predicted by the geometry (methyl top
I_alpha = 3.18 - 3.2 uAA). To fix this value in the fit one must
set F0 to the appropriate value (about 159 - 157 GHz) and set
the 4th bit of the control parameter 'adjf' (decimal 8).
The parameter rho can not be fitted in this case.
To fit the angles between of internal rotation axis directly
(instead of indirectly with gamma and beta) the 5th bit of the
'adjf' parameter must be set (decimal 16). Gamma and beta can
not be fitted then.
4. Block (fitting of parameters)
In this block each line must begin with 'fit', 'dqu', dqx followed by the name
of the parameter to be fitted. If linear combinations of parameters are fitted,
the syntax is:
fit/dqu/dqx parameter 1 coefficient 1 parameter 2 coefficient 2 ...
The number of lines in this block is the number of independent parameters
in the fit.
fit fit parameters using analytic derivatives
dqu fit parameters using difference quotients to calculate the derivatives
dqx fit parameters using two difference quotients to calculate the
derivatives
parameter is the keyword of the parameter (see 3th block)
coefficient is a number giving the coefficient for the linear combination.
The dqu/x keyword allows two optional numbers to occur before the first
parameter. The first number gives the step width in percent for the
differential quotient (default 0.1%), the second number is multiplied with
the variated parameter after the fit (Hartley convergence parameter).
Not all parameters can be fitted with analytic derivatives,
in the moment only the rigid rotor parameters have this feature.
They are denoted with a '*' in the table above.
Maybe analytic derivatives of some other parameters will be available in
the future, but the differential quotient method will always be necessary
if (a) the parameters are affected by the 'adjf' control keyword and
(b) woods 64 is used (Vacherand Method).
If only a prediction is wanted the 4 block can be replaced by an empty line.
Examples for fitting of linear combinations:
dqu V1n_1 1.0 V1n_2 1.0
The potential parameter V3 for two equivalent tops is fitted.
dqu delta_1 1.0 delta_2 -1.0
Here the sum of the angles delta_1 and delta_2 is kept constant.
This may be necessary if the molecule possesses a symmetry plane.
5. Block (torsional symmetry)
S (or G for compatibility with old versions) followed by the sigma
for each top.
Each line in this block defines the symmetry species of the torsional part.
Example for one three fold top
S 0 ! this is the A Species (0 : sigma =0)
S 1 ! this is the E Species (1 : sigma =1)
Example for two different tops
S 0 0 ! Top 1: sigma=0 Top 2: sigma=0 total symmetry AA
S 0 1 ! Top 1: sigma=0 Top 2: sigma=1 total symmetry EiE
S 1 0 ! Top 0: sigma=1 Top 2: sigma=1 total symmetry EEj
S 1 1 ! Top 1: sigma=1 Top 2: sigma=1 total symmetry AE
S -1 1 ! Top 1: sigma=-1 Top 2: sigma=1 total symmetry EA
A name of the symmetry species can be added at the beginning of a line,
the name must start with a slash:
/A S 0
/E S 1
The name is used in the output of the transitions.
6. Block
V (only one keyword) followed by torsional state of each top.
Each line in this block gives one set of rotational constants.
Example for one top in the ground state:
V 0 ! matrix size is (2J+1) * (2J+1)
Example for two tops in the ground state:
V 0 0 ! matrix size is (2J+1) * (2J+1)
Example for one top in the ground and first excited state with different
sets of rotational constants for the states:
V 0 ! matrix size of ground state is (2J+1) * (2J+1)
V 1 ! matrix size of first excited state is (2J+1) * (2J+1)
The constants of the second line are calculated from the constants of the
first line plus additional terms +BJ_2, +BK_2, .., +gam_2.
In the transition list (block 7) B 1 refers to the ground state, B 2 to the
excited state.
One line can include several V's. This will increase the size of the matrix
to include off diagonal matrix elements .
Example for one top in the ground and first excited state with the same
set of constants:
V 0 V 1 ! matrix size is [(2J+1)+(2J+1)] * [(2J+1)+(2J+1)]
! which includes ground and first excited state in one matrix
In the transition list (block 7) V 1 refers to the ground state, V 2 to the
excited state.
Example for two tops in the first and second excited state, the
off diagonal elements are necessary for the top top interaction operators:
V 0 1 V 1 0 ! matrix size is [(2J+1)+(2J+1)] * [(2J+1)+(2J+1)]
7. Block
Each line is one transition, the sequence of the keywords is arbitrary.
Jup Jlo or J J quantum number
K-up K-lo or K- K minus and K plus (pseudo) quantum numbers
K+up K+lo or K+ K- and K+ are only used to calculate t
= Frequency, if '=' not given, the predicted frequency
will be written, default GHz
Err Frequency error
Sup Slo or S Torsional symmetry. the number refers to the n-th line
in block 5. a symmetry number of -1 indicates a rigid
rotor transition
V1up V1lo or V1 If more than one V keywords are given in one line of the
6th block, V 1 refers to the lowest, V 2 to the next
higher torsional level in the matrix, ....
V2up V2lo (not used)
Bup Blo or B the n-th set of rotational constants are used
(refers to the n-th line in the 6th block).
Fup Flo or F twice F, a F value of -1 indicates a transition without
nq-hfs
Tup Tlo or T tau number of the whole matrix ranging over all
torsional states. tau numbers the eigenvalues in
ascending order, starting with t 1
tup tlo or t tau number (range 1 - 2J+1) for one torsional state
# splitting fit: the number (counted relatively from this
transition) refers to the reference transition.
Example: # -1: the difference between this frequency
and the previous frequency will be fitted
If this transition is a prediction, the calc. splitting
is printed in the obs-calc output field. Furthermore,
if the reference transition was given, this frequency
is used as an offset to calculate the new frequency.
& average fit see '#'
Kup Klo or K K quantum number. This is a good quantum number for
the E-states, especially at low barriers.
For A-states the sign of K indicates the symmetry of
the eigenvector.
diff splitting input: the number refers to the reference
transition. The frequency following '= ' is the
difference between the absolute frequency and the
absolute frequency of the reference transition.
if diff 0 is given and ref '#' has a value the
'#' value will also be taken as the diff value.
GHz MHz cm-1 Units for the Frequency
Without Keywords the input is straightforward:
J K- K+ J K- K+ Frequency Error; all other options must follow with
keywords
Example (are lines have the same meaning):
2 1 2 1 0 1 15.785559
2 1 2 1 0 1 15785.559 MHz
Jup 2 K-up 1 K+up 2 Jlo 1 K-lo 0 K+lo 1 = 15.785559
J 2 K- 1 K+ 2 J 1 K- 0 K+ 1 = 15.785559
= 15.785559 J 2 K- 1 K+ 2 J 1 K- 0 K+ 1
J 2 1 K- 1 0 K+ 2 1 = 15.785559
J 2 1 t 2 1 = 15.785559
[1] R.C.Woods, J.Mol.Spectrosc., 21, 4 (1966).
[2] R.C.Woods, J.Mol.Spectrosc., 22, 49 (1967).
[3] J.M.Vacherand, B.P.van Eijck, J.Burie, and J.Demaison, J.Mol.Spectrosc.,
118, 355 (1986).
[4] J.K.G.Watson, in: Vibrational Spectra and Structure (J.R.Durig, ed.)
Vol.6, p.39, Elsevier, Amsterdam 1977.
[5] H.P.Benz, A.Bauder, Hs.H.Guenthard, J.Mol.Spectrosc., 21, 156-164 (1966).
[6] H.Hartwig and H.Dreizler, Z.Naturforsch, 51a (1996) 923.
APPENDIX
1. Output file 'eval.out'
This file contains the eigenvalues which are obtained during the calculation.
J : J Quantum no.
S : Symmetry quantum no. S=0: Eigenvalue without any internal rotation
S=1: normally A-Transition ... defined in block 5.
B :
F : double F-Value (nuclear quadrupole coupling)
T : number of eigenvalues in one matrix (ascending)
t : like T, but ranging only from 1 to 2J+1. t restarts for every v block.
K : assigned K quantum no.
best K(s) vec :
The K value of the basis function which has the strongest contribution
to the eigenvalue is printed. vec is the coefficient of this basis function.
If two basis functions have similar contributions both are printed.
V vec :
The v value of the eigenvector and its coefficient.
2nd.K vec :
The second important K Basis function and its coefficient
Iteration 1
J S B F T t K V Energy/GHz best K(s) vec V vec 2nd.K vec 2nd.V vec
1 0 1 2 1 1 0 1 12.63588736 0 1.000 1 0.000 1 0.000 1 0.000
1 0 1 2 2 2 -1 1 23.97366175 1 -1 0.707 -0.707 1 0.000 1 0.000
1 0 1 2 3 3 1 1 24.70430165 1 -1 -0.707 -0.707 1 0.000 1 0.000
2. Output control with the aprint and xprint keywords
aprint
1-7 AP_PL ! Parameter List (0..3)
8 AP_TF ! List of Transitions zero cycle
16 AP_TL ! List of Transitions
32 AP_TE ! List of Transitions extended
64 AP_PC ! additional Parameter information
128 AP_IO ! Echo of input transition list
256 AP_LT ! Latex Output (at the end only)
512 AP_SV ! SVD-Information
1024 AP_ST ! status
2048 AP_TI ! Torsional Integrals < v K | v' K' >
4096 AP_RM ! Rotation Matrix D
8192 AP_EO ! Eigen energies of one top operator
16384 AP_MO ! Matrix elements of one top operator
32768 AP_EH ! Eigen energies / vectors
65536 AP_MH ! Matrix elements
xprint
1 XP_FI ! first cycle
2 XP_LA ! last cycle
4 XP_CC ! every converged cycle
8 XP_EC ! every cycle
16 XP_DE ! for every dqu derivative
3. Examples of input files:
-------------------------- snip snip -------------------------------
A simple rigid rotor prediction !(1-st line of title )
A-species of propylenoxid !(2-nd line of title )
!(one empty line )
int 2 ! keyword for intensity calculation
ntop 0 ! no internal rotor
freq 12.0 18.0 ! Frequency region
limit 0.5 ! lower limit for intensities
temp 20.0 ! temperature in K for the Boltzmann factor
!(one empty line )
BJ 6.316693679
BK 11.706844345
B- 0.365382450
mu_x 1.67 ! Dipole moment
mu_y 0.56
mu_z 0.95
!(one empty line )
J 5