xiaoqiugood的个人博客分享 http://blog.sciencenet.cn/u/xiaoqiugood

博文

科学无国界:关于VASP常用代码分享

已有 20079 次阅读 2015-2-1 16:39 |个人分类:关注的问题|系统分类:科研笔记

关注:

1) 赠人玫瑰,手留余香

2) 计算用的代码多是老外分享的,而国人开发的代码则多在自己组里用用,分享的甚是寥寥



VASP代码讨论论坛

http://theory.cm.utexas.edu/forum/

 

VASP有用的代码分享:

http://theory.cm.utexas.edu/vtsttools/index.html

https://notendur.hi.is//~hj/indexE.html

http://henkelmanlab.org/members/

 



Graeme Henkelman
                   Associate Professor
                   henkelman@cm.utexas.edu
                   Office: WEL 3.202A
                   Phone: (512) 471-4179


Research

Saddle point finding methodsThe efficiency of saddle point finding methods are compared on a common test system.
Long timescale dynamicsThe dimer min-mode following method has been combined with the kinetic Monte Carlo algorithm to create an adaptive KMC method.
Catalysis at surfaces        Density functional theory is used to determine the mechanisms of catalytic reactions on surfaces.
Nanoparticle catalysisThe electronic structure is calculated for bimetallic nanoparticles, making it possible to optimize the structure and composition of the particles for a desired reaction.
Bader charge density analysisA fast and robust method for analysing charge density grids.
Materials for Li-ion batteries                        Structure, stability and charge transfer kinetics of materials for Li-ion batteries.

Hannes Jónsson: Research area

More general description of the research area.

A. Methods for calculating rates and long time scale dynamics The group has developed several methods for calculating rates of slow transitions, such as chemical reactions and diffusion. The methods are based on transition state theory (TST), with or without the harmonic approximation.  Within the harmonic approximation, the challenge is to find the relevant saddle point(s) on the energy surface, as well as the harmonic frequencies at the saddle point and at the initial state.  In some cases only the initial state is known.  Then the  'Minimum-mode following' method is a powerful tool for finding both the mechanism of likely transitions as well as the activation energy. We have, for example, used this to simulate  long time scale dynamics in solids. When both the initial and final states are known, the  CI-NEB method is the most powerful one we know of. A  review sumary of various methods was recently published. We have in particular applied these methods to calculations of  crystal growth.  Within full TST, the challenge is to find the optimal dividing surface with dimensionality D-1 (where D is the number of degrees of freedom in the system). The optimal surface corresponds to the dividing surface with maximum free energy on the way from the initial state to final state. This represents the tightest bottle neck for the transition.  We have developed a method, called  OH-TST for finding an optimal hyperplanar dividing surface in a systematic way and a  mosaic of several hyperplanes enclosing the intial state. In both the harmonic and full TST calculations, the challenge is to navigate in a high dimensional space.  The group has also developed an extension of classical TST to  quantum TST,  where tunneling can become an important transition mechanism.  Here is a more complete list of  publications on these topics.

B. Density functional theory calculations The group mainly uses plane wave based DFT to calculate the interaction between atoms in condensed systems. While a parallel DFT program was developed in the group in the early 90s, the rapid development of the methodology and maturity of the field has made it more practical to adopt some of the sophisticated packages now available such as the  DACAPO code and the  VASP code.  Methods for calculating rates (see above) and  analysis of electron density developed by the group have been implemented within these packages, see in particular  VASP implementations (maintained by former graduate student, Prof. Graeme Henkelman at UT). A particular focus of the DFT calculations in the group is the testing and development of DFT methods for calculating properties of excited states, such as  self-trapped excitons in solids, catalysis, and surface diffusion and island formation The development and implementation of orbital dependent functionals in DFT is an ongoing effort in the group.









代码下载页面:

http://theory.cm.utexas.edu/vtsttools/download.html

 

Transition State Tools for VASP

This is not the official VASP web page. Designed to simulate the properties of systems at the atomic scale, VASP (Vienna Ab-initio Simulation Package) is a software package created, distributed, and maintained by the Hafner Research Group at the University of Vienna.

Vasp TST Tools

This page contains source code and scripts for finding saddle points and evaluating transition state theory (TST) rate constants with VASP.

Three saddle point finding methods and a couple other tools have been implemented to work with the VASP code. These methods are the

  • Nudged Elastic Band: method for finding reaction pathways between two stable states.

  • Dimer: method for finding reaction pathways when only one state is known.

  • Lanczos: provides an alternative way to find the lowest mode and find saddle points.

  • Optimizers: provides an alternative way to find the lowest mode and find saddle points.

  • Dynamical Matrix: uses finite difference to find normal modes and reaction prefactors.

