VASP Computing Bulk Modulus of YSZ: Difference between revisions
(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)
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.

