IBRION=3 bulk optimization

From Wiki
Jump to navigation Jump to search

go back to Main Page, Group Pages, Núria López and Group, Scripts_for_VASP

Procedure[edit]

See next section for the Script and Executable needed!

To choose a proper value for the POTIM in case of a IBRION=3 bulk optimization

1. First you need to perform a frequency calculation, setting in the INCAR file

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

PLEASE NOTE: just the degrees of freedom of the investigated bonds must be relaxed. For instance in case of a Cu2O bulk relaxation, I relaxed two neighbour Cu atoms and the O in between.

2. When this calculation converge, based on the POSCAR and OUTCAR of the frequency calculation, you need to execute

getdimer POSCAR OUTCAR POSCAR

which will generate a eigenvectors.dat file, presenting the following format

Info:            0
Eigenvalues
 -31.491683333336404       -29.378686935390292       -14.997850470930652       -9.6057143126896563       -5.4292953596452289       -1.6881155935524064       -1.3100285123688000       -1.1825456664410310      -0.59115181564548613 

3. Taken the highest eigenvalue, the proper POTIM is given, in this case, by

1/31.491683333336404*0.7=0.0222280909

where 0.7 is set as a control parameter.

go back to Main Page, Group Pages, Núria López and Group, Scripts_for_VASP, Computational Resources

Script and Executable needed[edit]

Instructions

1. Download the program File:Dimerdiag.tgz. Extract it and put it in your ~/bin/exe/ folder

2. Copy the script in the ~/bin folder. Recommended name: getdimer.

SCRIPT

#!/bin/bash
# 
# Generates the POSCAR of a dimer calculation from the non mass-weighted Hessian matrix
# Rodrigo García-Muelas
# November 14th, 2014 - Created
# March     9th, 2015 - Debugged 1 (Thanks to Marçal & Luca)
# 
# 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 -b 5- 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

3. Edit the script; change "rgarcia" by your username in this part:

# PART 3 - DIAGONALIZE 
/home/rgarcia/bin/exe/dimerdiag

go back to Main Page, Group Pages, Núria López and Group, Scripts_for_VASP, Computational Resources