Note to Users

The code on this site was written by several people who were in or associated with the Jónsson group. Development and maintenance are now being coordinated in the Henkelman group at UT Austin.

We have a discussion forum to address issues related to the code and scripts




Scripts简介页面:

http://theory.cm.utexas.edu/vtsttools/scripts.html#id2

 


SCRIPTS

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.tgz`_

Install by uncompressing this file, and adding the vtstscripts directory to your path.

The scripts are organized into the following categories (portals to them are on the left):

  • general

  • file conversion

  • nudged elastic band

  • dynamical matrix

  • dimer

  • charge density

  • density of states

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
ScriptsUsage/Description
Vasp.pmPerl 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.plusage: vef.pl
Prints the force and energy at each iteration of a vasp run.
vfin.plusage: vfin.pl(outputdirectory)
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.plusage: boxset.pl(POSCAR)(latticeconstant)
output: POSCARwithspecifiedlatticeconstant
posinterp.plusage: posinterp.pl(POSCAR1)(POSCAR2)(fraction)
output: POSCAR.outfile,toSTDOUT
pos2rdf.plusage: pos2rdf.pl(POSCAR)(atom)(binsize)
output: radialdistributionaroundspecifiedatom,toSTDOUT
neighbors.plusage: neighbors.pl(confile)(atom)
output: neighbordistancesfromaspecifiedatom,toSTDOUT
diffcon.plusage: diffcon.pl(POSCAR1)(POSCAR2)
output: distancebetweenatoms,scalarandvectorsum,toSTDOUT
dist.plusage: dist.pl(POSCAR1)(POSCAR2)
output: rootsumsquareddistancebetweenconfigurationfiles
modemake.plusage: modemake.pl(POSCAR1)(POSCAR2)
output: unitvectorbetweenPOSCARfiles,toMODECARfile
File Conversion Scripts
ScriptsUsage/Description
pos2con.plusage: pos2con.pl(POSCARorconfile)
output: conorPOSCARfile(respectively)
xdat2pos.plusage: xdat2pos.pl(StepnumberinXDATCARtobeturnedintoPOSCAR)
output: POSCARfile
xdat2xyz.plusage: xdat2xyz.pl(XDATCARfile)
output: xyzmoviefile(playableinjmol)
con2xyz.plusage: con2xyz.pl(confile)
output: xyzfile
xdat2vdat.plusage: xdat2vdat.pl(XDATCARandOUTCAR)VASP5.2ONLY
output: velocityusingforwarddifferencemethodtoVDATCARfile
Nudged Elastic Band Scripts
ScriptsUsage/Description
nebmake.plusage: nebmake.pl(POSCAR1)(POSCAR2)(numberofimages,NI)
output: directories[00,NI+1]containinginitialNEBPOSCARfiles
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.plusage: neb2dim.plorneb2dim.pl(numberofanimage)
output: directorysaddle_dimercontainingfilesfordimerrun
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.plusage: neb2lan.plorneb2lan.pl(numberofanimage)
output: directorysaddle_lanczoscontainingfilesforlanczosrun
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.plusage: nebef.pl
output: energyandforceofimagesintheneb
nebbarrier.plusage: nebbarrier.pl
output: energy,distance,andforcesalongtheneb
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.plusage: 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.plusage: 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.plusage: nebconverge.pl
output: directory(vaspgr)withplotsofenergyandforces
Can be used to monitor convergence for each image while the job is still running.
nebresults.plusage: 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.plusage: nebfreeze.pl(atom)(listofPOSCARfiles)
output: POSCARfiles,tooriginalfiles
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.plusage: nebavoid.pldistance
output: POSCARfiles,tooriginalfiles
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.
Charge Density Scripts
ScriptsUsage/Description
gavg.plusage: chgavg.plCHGCAR1CHGCAR2
output: CHGCAR_avg
Generates an average CHGCAR.
chgsum.plusage: 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.plusage: chgdiff.pl(CHGCAR1)(CHGCAR2)
output: CHGCAR_diff
Generates a CHGCAR difference.
chgparavg.plusage: chgparavg.plPARCHG1PARCHG2
output: PARCHG_avg
Generates an average PARCHG.
chg2cube.plusage: chg2cube.plCHGCAR
output: CHGCAR.cube
Converts a CHGCAR file to the CUBE format.
Dimer Scripts
ScriptsUsage/Description
dimplot.plusage: 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.plusage: diminit.pl(DIRornumber) usage: diminit.pl(DisplaceAlgo)(DisplaceRange)(Rcut) usage: diminit.pl(MaxCord)(POSCAR)(DISPLACECAR_sp)
output: DIRorprXXXXcontainingfilesfordimerruns
Generates an initialized dimer run in DIR or the numbered directories prXXXX, from a POSCAR and DISPLACECAR
dimmins.plusage: dimmins.pl(POSCAR1)(POSCAR2)(displacement)
output: mins/min1/POSCARmins/min2/POSCAR(andrelatedfiles)
Generates initial configurations which can be minimized from a converged dimer run.
dimmode.plusage: dimmmode.pl(CENTCAR)(NEWMODECAR)(numimages)(dist)
output: dimmode.xyz
Generates a movie along the dimer mode.
Dynamical Matrix
ScriptsUsage/Description
dymmatrix.plusage: dymmatrix.pl(DISPLACECAR)(OUTCAR)
or : dymmatrix.pl(#DISPLACECAR)(DISPLACECAR1)(DISPLACECAR2)...
or : dymmatrix.pl(OUTCAR1)(OUTCAR2)(OUTCAR3)...
output: mass-scaleddynamicalmatrix(freq.mat)
normalmodefrequencies(freq.dat)
eigenvalues(eigs.dat)
andeigenvectors(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.plusage: dymeffbar.pl(initialtemperature)(finaltemperature)
(saddlepointenergy)(filewithinitialstatefrequencies)
(filewithsaddlepointfrequencies)
output: eff_ea.dat,afilecontaining:
(temperature)(1000/temperature)
(classicalenergybarrier)
(zeropointenergycorrectedenergybarrier)
(quantumbarrierwithzeropointandtunneling)
dymzpbar.plusage: dymzpbar.pl(omegasquaredfile[eigs.dat])
output: thezeropointenergyineVtotheSTDOUT
This script sums up the zero point energy contribution from the stable modes.
dymseldsp.plusage: dymseldsp.pl(POSCAR1)(POSCAR2)(atomstoinclude)(displacement)
output: DISPLACECARfile,toSTDOUT
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.plusage: dymselsph.pl(POSCAR)(Centralatom)(radius)(displacement)
output: DISPLACECARfile,toSTDOUT
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.plusage: dymcmpdisp.pl(DISPLACECAR1)(DISPLACECAR2)
output: DISPLACECARfile,toSTDOUT
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.plusage: dymfit.pl(orderoffit)(displacement1)(matrix1)(displacement2)(matrix2)...
output: dynamicalmatrix,toSTDOUT
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.plusage: dymextract.pl(DISPLACECARofmatrixyouhave)(DISPLACECARofmatrixyouwant)(matrixyouhave)
output: dynamicalmatrix,toSTDOUT
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.plusage: dymreorder.pl(numberofDISPLACECARswithdesiredorder)(listofDISPLACECARs)(numberofDISPLACECARsofcurrentorder)(listofDISPLACECARs)(currentmatrix)
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.plusage: dymprefactor.pl(freq.datofminimum)(freq.datoftransitionstate)
output: prefactorinunitsofinversecm
dymanalyze.plusage: dymanalyze.pl(flag)(modevalue)(displacement1)(matrix1)(displacement2)(matrix2)...
output: informationontheagreementbetweenthe  fitsandtheoriginalmatrices
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.plusage: dymmodes2xyz.plPOSCARDISPLACECARmodes.dat(moviefolder)(freq.dat)(numimages)(dist)
output: moviesforeachnormalmode
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).
Density of State Scripts
ScriptsUsage/Description
split_dosusage:  split_dos
output: DOS0,DOS1,DOS2,..,DOSN
Split the DOSCAR file into atomic DOS files, (DOS1, DOS2,..,DOSN).  The DOSCAR and OUTCAR in the working directory will be used. This bash script was written for LORBIT =10 and = 11 calculations as well as spin (un)restricted.  The energy will be referenced to the fermi energy specified in the OUTCAR, (E-Ef).
dosanalyze.plusage: dosanalyze.pl[w=numwidthatquarter-height][e=emin,emax]
output: centerofthespecifiedbandforselectedatomsbasedonaweightedaverage,toSTDOUT
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 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.plusage: doslplot.pl
output: ldosplot.eps
The eps file has DOS plot for each of selected atoms (blue 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: Only LORBIT=11 and up to s,p,d bands can be handled with this script.



 



https://wap.sciencenet.cn/blog-567091-864674.html

上一篇:心灵鸡汤之:“内省不疚,夫何忧何惧”
下一篇:Chemical bonding analysis: atoms in molecules
收藏 IP: 61.157.130.*| 热度|

1 yangb919

该博文允许注册用户评论 请点击登录 评论 (1 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-4 18:45

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部