VASP Computing Bulk Modulus of YSZ: Difference between revisions

From Micro and Nano Mechanics Group
Jump to navigation Jump to search
(initial copy)
 
 
(23 intermediate revisions by the same user not shown)
Line 8: Line 8:


===Input files===
===Input files===
INCAR
<pre>
SYSTEM = YSZ +VAC Calculation (neutral)
ISTART = 0
ISMEAR = 0
IBRION = 2
ALGO=Normal
LREAL= Auto
NPAR = 4
NSIM = 4
NSW = 100
</pre>
KPOINTS
<pre>
Monkhorst-pack
0
Gamma #gamma-centered
15 15 15
0. 0. 0.
</pre>
Use POTCAR including Yttrium ion. POSCAR file is generated in script(vasp.script).


auto.B.par
<pre>
!#/bin/bash


NPROCS=$1
PROG=$2


xi=3


for a in 5.0 5.02 5.04 5.06 5.08 5.10 5.11 5.12 5.13 5.14 5.15 5.16 5.17 5.18 5.19 5.20 5.21 5.22 5.23
5.25 5.27 5.29 5.31 5.33 5.35 5.37 5.40
do


rm POSCAR WAVECAR
===Run VASP===


cat > POSCAR << FIN
YSZ
$a
1.00 0.00 0.00
0.00 1.00 0.00
0.00 0.00 1.00
2 2 7
Direct
0.0000 0.0000 0.0000 T T T
0.5000 0.0000 0.5000 T T T
0.5000 0.5000 0.0000 T T T
0.0000 0.5000 0.5000 T T T
0.2500 0.2500 0.2500 T T T
0.7500 0.2500 0.2500 T T T
0.2500 0.7500 0.2500 T T T
0.7500 0.7500 0.2500 T T T
0.2500 0.2500 0.7500 T T T
0.7500 0.2500 0.7500 T T T
0.2500 0.7500 0.7500 T T T


FIN


/opt/mpiexec/bin/mpiexec --comm=pmi -np $NPROCS $PROG >> vasp.log


b=`tail -1 OSZICAR | sed -s 's/F=//; s/E0=//; s/d E =//;'`
echo $a $b >> Elatt.B.dat
p=`grep pressure OUTCAR | cut -b 25-34 | tail -1`
echo $a $p >> Platt.B.dat


cp OSZICAR OSZICAR.$xi
===Analyze data===


let xi+=1

done
</pre>
vasp.script
<pre>
#!/bin/bash
#PBS -N YSZ_Cube1_lc_lk
#PBS -j oe
#PBS -l nodes=1:ppn=8
#PBS -l walltime=96:00:00

### ------------------------------------
### BEGINNING of EXECUTION
### ------------------------------------

# Program options
PROG="/lustre/home/caiwei/group/caiwei/Codes/VASP/bin/vasp.mpotts.mva2"

# Define number of processors
NPROCS=`wc -l < $PBS_NODEFILE`

echo The master node of this job is `hostname`
echo The working directory is `echo $PBS_O_WORKDIR`
echo This job runs on the following nodes:
echo `cat $PBS_NODEFILE`

cd $PBS_O_WORKDIR

echo $PWD

./auto.B.par $NPROCS $PROG
</pre>

===Run VASP===
Submit job script, vasp.script on su-ahpcrc.
<pre>
> qsub vasp.script
</pre>

===Analyze data===
You will get two data files, <tt>Elatt.B.dat</tt> and <tt>Platt.B.dat</tt>. To analyze these data, use file [[media:fit_a0EB.m.txt | fit_a0EB.m]] and [[media:fit_a0B.m.txt | fit_a0B.m]] as previous cases. But please notice that you need to change n=N=11 in fit_a0EB.m.


By fit_a0Eb.m
<pre>
a0 = 5.304143 (A)
Ecoh = -9.216270 (eV)
B = 196.339137 (GPa)
</pre>


By fit_a0B.m
<pre>
a0 = 5.258448 (A)
B = 191.656390 (GPa)
</pre>
[[Image:fita0EB.jpg]] [[Image:fita0B.jpg]]


