0% found this document useful (0 votes)
170 views

Tutorial Postproc

This document provides a hands-on tutorial for post-processing calculations using the Quantum ESPRESSO package, including tutorials for calculating the density of states, projected density of states, charge density, and STM image simulations of various materials like bulk Ni and Si. The tutorials demonstrate how to run SCF and non-SCF calculations to obtain electronic structure data and then post-process that data to produce useful outputs like the DOS, PDOS, charge density plots, and simulated STM images.

Uploaded by

Antonio Rojas
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
170 views

Tutorial Postproc

This document provides a hands-on tutorial for post-processing calculations using the Quantum ESPRESSO package, including tutorials for calculating the density of states, projected density of states, charge density, and STM image simulations of various materials like bulk Ni and Si. The tutorials demonstrate how to run SCF and non-SCF calculations to obtain electronic structure data and then post-process that data to produce useful outputs like the DOS, PDOS, charge density plots, and simulated STM images.

Uploaded by

Antonio Rojas
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 30

HANDS-ON TUTORIAL ON THE

QUANTUM-ESPRESSO PACKAGE
Cagliari September 2005
Guido Fratesi and Stefano Fabris
POST PROCESSING OF DATA:

Density of states: DOS and PDOS

Charge density and bonding charge

STM image simulation


Getting started

Move to your own scratch directory:


cd /scratch/XXX/

Download this tutorial and the examples from:


http://[ESPRESSO-TUTORIAL-SITE]/
tutorial_postproc.pdf
http://[ESPRESSO-TUTORIAL-SITE]/
examples_postproc.tgz

Untar the example file and enter in the resulting directory:


tar zxvf examples_postproc.tgz
cd PostProcessing

Edit the environment_variables file:


e.g., TMP_DIR=/scratch/XXX/tmp/

Create the output directory as specified above:


mkdir /scratch/XXX/tmp/
Exercise 1: DOS of bulk Ni

Run the scf calculation for bulk Ni


run-ni.scf

What happens? Why does the program stop? See the output file:
more ni.scf.out

Add the required input


starting_magnetization(1)=0.0
run again the simulation. Copy the output file:
cp ni.scf.out ni.scf.out-0magn

Modify the starting magnetization in run-ni.scf


starting_magnetization(1)=0.7
run again the simulation.
run-ni.scf

Compare the total energies of the two simulations: do they


differ? Why? What about the magnetization?
Exercise 1: DOS

Edit the file run-ni.nscf:


increase the number of bands to 8: nbnd=8
and the set a denser k-point mesh: 12 12 12 0 0 0
Run the nscf calculation for bulk Ni: run-ni.nscf

Have a look at the input file for the DOS calculation:


more run-ni.dos
&inputpp
outdir=$TMP/DIR'
prefix='ni'
fildos='ni.dos'
Emin=5.0, Emax=25.0, DeltaE=0.1
/
and run the DOS calculation:
run-ni.dos
in eV!
Exercise 1: DOS
# E (eV) dosup(E) dosdw(E) Int dos(E)
5.000 -0.3790E-05 -0.2225E-05 -0.6015E-06
5.100 -0.1772E-04 -0.1149E-04 -0.3523E-05
5.200 -0.5902E-04 -0.4251E-04 -0.1368E-04
5.300 -0.1373E-03 -0.1105E-03 -0.3846E-04
5.400 -0.2211E-03 -0.1989E-03 -0.8046E-04
5.500 -0.2479E-03 -0.2498E-03 -0.1302E-03
5.600 -0.8376E-04 -0.1768E-03 -0.1563E-03
5.700 0.1017E-02 0.4889E-03 -0.5688E-05

Have a look at the output file containing the DOS: ni.dos


more ni.dos
Exercise 1: DOS

Plot the total density of states: gnuplot dos.gnu


Exercise 1: DOS

Plot the total density of states: gnuplot dos.gnu

Note difference between spin up and spin down components.

Plot the integrated charge


Exercise 1: DOS

Plot the integrated charge


