CAMVIB

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