The lattice parameter shows a little discrepancy while the Bulk modulus shows enough agreement. If we increase the number of K-sampling points, the agreement will be improved. The supercell in this example is a unitcell of YSZ including two Y ions and one oxygen vacancy; this artificial structure is used for the purpose of example only.
===Parallel computation===

Latest revision as of 21:31, 19 February 2009

VASP: Computing Bulk Modulus of YSZ

Eunseok Lee


Input files

INCAR

SYSTEM = YSZ +VAC Calculation (neutral)
ISTART = 0
ISMEAR = 0
IBRION = 2
ALGO=Normal
LREAL= Auto
NPAR = 4
NSIM = 4
NSW    =     100

KPOINTS

Monkhorst-pack
0
Gamma         #gamma-centered
15 15 15
0.  0.  0.

Use POTCAR including Yttrium ion. POSCAR file is generated in script(vasp.script).

auto.B.par

!#/bin/bash

NPROCS=$1 
PROG=$2

xi=3

for a in 5.0 5.02 5.04 5.06 5.08 5.10 5.11 5.12 5.13 5.14 5.15 5.16 5.17 5.18 5.19 5.20 5.21 5.22 5.23 
5.25 5.27 5.29 5.31 5.33 5.35 5.37 5.40
do

rm POSCAR WAVECAR

cat > POSCAR << FIN
YSZ
 $a
 1.00   0.00    0.00
 0.00   1.00    0.00
 0.00   0.00    1.00
 2 2 7
Direct
0.0000  0.0000  0.0000   T       T       T
0.5000  0.0000  0.5000   T       T       T
0.5000  0.5000  0.0000   T       T       T
0.0000  0.5000  0.5000   T       T       T
0.2500  0.2500  0.2500   T       T       T
0.7500  0.2500  0.2500   T       T       T
0.2500  0.7500  0.2500   T       T       T
0.7500  0.7500  0.2500   T       T       T
0.2500  0.2500  0.7500   T       T       T
0.7500  0.2500  0.7500   T       T       T
0.2500  0.7500  0.7500   T       T       T

FIN

/opt/mpiexec/bin/mpiexec --comm=pmi -np $NPROCS $PROG >> vasp.log

b=`tail -1 OSZICAR | sed -s 's/F=//; s/E0=//; s/d E =//;'`
echo $a $b >> Elatt.B.dat
p=`grep pressure OUTCAR | cut -b 25-34 | tail -1`
echo $a $p >> Platt.B.dat 

cp OSZICAR OSZICAR.$xi

let xi+=1

done

vasp.script

#!/bin/bash
#PBS -N YSZ_Cube1_lc_lk
#PBS -j oe
#PBS -l nodes=1:ppn=8
#PBS -l walltime=96:00:00

### ------------------------------------
### BEGINNING of EXECUTION
### ------------------------------------

# Program options
PROG="/lustre/home/caiwei/group/caiwei/Codes/VASP/bin/vasp.mpotts.mva2"

# Define number of processors
NPROCS=`wc -l < $PBS_NODEFILE`

echo The master node of this job is `hostname`
echo The working directory is `echo $PBS_O_WORKDIR`
echo This job runs on the following nodes:
echo `cat $PBS_NODEFILE`

cd $PBS_O_WORKDIR

echo $PWD

./auto.B.par $NPROCS $PROG

Run VASP

Submit job script, vasp.script on su-ahpcrc.

> qsub vasp.script

Analyze data

You will get two data files, Elatt.B.dat and Platt.B.dat. To analyze these data, use file fit_a0EB.m and fit_a0B.m as previous cases. But please notice that you need to change n=N=11 in fit_a0EB.m.

By fit_a0Eb.m

a0   = 5.304143 (A)
Ecoh = -9.216270 (eV)
B    = 196.339137 (GPa)

By fit_a0B.m

a0   = 5.258448 (A)
B    = 191.656390 (GPa)

Fita0EB.jpg Fita0B.jpg

The lattice parameter shows a little discrepancy while the Bulk modulus shows enough agreement. If we increase the number of K-sampling points, the agreement will be improved. The supercell in this example is a unitcell of YSZ including two Y ions and one oxygen vacancy; this artificial structure is used for the purpose of example only.