Loop.s

From Wiki
Jump to navigation Jump to search

go back to Main Page, Computational Resources, Scripts, Scripts for VASP

This is an example loop for finding the lattice constant of an FCC primitive cell (a rhomboeder: see the figure below for elements appearing in FCC lattice).

Crystal Structures
Crystal Structures of The Elements (for usual form at room temeperature).

The loop creates a series of POSCAR files with primitive cell size length specified in the seq command (3.1 to 4.0 Å with steps of 0.1 Å, i.e. 10 runs).

This cell size parameter, cell volume from OUTCAR and energy form OSZICAR are extracted into the output files.

Evaluation using a proper EOS method (preferentially the Murnaghan equation or Birch-Murnaghan equation) should follow.

Important Do not use quadratic regression (second order polynom)! - it's not an equation of state (EOS)!! Some tools for the non-linear fitting of Murnaghan Equation are listed online here: Online Resources for Calculating the Equation of State)

Note In the INCAR file, please take care that you set up a rigid calculation - NSW=1 - and that the electronic density is properly converged - NELMIN=10. The KPOINTS should define a very dense k-point grid (such as 10x10x10 or more).

The script loop.s itself:

#!/bin/bash
#$ -N Cu-lattice
#$ -pe c8m24_ompi 8
#$ -cwd
#$ -o vasp-ompi.out
#$ -e vasp-ompi.err
#$ -S /bin/bash
 
. /etc/profile.d/modules.sh

module load vasp/5.2
export OMP_NUM_THREADS=1

for L in `seq -f %3.1f 3.2 0.1 4.0`
do
cat >POSCAR <<!
Copper bulk - Cu1
  $L
    0.500000000000000   0.500000000000000   0.000000000000000
    0.000000000000000   0.500000000000000   0.500000000000000
    0.500000000000000   0.000000000000000   0.500000000000000
  1 
Selective dynamics
Direct
    0.000000000000000   0.000000000000000   0.000000000000000   T   T   T
!

echo "a= $L"
mpirun -np $NSLOTS vasp

V=`grep "volume " OUTCAR | tail -1 | awk '{print $5}'`
E=`tail -1 OSZICAR | awk '{print $5}'`

printf "%3.1f %6.2f %13.7f\n" $L $V $E >> SUMMARY-LVE.log
printf "%3.1f %13.7f\n" $L $E >> SUMMARY-LE.log
printf "%6.2f %13.7f\n" $V $E >> SUMMARY-VE.log
cp OSZICAR OSZICAR-$L
cp  OUTCAR  OUTCAR-$L
done

rm -f CHG* WAVE*

--Dkarhanek 13:53, 15 December 2010 (CET)