Menu

Tree [ba6811] master /
 History

HTTPS access


File Date Author Commit
 README 2013-06-18 Lindqvist Lindqvist [ba6811] Added instructions
 nwhess2freq.m 2013-06-17 Lindqvist Lindqvist [4c92ee] First commit

Read Me

nwhess2freq.m is an Octave script. As such it should be possible to make it run in matlab without too much hassle. However, it is MEANT and DEVELOPED for Octave.

__WHY?__
The script can do three useful things:
* It allows you to re-use the Hessian to calculate normal modes for different isotopic substitutions without having to re-run the computation
* You can restrict your frequency calculation to a part of a system i.e. you can calculate frequencies for the first e.g. 10 atoms, and ignore the remainder (useful if you have frozen part of it with actlist)
* Show you how simple this really is.

__Octave__
Octave is available in most linux repositories (debian, ubuntu, mint, red hat etc.)
It can also be installed on Windows: http://verahill.blogspot.com.au/2013/03/353-cygwin-with-octave-and-gnuplot-on.html
It can also be installed on Mac OSX: http://verahill.blogspot.com.au/2013/01/327-installing-octave-gnuplot-on-osx.html

__Nwchem__
The Hessian matrices used as input for this program are generated by nwchem (http://www.nwchem-sw.org) which is a flexible, powerful and free program for computational chemistry.
Nwchem can be downloaded as binaries or source code. Many debian-derived distros have it in their repos, but building is easy. See e.g. http://verahill.blogspot.com.au/2013/06/449-nwchem-63-updated-sources-compiling.html

Hessians are generated using the 
  task freq 
directive.

A sample input file is given below:
------------------
Title "test"
Start  test
echo
charge 0

geometry autosym units angstrom
 O     0.00000     0.00000     0.00000
 H     0.922641     0.652406     0.00000
 H     -0.922641     0.652406     0.00000
end

basis "ao basis" cartesian print
  H library "6-31G"
  O library "6-31G"
END

dft
  mult 1
  direct
  XC b3lyp
  grid fine
  mulliken
end

driver
  default
end

task dft optimize
task dft freq
--------------------------

This will generate a .hess file, in this case 'test.hess'. Rename this 'input.hess'. 

(Don't confuse it with .drv.hess which is used for geometry optimisaton.)

__nwhess2freq__
First run a frequency calculation and rename the hessian output input.hess as shown in the previous section.

Next, create an 'input.mass' file. The first line tells you how many atoms there are. The remaining lines hold the masses of the atoms in amu. The masses should be in the same order as the atoms are listed in the nwchem input. For the water example, here's an input.mass:
-----------------
3
1.5994910D+01
1.0078250D+00
1.0078250D+00
-----------------

Finally, start Octave in the same directory as your input.mass, input.hess and nwhess2freq.m, and type
nwchess2freq

And you should receive the following (freqs in cm-1):
  -11.0036 
   -1.6327 
    3.1676 
    3.9298 
    7.5811 
   12.2862 
 1619.0207 
 3616.0904 
 3781.1341

It also gets saved into a 'normal.out' file. You can change the information which is printed by editing the .m file. The sparse output it gives by default is so that it can be piped into other programmes.
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.