The following are a set of scripts to perform common
tasks to help with VASP calculations, and particularly with transition state finding.
The included Vasp.pm perl module contains several simple routines that are used by many of the scripts.
Download the scripts: vtstscripts.tar.gz
Install by uncompressing this file, and adding the vtstscripts directory to your path.
The scripts are organized into the following categories:
Notes:
- We recommend that the first line in the POSCAR file contain the element
symbols, in the same order as they appear in the POTCAR. This will allow for
proper visualization when files are converted to xyz files.
- For NEB scripts, there needs to be OUTCAR files for the initial and final
states placed in the 00 and NI+1, respectively.
Please direct questions about these scripts to the discussion
forum.
General Scripts
Script |
Usage / Description |
Vasp.pm |
Perl module that contains various common commands that one
might want when deal with VASP POSCAR files.
These include reading and writing a POSCAR file, reading and writing
a generic vector file, doing dot products and finding magnitudes
of vectors and other similar functions.
|
vef.pl |
usage: vef.pl
Prints the force and energy at each iteration of a vasp run.
|
vfin.pl |
usage: vfin.pl (output directory)
This script finds the ICHAIN tag from the OUTCAR and cleans up the run directory
accordingly. All relevant files (POSCAR, CONTCAR, OUTCAR (zipped), INCAR, KPOINTS,
XDATCAR (zipped), CHGCAR and WAVECAR if the are non-empty) are copied to the output
directory. In the run directory CONTCARs are moved over POSCARs in preparation for
a new run.
|
boxset.pl |
usage: boxset.pl (POSCAR) (lattice constant)
output: POSCAR with specified lattice constant
|
posinterp.pl |
usage: posinterp.pl (POSCAR 1) (POSCAR 2) (fraction)
output: POSCAR.out file, to STDOUT
|
pos2rdf.pl |
usage: pos2rdf.pl (POSCAR) (atom) (bin size)
output: radial distribution around specified atom, to STDOUT
|
neighbors.pl |
usage: neighbors.pl (con file) (atom)
output: neighbor distances from a specified atom, to STDOUT
|
diffcon.pl |
usage: diffcon.pl (POSCAR 1) (POSCAR 2)
output: distance between atoms, scalar and vector sum, to STDOUT
|
dist.pl |
usage: dist.pl (POSCAR 1) (POSCAR 2)
output: root sum squared distance between configuration files
|
modemake.pl |
usage: modemake.pl (POSCAR 1) (POSCAR 2)
output: unit vector between POSCAR files, to MODECAR file
|
File Conversion Scripts
Script |
Usage / Description |
pos2con.pl |
usage: pos2con.pl (POSCAR or con file)
output: con or POSCAR file (respectively)
|
xdat2pos.pl |
usage: xdat2pos.pl (Step number in XDATCAR to be turned into POSCAR)
output: POSCAR file
|
xdat2xyz.pl |
usage: xdat2xyz.pl (XDATCAR file)
output: xyz movie file (playable in jmol)
|
con2xyz.pl |
usage: con2xyz.pl (con file)
output: xyz file
|
xdat2vdat.pl |
usage: xdat2vdat.pl (XDATCAR and OUTCAR) VASP5.2 ONLY
output: velocity using forward difference method to VDATCAR file
|
Script |
Usage / Description |
nebmake.pl |
usage: nebmake.pl (POSCAR1) (POSCAR2) (number of images, NI)
output: directories [00,NI+1] containing initial NEB POSCAR files
Takes initial and final POSCAR files, and linearly interpolates
the specified number of images between them. The interpolated files
are written to the directories 00 to NI+1, where NI is the number of
specified images.
|
neb2dim.pl |
usage: neb2dim.pl or neb2dim.pl (number of an image)
output: directory saddle_dimer containing files for dimer run
Sets up a dimer run from a NEB run. It is assumed that the configuration
is contained in POSCARs, i.e. vfin.pl has been run. If no input argument is
given then the dimer is formed by interpolation around the highest point in
the exts.dat file. Otherwise it is formed around the input image. Curvature
data from the MEP is used for the initial orientation of the DIMER.
|
neb2lan.pl |
usage: neb2lan.pl or neb2lan.pl (number of an image)
output: directory saddle_lanczos containing files for lanczos run
Sets up a lanczos run from a NEB run. It is assumed that the configuration
is contained in POSCARs, i.e. vfin.pl has been run. If no input argument is
given then the run is set up by interpolation around the highest point in
the exts.dat file. Otherwise it is set up around the input image. Curvature
data from the MEP is used for the initial MODECAR.
|
nebef.pl |
usage: nebef.pl
output: energy and force of images in the neb
|
nebbarrier.pl |
usage: nebbarrier.pl
output: energy, distance, and forces along the neb
Generates the file neb.dat which contains the distance between images,
the energy of each image, and the force along the band. This data is
used by nebspline.pl to generate a force-based cubic spline along the
band.
|
nebspline.pl |
usage: nebspline.pl
output: spline.dat, exts.dat, mep.eps
Reads the file neb.dat and creates the files
spline.dat,exts.dat and mep.eps. spline.dat is a set of points that describe
the spline fitted to the data in the neb.dat while exts.dat contains
the location and energy of all extrema found along the curve and mep.eps is a
plot of the MEP path.
|
nebmovie.pl |
usage: nebmovie.pl (flag)
output: movie.xyz
Can be used to generate a movie from standard xyz files, generated either by
POSCARs (flag=0) or CONTCARs (flag=1) in every directory.
|
nebconverge.pl |
usage: nebconverge.pl
output: directory (vaspgr) with plots of energy and forces
Can be used to monitor convergence for each image while the job is still running.
|
nebresults.pl |
usage: nebresults.pl
output: spline.dat, neb.dat, exts.dat, mep.eps, movie.xyz, vaspgr
After a run has finished and wrapped up with
vfin.pl, the nebresults.pl
can be used to run
nebef.pl, nebspline.pl,
nebmovie.pl and nebconverge.pl automatically.
|
nebfreeze.pl |
usage: nebfreeze.pl (atom) (list of POSCAR files)
output: POSCAR files, to original files
Takes an atom number and a list of POSCAR files and
then freezes that atom, as well as shifting the contents of each
POSCAR file so that that atom has the same position in each cell.
This is useful if you need to give all POSCARs in a NEB calculation
the same frozen point.
|
nebavoid.pl |
usage: nebavoid.pl distance
output: POSCAR files, to original files
If atoms are closer than the specified distance, the script pushes these atoms apart.
The new geometry is written in the POSCAR file, and the old saved as POSCAR_orig.
Warning: this script does not give a set of equally spaced images.
|
Script |
Usage / Description |
dimplot.pl |
usage: dimplot.pl
output: force.eps, energy.eps, curvature.eps
Generates simple figures from the out.dat file to monitor the behavior of a dimer run.
|
diminit.pl |
usage: diminit.pl (DIR or number)
(DisplaceAlgo) (DisplaceRange) (Rcut)
(MaxCord) (POSCAR) (DISPLACECAR_sp)
output: DIR or prXXXX containing files for dimer runs
Generates an initialized dimer run in DIR or the numbered directories prXXXX,
from a POSCAR and DISPLACECAR
|
dimmins.pl |
usage: dimmins.pl (POSCAR1) (POSCAR2) (displacement)
output: mins/min1/POSCAR mins/min2/POSCAR (and related files)
Generates initial configurations which can be minimized from a converged dimer run.
|
dimmode.pl |
usage: dimmmode.pl (CENTCAR) (NEWMODECAR) (numimages) (dist)
output: dimmode.xyz
Generates a movie along the dimer mode.
|
Dynamical Matrix
Script |
Usage / Description |
dymmatrix.pl |
usage: dymmatrix.pl (DISPLACECAR) (OUTCAR)
or dymmatrix.pl (#DISPLACECAR) (DISPLACECAR1) (DISPLACECAR2) ...
(OUTCAR1) (OUTCAR2) (OUTCAR3) ...
output: mass-scaled dynamical matrix (freq.mat)
normal mode frequencies (freq.dat)
eigenvalues (eigs.dat)
and eigenvectors (modes.dat)
Takes the output from the dynamical matrix calculation and creates
the matrix. The DISPLACECARs should only contain those degrees of freedom that
were calculated in their corresponding OUTCARs (see
dymcmpdisp.pl). The scripts now handles the diagonalization
itself via package from CPAN. (It could be a bit slow for large matrices).
|
dymeffbar.pl |
usage: dymeffbar.pl (initial temperature) (final temperature)
(saddle point energy) (file with initial state frequencies)
(file with saddle point frequencies)
output: eff_ea.dat, a file containing:
(temperature) (1000 / temperature)
(classical energy barrier)
(zero point energy corrected energy barrier)
(quantum barrier with zero point and tunneling)
Temperature values are in K and energy in eV. Frequency files are eig.dat file
from dymmatrix.pl, i.e. angular frequency squared where
the time unit is tau = 1.018e-14 s. Each energy barrier can be multiplied with
the classical prefactor obtained via Vineyard's formula to give the corresponding
rate constant.
|
dymzpbar.pl |
usage: dymzpbar.pl (omega squared file [eigs.dat])
output: the zero point energy in eV to the STDOUT
This script sums up the zero point energy contribution from the stable modes.
|
dymseldsp.pl |
usage: dymseldsp.pl (POSCAR 1) (POSCAR 2) (atoms to include)
(displacement)
output: DISPLACECAR file, to STDOUT
Takes as input two POSCAR files,
n, the number of atoms to include, and the displacement. It then
finds the n atoms that have the largest displacement between the two
POSCAR files. The file DISPLACECAR is created, which contains the
displacements of each degree of freedom (zero, unless the atom is one
of the n atoms, in which case it is the entered displacement). This
file is ready to use, then, with the dynamical matrix routine.
|
dymselsph.pl |
usage: dymselsph.pl (POSCAR) (Central atom) (radius) (displacement)
output: DISPLACECAR file, to STDOUT
Similar to dymseldsp.pl, except it only
takes one POSCAR and also needs an atom number as input. It then
finds the n atoms closest to the chosen atom and these are the atoms
given non-zero displacements in the DISPLACECAR file.
|
dymcmpdisp.pl |
usage: dymcmpdisp.pl (DISPLACECAR 1) (DISPLACECAR 2)
output: DISPLACECAR file, to STDOUT
Takes as input two DISPLACECAR files, compares
them, and outputs a DISPLACECAR file in which those degrees of freedom
that are set in one DISPLACECAR but not the other. Thus, if you use
dymseldsp.pl to create a DISPLACECAR with 24 degrees of freedom,
and then you want to calculate then next 12 degrees of freedom, you
would dymseldsp.pl for 36 degrees of freedom and use
compare_disp.pl to extract those 12 which aren't included in the first
DISPLACECAR. You can then run the dynamical matrix calculation on
this new file, getting the forces for these 12 new displacements, and
then use dymmatrix.pl to combine the OUTCARs from both
calculations into one matrix.
|
dymfit.pl |
usage: dymfit.pl (order of fit) (displacement 1) (matrix 1)
(displacement 2) (matrix 2) ...
output: dynamical matrix, to STDOUT
Used to fit between two or more matrices together. It
takes as input the order of the fit, and then pairs of displacements
and matrices. It outputs a matrix of the same order. It requires the
Perl modules Math::Matrix and Math::Approx.
|
dymextract.pl |
usage: dymextract.pl (DISPLACECAR of matrix you have)
(DISPLACECAR of matrix you want)
(matrix you have)
output: dynamical matrix, to STDOUT
Used to create a smaller dynamical matrix from a
larger one. If you calculated many degrees of freedom the first time
and want to check how the quantity converges versus degrees of
freedom, use this to create the smaller matrix. You need the
DISPLACECAR for the matrix you have and the DISPLACECAR for the matrix
you want.
|
dymreorder.pl |
usage: dymreorder.pl (number of DISPLACECARs with desired order)
(list of DISPLACECARs)
(number of DISPLACECARs of current order)
(list of DISPLACECARs) (current matrix)
output: dynamical matrix, to STDOUT
Reorders a dynamical matrix. You might want to use
this if you plan on fitting matrices, but you got at them different
ways (for example, one you had by doing all of the degrees of freedom
at once and the second you created by doing degrees of freedom a bit
at a time... the ordering of the displacements in each matrix will be
different). You need the series of DISPLACECARs that were used to
create each matrix.
|
dymprefactor.pl |
usage: dymprefactor.pl (freq.dat of minimum)
(freq.dat of transition state)
output: prefactor in units of inverse cm
Takes as input two eigenvalue files, of the form output
by dymmatrix.pl, with the minimum state first and
the transition state second. It then outputs the prefactor, as
calculated by Vineyard's formula.
|
dymanalyze.pl |
usage: dymanalyze.pl (flag) (modevalue) (displacement 1) (matrix 1)
(displacement 2) (matrix 2) ...
output: information on the agreement between the
fits and the original matrices
Intended to help analyze the convergence of the
dynamical matrices and compare the differences both between different
displacements as well as different orders of fits. It takes as input
pairs of displacements and their corresponding matrix. The first
argument is a flag. If it is zero, then a fit is done with each
successive matrix added to the points used to determine the fit. The
output tells how much the force constants change as each point is
added to the fit. If the flag is greater than zero, then a fit is
done with the first n, where flag equals n, matrices, and the
difference between the force constants calculated for the other
matrices and the fitted matrices is printed. The analysis is done for
any modes which have a frequency larger than modevalue.
|
dymmodes2xyz.pl |
usage: dymmodes2xyz.pl POSCAR DISPLACECAR modes.dat
(moviefolder) (freq.dat) (numimages) (dist)
output: movies for each normal mode
Takes the configuration file (POSCAR), displacement file (DISPLACECAR) and modes file
(modes.dat), which is created by running dymmatrix.pl, and
creates a movie for each mode. These xyz movies are saved in the
moviefolder (if designated) or the current directory. The frequency of each mode will
be written to the xyz files if the freq.dat file is provided.
The numimages variable sets
the number of frames in each mode movie and the dist variable sets the vibrational
amplitude.
Note: if the modes.dat is created by using serveral DISPLACECARs as indicated in
dymmatrix.pl, use the concatenated DISPLACECAR file in this script (i.e., cat those DISPLACECAR files in the same order as they were used in dymmatrix.pl).
|
Script |
Usage / Description |
chgavg.pl |
usage: chgavg.pl CHGCAR1 CHGCAR2
output: CHGCAR_avg
Generates an average CHGCAR.
|
chgsum.pl |
usage: chgsum.pl (CHGCAR1) (CHGCAR2) (fact1) (fact2)
output: CHGCAR_sum
The values in CHGCAR_sum are (CHGCAR1*fact1+CHGCAR2+fact2). By default,
fact1=fact2=1.0, so that the output is the sum of the input charge density files
|
chgdiff.pl |
usage: chgdiff.pl (CHGCAR1) (CHGCAR2)
output: CHGCAR_diff
Generates a CHGCAR difference.
|
chgparavg.pl |
usage: chgparavg.pl PARCHG1 PARCHG2
output: PARCHG_avg
Generates an average PARCHG.
|
chg2cube.pl |
usage: chg2cube.pl CHGCAR
output: CHGCAR.cube
Converts a CHGCAR file to the CUBE format.
|
Script |
Usage / Description |
dosanalyze.pl |
usage: dosanalyze.pl [w=num width at quarter-height] [e=emin,emax]
output: center of the specified band for selected atoms based on a
weighted average, to STDOUT
This script sums up the atomic projected DOS over some group of atoms, and then calculates
the center of the specific band using a weighted average.
The default is set to calcualted the center for the whole band.
However, it can also consider DOS within a user specified range by using
the optional "w=" or "e=" flag.
By using "e=emin,emax" flag, only the states in ranger [emin,emax] are considered.
By using "w=" flag, the script finds a half width for the band at half the max height and,
based on the number following w= , calculates a weighted average within
the limits of that many half widths at half height from the center.
In this manner, a band center may be found by weighted average without including noncontributing states.
If no orbital flag is specified, the script analyzes the d-band. If no atom is selected, it analyzes
all of them. If no w= tag specified, the center is calculated between 2.5 half widths at half height
Note: the split_dos.ksh script should be run first to get the resulting new files labeled as DOS1,
DOS2, ..., DOSN,where N is the number of atoms in the unit cell.
|
doslplot.pl |
usage: doslplot.pl
output: ldosplot.eps
The out put eps file has DOS plot for each of selected atoms (bule lines), and the DOS plot for the
all system (red line).
If no orbital flag, plot the d-band.If no atom is selected, plot all of them.
Note: the split_dos.ksh script should be run first to get the resulting new files labeled as DOS1,
DOS2, ..., DOSN,where N is the number of atoms in the unit cell.
|
|