The diagonalisation of the mass-weighted Cartesian
force constant matrix evaluated at a stationary point on the potential energy
surface should yield six zero eigenvalues for translational and rotational
motions and 3N-6 non-zero eigenvalues for vibrational modes. In practice,
Cartesian calculated force constants do not lead to exactly zero eigenvalues
for the translational and rotational motions. The unwanted contamination by
spurious translational and rotational contributions give rise to small non-zero
frequencies for the translational and rotational motion. The non-zero
frequencies need to be removed before the kinetic isotope effect is calculated
and this is achieved by the CAMVIB program. The small non-zero translational
and rotational frequencies arising from force-constants that are computed
directly in Cartesian co-ordinates are eliminated by means of a projection
method which preserves only the internal co-ordinates contribution to the force
constants. The resultant vibrational frequencies are then said to be pure as
there are six zero eigenvalues for translational and rotational motions and
3N-6 non-zero eigenvalues for the vibrational modes.
The CAMVIB pdf manual and fortan code can be
downloaded
here by right clicking your mouse button: manual code
Generation of CAMISO input script
(camiso.mak)
The camiso.mak script reads in the co-ordinates of the core atoms (in this case ts.pos) and the
associated hessian (ts.hes). The atoms contained in the system are listed (in
the same order as obtained from the core
selection) in the symbol.atsy file. The resulting co-ordinate and second
derivative data is saved in the CAMISO input deck format (ts.deck). Z is the
log file generated as the camiso.mak script is executed. The following command
is run from the UNIX command line (without the #).
# tclsh camiso.mak position=ts.pos hessian=ts.hes
atsy=symbol.atsy name=ts.deck > & z &
The execution of GRACE is now initiated and a title is
output to Z; this includes the names of the .hes, .pos, and .atsy files used to
generate the CAMISO input deck. The title provides a useful check to see if the
correct files are used.
source $env(GRACE_LIB)/grace.tcl
init i n
parse make_camvib "silent $argv" { hessian
position atsy name}
puts
"================================================"
puts " CAMISO INPUT GENERATOR"
puts " A.J.Turner May 1997"
puts
"================================================"
puts ""
puts "==============="
puts "
OPTIONS\n"
puts "hessian
file : $hessian"
puts "position file : $position"
puts "symbol
file : $atsy"
puts "output
file : $name"
puts "\n===============\n"
puts "NATOM = [llength $atsy] \nNHESS = [llength
$hessian] \nNCOOR = [llength $position]"
The files are read in as lists from the working
directory.
work> name=$hessian var=hess
work> name=$position var=lpos
work> name=$atsy var=latsy
These lists are now converted to TCL arrays.
list>array list=latsy array=symbols
list>array list=hess array=h
list>array list=lpos array=pos
p>xyz p=pos x=x y=y z=z
The hessian must now be scaled into hartree bohr-2
for input into CAMISO
la mbys
matrix=h scale=[expr 1.0 / 2242.37864102] result=h
The rotation and translation components are now removed from
the hessian matrix and the resulting eigenvalues are printed out to Z.
la prjh p=pos hessian=h result=h
la eign matrix=h nroots=0
pmatrix matrix=values
The first part of the CAMISO input deck is to list the atoms
and masses with the corresponding Cartesian co-ordinates. For each atom defined
in the .atsy file, the script places the relevant isotope in the deck variable.
For example, if the atom in .atsy is hydrogen, then 1H is printed; if it is a
carbon atom, then 12C is printed to deck. If there are no atom symbols in the
.atsy file, then the error message
ERROR ==> Empty atomic symbol entry will be printed. All the
co-ordinates in the CAMISO input deck are reported to seven decimal places. If
the atom symbol is not recognised then the error message ERROR ==> Type
'$atsym' not availble to Camvib, use masses instead is printed (where $atsym is
the offending atom symbol supplied (It is held in the atsym variable)).
set deck " 1 1 0 - generated from
make_camiso.emp\n"
set c 0
foreach i [array names symbols] {
incr c
set atsym
$symbols($c)
case
[string tolower $atsym] {
h {set s
1H}
li {set
s 6LI}
be {set
s 9BE}
b
{set s 10B}
c {set s
12C}
n {set s
14N}
o {set s
16O}
f {set s
19F}
si {set
s 28SI}
p {set s
31P}
s {set s
32S}
cl {set
s 37CL}
""
{
puts
"\nCartesian Coordiantes so far:-\n$deck"
flush
stdout
error
"ERROR ==> Empty atomic symbol entry"
}
default
{
puts
"Cartesian Coordiantes so far:-\ndeck"
flush
stdout
error
"ERROR ==> Type '$atsym' not availble to Camvib, use masses
instead"
}
}
append deck
[format "%4s %12.7f%12.7f%12.7f" $s $x($c) $y($c) $z($c)]\n
}
After the co-ordinates, an * and new line character are
added to the deck variable. This symbol separates the co-ordinates and the
Cartesian force constants that are subsequently appended to deck.
append deck "*\n"
set cx 0
set out " "
set nvar [llength $h(1)]
while {$cx < $nvar} {
incr cx
set cy 0
foreach j
$h($cx) {
incr cy
if {$cy
> $cx} break
append
out [format %20.12e $j]
case
$out in *.*.*.* {
append deck [set out]\n
set
out " "
}
}
}
All the information contained within the deck variable is
the sent to the ts.deck file in the working directory.
work< var=deck name=$name
Williams, I.H. (1983).
Force-constant Computations in Cartesian Co-ordinate - Elimination of
Translational and Rotational Contributions. J.
Mol. Struct. - THEOCHEM, 11(3-4),
pp. 275-284.
Williams, I.H. (1982). On the
Representations of Force-fields for Chemically Reacting Systems. Chem. Phys. Lett., 88(5), pp. 462-466