IDM: Difference between revisions

From Wiki
Jump to navigation Jump to search
Rgarcia (talk | contribs)
Rgarcia (talk | contribs)
Line 44: Line 44:
''''' SCRIPT '''''
''''' SCRIPT '''''


:<tt><nowiki>
  #!/bin/bash
  #!/bin/bash
  #  
  #  
Line 70: Line 71:
   
   
  IBRION=`grep IBRION $2 | awk '{print $3}'`
  IBRION=`grep IBRION $2 | awk '{print $3}'`
  if [ [ $IBRION -gt "8" || $IBRION -lt "5" ]] ; then
  if [[ $IBRION -gt "8" || $IBRION -lt "5" ]] ; then
  echo "$2 is not an OUTCAR of a frequency job."
  echo "$2 is not an OUTCAR of a frequency job."
  echo "No actions taken" ; exit 1 ; fi
  echo "No actions taken" ; exit 1 ; fi
Line 96: Line 97:
  mv -f  diagonalizer_output.tmp eigenvectors.dat
  mv -f  diagonalizer_output.tmp eigenvectors.dat
  rm -fv *.tmp
  rm -fv *.tmp
</nowiki></tt>


= Alternative (old) versions =
= Alternative (old) versions =


WARNING: Some of the topics discussed by David Karhánek are outdated. For instance, it is not necessary to set NWRITE=3 for the frequency calculation:  [[IDM-IRC]] [[get-dimer-dir.sh]] [[get-irc-path.sh]] (''by David Karhanek'')
WARNING: Some of the topics discussed by David Karhánek are outdated. For instance, it is not necessary to set NWRITE=3 for the frequency calculation:  [[IDM-IRC]] [[get-dimer-dir.sh]] [[get-irc-path.sh]] (''by David Karhanek'')

Revision as of 12:24, 18 November 2014

go back to Main Page, Computational Resources, Chemistry & More, Computational Codes, VASP, Scripts for VASP

Instructions

Before start, please read about the Improved Dimer Method [[1]].

1. Generate your initial guess for the structure (POSCAR). To this end, you can either pre-converge with a NEB calculation, or do it by hand.

2. Be sure the metal or solid phase is frozen and the molecule is relaxed. Do a frequency calculation based on your initial guess. Specify the following in your INCAR file:

frequencies:
  IBRION =   5     #     
  EDIFF  =  1E-7   # 
  POTIM  =   0.010 #                  
  NFREE  =   2     # 

3. Based on your POSCAR and OUTCAR of the frequencies calculation, generate in a new folder the input of the IDM with the getdimer script. For example:

getdimer ../freq/POSCAR ../freq/OUTCAR POSCAR

4. Specify the following in your INCAR file:

improved dimer method:
  IBRION =  44     # IDM    
  EDIFFG =  -0.015 # use force criteria
  POTIM  =   0.100 #                  
  NFREE  =   2     # 
  FINDIFF=   2     # 
  DIMER_DIST=0.010 #               
  MINROT =   0.010 # 
  STEP_SIZE= 0.010 #                
  STEP_MAX=  0.100 #                
  NSW    = 500     #  


Script

Please copy the following lines in your ~/bin folder. Recommended name: getdimer.

$ getdimer <input:POSCAR> <input:OUTCAR> <output:POSCAR>

You will also need the program

SCRIPT

#!/bin/bash # # Generates the POSCAR of a dimer calculation from the non mass-weighted Hessian matrix # Rodrigo García-Muelas # November 14th, 2014. Tarragona. # # Use with VASP 5.x or higher # # INPUT # $1 Path of the POSCAR file containing the coordinates # $2 Path of the OUTCAR file containing the frequencies of the structure # $3 <OUTPUT> POSCAR file # # PART 0 - SECURITY CHECKS if [ -e $3 ] ; then echo "Warning! $3 already exist. Overwrite? (y/Y for yes)" read overwrite case $overwrite in y|Y|Yes|yes|YES) echo "$3 will be overwriten"  ;; *) echo "No actions taken "  ; exit 1 ;; esac fi IBRION=`grep IBRION $2 | awk '{print $3}'` if [[ $IBRION -gt "8" || $IBRION -lt "5" ]] ; then echo "$2 is not an OUTCAR of a frequency job." echo "No actions taken" ; exit 1 ; fi # PART 1 - READ POSCAR AND PREPARE INPUTS cp $1 diagonalizer_poscar.tmp # PART 2 - READ OUTCAR grep "Degrees of freedom DOF " $2 > temp01.tmp freedom=`awk '{print $6}' temp01.tmp` echo "$freedom" > diagonalizer_matrix.tmp grep -A $(($freedom+2)) 'SECOND DERIVATIVES' $2 > temp02.tmp cut -d ' ' -f3- temp02.tmp > temp03.tmp tail -n $freedom temp03.tmp >> diagonalizer_matrix.tmp # PART 3 - DIAGONALIZE /home/rgarcia/bin/exe/dimerdiag # PART 4 - CLEAN head -n 9 $1 > $3 cat diagonalizer_taildm.tmp >> $3 mv -f diagonalizer_output.tmp eigenvectors.dat rm -fv *.tmp

Alternative (old) versions

WARNING: Some of the topics discussed by David Karhánek are outdated. For instance, it is not necessary to set NWRITE=3 for the frequency calculation: IDM-IRC get-dimer-dir.sh get-irc-path.sh (by David Karhanek)