Exercise 1: DOS

More input variables:


&inputpp
outdir=$TMP/DIR'
prefix='ni
ngauss= 0,1,-1,99
degauss= xx
fildos='ni.dos'
Emin=5.0, Emax=25.0, DeltaE=0.1
/
in eV!
in Ry!
Exercise 2: PDOS of bulk Ni

Have a look at the input file for the PDOS calculation:


more run-pdos.in
&inputpp
outdir=$TMP_DIR/'
prefix='ni'
io_choice='both
Emin=5.0, Emax=25.0, DeltaE=0.1
ngauss=1, degauss=0.02
/
and run the PDOS calculation (projwfc.x):
run-ni.pdos
Exercise 2: PDOS

Have a look at the output file ni.pdos.out:


more ni.pdos.out

Lowdin Charges:


Atom # 1: total charge = 9.881
spin up = 5.239
spin down = 4.6426
polarization = 0.5965
Spilling Parameter: 0.0118
Exercise 2: PDOS

Have a look at the output files containing the s and d


components of the PDOS:
more ni.pdos_atm#1(Ni)_wfc#1(s)
more ni.pdos_atm#1(Ni)_wfc#2(d)
# E (eV) ldosup(E) ldosdw(E) pdosup(E) pdosdw(E)
5.000 -0.378E-05 -0.222E-05 -0.378E-05 -0.222E-05
5.100 -0.177E-04 -0.115E-04 -0.177E-04 -0.115E-04
5.200 -0.589E-04 -0.425E-04 -0.589E-04 -0.425E-04
5.300 -0.137E-03 -0.110E-03 -0.137E-03 -0.110E-03
5.400 -0.221E-03 -0.199E-03 -0.221E-03 -0.199E-03
5.500 -0.247E-03 -0.249E-03 -0.247E-03 -0.249E-03
5.600 -0.831E-04 -0.176E-03 -0.831E-04 -0.176E-03
5.700 0.102E-02 0.489E-03 0.102E-02 0.489E-03
5.800 0.491E-02 0.331E-02 0.491E-02 0.331E-02
5.900 0.126E-01 0.996E-02 0.126E-01 0.996E-02
Exercise 2: PDOS

Plot the s and d components of the DOS: gnuplot


dos.gnu
Exercise 3: Charge density of Si

Run the scf calculation for bulk Si:


run-si.scf

Modify the input file for the post processing run-si.pp for
calculating the total charge density. First modify the inputpp
namelist:
&inputpp
prefix = 'si'
outdir = '/tmp/',
filplot = 'si.charge'
plot_num= XXX
/
see espresso/Docs/INPUT_PP for the value of plot_num
corresponding to the charge density.
Exercise 3: Charge density of Si

Then modify the plot namelist to convert data in a format


compatible with the selected visualization packages (plotrho,
gnuplot, XCrysDen... Now use plotrho):
vi run-si.pp
&plot
nfile=1
filepp(1)='si.charge'
iflag=XXX
output_format=XXX
e1(1)=1.0, e1(2)=0.0, e1(3)=0.0,
e2(1)=0.0, e2(2)=1.0, e2(3)=0.0,
x0(1)=0.0, x0(2)=0.0, x0(3)=0.0,
nx=40, ny=40
fileout='si.charge001.dat'
/

Run the calculation: run-si.pp


2D plot
plotrho format
001 plane
Exercise 3: Charge density of Si

Then modify the plot namelist to convert data in a format


compatible with the selected visualization packages (plotrho,
gnuplot, XCrysDen... Now use plotrho):
vi run-si.pp
&plot
nfile=1
filepp(1)='si.charge'
iflag=2
output_format=2
e1(1)=1.0, e1(2)=0.0, e1(3)=0.0,
e2(1)=0.0, e2(2)=1.0, e2(3)=0.0,
x0(1)=0.0, x0(2)=0.0, x0(3)=0.0,
nx=40, ny=40
fileout='si.charge001.dat'
/

Run the calculation: run-si.pp


2D plot
plotrho format
001 plane
Exercise 3: Charge density of Si

Visualize the charge on the (001) plane by using the program


plotrho.x (included in espresso):
run-si.plot
input file > si.charge001.dat
output file > si.charge001.ps
Logarithmic scale (y/n)? > n
min, max, # of levels > 0.01 0.08 8
gv si.charge001.ps
Exercise 3: Charge density of Si
Calculate and plot the charge density of Si on the (110) plane:

cp run-si.pp to run-si.pp110

Modify the input file so that to define the (110) plane


e1(1)=?, e1(2)=?, e1(3)=?,
e2(1)=?, e2(2)=?, e2(3)=?,

fileout='si.charge110.dat'

Run the pp.x calculation: run-si.pp110


Run the plotrho.x program and visualize the result: run-si.plot
Exercise 4: Bonding charge density
Bonding charge density of an O atom on the Al (001) surface

Run the following script: run-Al-O-OAl-scf-pp &


It follows the step seen in Ex 3 to calculate the charge densities of:
1) an O atom adsorbed on an Al(001) slab,
2) an Al(001) slab,
3) an O atom.

Compare the atomic coordinates


of the O atom in the file
O.scf.out with those in
OAl.scf.out. What do you
notice? Why are they so?
Exercise 4: Bonding charge density

Use the program chdens.x to subtract the charge densities of the Al


(001) slab and of the O atom from the that one of the complete
system O/Al(001): (file: run-OAl.chdiff)
&input
nfile=3
filepp(1)='???', weight(1)=???
filepp(2)='???', weight(2)=???
filepp(3)='???', weight(3)=???
iflag=??
output_format=??
fileout='OAl.chdensDIFF.xsf'
/

Run the calculation: run-chdens.diff


The first file is
the one for the
O/Al(001) system
XCrySDen
3D
Exercise 4: Bonding charge density

Visualizing the output file with XCrysDen:


xcrysden --xsf OAl.chdensDIFF.xsf
Hint: see the isosurfaces by selecting: tools - datagrid - ok
- isovalue=0.003 - render+/-isovalue - submit
Exercise 5: STM simulation
Simulating the STM image of the AlAs (110) surface

Run the scf calculation for the AlAs (110) surface


run-AlAs.scf

Run the non scf calculation for the AlAs (110) surface:
run-AlAs.nscf
Exercise 5: STM simulation

Set up the input file for the post processing; inputpp namelist
(see run-AlAs.stm):
&inputpp
prefix = 'AlAs110'
outdir='$TMP_DIR/',
filplot = 'AlAs-1.0'
sample_bias=-0.0735d0,
stm_wfc_matching=.false.,
plot_num= XXX
/
see O-sesame/pwdocs/INPUT_PP

How to choose the sample_bias?


in Ry!
Exercise 5: STM simulation

How to choose the sample_bias? What is the DOS?


Fermi energy

Exercise: image empty states


Exercise 5: STM simulation

Set plot namelist to produce a 3D file comptatible with the


XCrySDen package:
vi run-AlAs.stm
...
&plot
nfile=1
filepp(1)='AlAs-1.0'
weight(1)=1.0
iflag=3
output_format=5
fileout='AlAs110-1.0.xsf'
/
3D plot
XCrysDen format
Exercise 5: STM simulation

Run the post-processing simulation:


run-AlAs.stm

Visualize the output file with the XCrysDen package:


xcrysden xsf AlAs110-1.0.xsf

from SCF calculation of Si bulk to visualization of its charge


density with xcrysden. Use pwgui to construct
appropriate input files and run the necessary calculations:

SCF calculation: use pw.x program

post-processing: use pp.x program (select the charge-


density, and transform the charge-density to XSF format,
suitable for xcrysden)

visualize the calculated charge density stored in file.xsf


with xcrysden
Exercise 6: Si charge (using PWgui)
Input for pw.x: SCF calculation
Input for pp.x: extract the charge density
Input for pp.x: generate file for XCrySDen

You might also like