Tutorial 1
The Workhorse: Kohn-Sham DFT
5 electrons on a 10×10×10 grid ~ 10 PetaBytes
→ Approximations: LDA, PBE, …
An N-electron system: N~10 23
● Hohenberg-Kohn-Sham DFT takes us a long way
(#grid points)N N×(#grid points)
● Nice for atoms and molecules, but in a realistic piece of solid state
material we have O(1023) electrons!
Translational invariance:
Periodic Boundary Conditions
● Translational invariance implies
and
● All states can be labelled by k and n.
k is the Bloch wavevector, and is usually constrained to lie within the first
Brillouin zone of the reciprocal space lattice.
n is the band index. The number of bands at each k is of order of the
number of electrons per unit cell.
Reciprocal space & the Brillouin Zone
Why use a plane wave basis set
The plane wave basis set
The charge density
The action of the Hamiltonian
I. The INCAR file
II. The POSCAR file
III. The KPOINTS file
IV. The POTCAR file
Output files
Output files
Documentation
● The VASP manual (http://cms.mpi.univie.ac.at/vasp/vasp/vasp.html)
Index: http://cms.mpi.univie.ac.at/vasp/vasp/Index.html
● The VASP wiki (http://cms.mpi.univie.ac.at/wiki/index.php/Main_page)
INCAR-tags: http://cms.mpi.univie.ac.at/wiki/index.php/Category:INCAR
Getting started
Assuming you are logged on to “nano.bnl.gov” or “nano2.bnl.gov”!
After logon you'll find yourself in your home directory. To find our where that might be,
type:
$ pwd (omitting the “$”-sign)
and you'll get something like
/home3/mmarsman (obviously yours will be different)
Now change to your workspace:
$ cd /work/yourusername
and copy the files of the first tutorial to your workspace
$ cp r /software/Workshop14/Tutorials/Tutorial1 .
end enter the Tutorial1 subdirectory:
$ cd Tutorial1
To get a list of the examples in Tutorial1, type:
$ ls
and you should see something like:
1_10_H2Omd 1_5_CO 2_1_fccSi 2_6_diamondSi_rel
1_1_O_atom 1_6_COvib 2_2_fccSi_dos 2_7_fccNi
1_2_O_atomspin 1_7_COstates 2_3_fccSi_band
1_3_O_atomspinlowsym 1_8_H2O 2_4_diamondSi
1_4_Odimer 1_9_H2Ovib 2_5_diamondSi_volrel
Now change into the directory of the first example:
$ cd 1_1_Oatom
Another “ls” will list the files that come with the first example:
cleanup INCAR job KPOINTS POSCAR POTCAR
The files INCAR, KPOINTS, POSCAR, and POTCAR, are input files for VASP.
“cleanup” is a script that you can invoke to remove all output files generated by VASP
(by typing: $ ./cleanup )
The “job”-file is what you need to run the example on the computer-cluster.
Before you submit your job, you will need to make a small change in this file!
Type:
$ vi job (for those of you who know vi)
or
$ nedit job & (for those who don't know vi, or don't want to use it)
or copy the files to your laptop, edit them there, and copy them back again ...
N.B.: As of here, lines starting with “#” are interpreted as comments!
#!/bin/sh
#PBS l nodes=1:ppn=4,walltime=10:00
#PBS N Oatom
#PBS j oe
#PBS V
# Workshop participants should use qsub q cfn_workshop <script>
# note the explicit specification of hardware for operation over two nodes with 8 cores per node
# for smaller jobs, request smaller resources
# for example, to run a serial job, above would read nodes=1:ppn=1
# access to the mvapich mpirun tools
# these lines can go into a resource file for automatic run at login
module load intel/11.1
module load mvapich2/1.5rc1intel
VASPDIR=/software/Workshop14/bin
# specify the path to the directory where the job should run
WORKDIR=/work/mmarsman/1_1_O_atom
# WORKDIR=<YOUR WORK DIRECTORY>
# Count number of nodes from PBS_NODEFILE
NODECOUNT=`sort u $PBS_NODEFILE | wc l`
# Count number of processors
PROCCOUNT=`cat $PBS_NODEFILE | wc l`
# execute Vasp
cd $WORKDIR
cat $PBS_NODEFILE > nodefile.out
mpirun_rsh ssh hostfile nodefile.out n $PROCCOUNT $VASPDIR/vaspPG >> STDOUT
Everything in this file is good-to-go, except for “WORKDIR”. You will have to specify your working
directory here, instead of mine. In this case, this would be something like:
WORKDIR=/work/yourusername/Tutorial1/1_1_Oatom
Make the appropriate changes and save and close the file.
You are now ready to submit this job to the “cfn_workshop”-queue of the cluster:
$ qsub q cfn_workshop job
(This queue has been specifically set aside for this workshop, so please do not forget
the“-q cfn_workshop” option when you submit your jobs)
To check on the status of your job, type:
$ qstat u yourusername
which should come back with something like:
nano.cfn.bnl.local:
Req'd Req'd Elap
Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time
2129734.nano.cfn mmarsman cfn_work Oatom 1 4 00:10:00 Q
where “Q” means it is waiting in the the queue, “R” means running, and “C” it's finished.
If you decide you want to remove your job from the queue, type:
$ qdel jobid# (in this case it would be: $ qdel 2129734)
When your job is finished you may look at the (human-readable) results using “vi”, “nedit”, or
copy the relevant output files to your laptop and use whatever editor you like.
N.B.: For those of you who want to look at the VASP output on their own laptops,
please copy OUTCAR and vasprun.xml (for p4vasp), and if available PROCAR
to your laptop.
To take a quick look at (small) files you may type:
$ cat filename
which dumps the contents of the file onto your screen (therfore useless for large files), or
$ less filename
which allows you to scroll down the file pressing the <space-bar>, and up (down) using the
<up-arrow> and <page-up> (<down-arrow> and <page-down>) keys.
Especially “less” might be more convenient than constantly copying stuff to your laptop!
Other commands you'll probably need are:
$ cd ..
to move “up” one level in your directory tree, and
$ cp source destination
to copy the file “source” to “destination. For instance “$ cp OUTCAR ../OUTCAR.bck”,
which copies the OUTCAR file in your current directory to OUTCAR.bck one-level up in your
directory-tree.
Similarly you may move files by
$ mv source destination
or remove a file by
$ rm filename
N.B.: there is no undo!
Another very useful command is “grep” (when you know what you're looking for).
After your first run is finished, and you have an OUTCAR try:
$ grep “e e” OUTCAR (beware there are 2 spaces in-between the e's)
and
$ grep “y w” OUTCAR (again 2 spaces)
or try for instance:
$ grep "Efermi" OUTCAR
Most unix commands come with an online description, a socalled man-page.
If you're interested, type:
$ man grep
and scroll through the description as you would with “less”.
Important:
If you need to run p4vasp from nano.bnl.gov or nano2.bnl.gov (the head-nodes) then
you'll need to export the graphics environment when you establish the ssh-connection, by
means of the “X”-option:
$ ssh X [email protected]
followed by
Additionally you'll have to load some p4vasp specific settings on the head-nodes by:
$ module load p4vasp
After all this you should be able to invoke p4vasp, typing:
$ p4v
Atoms and molecules
Examples:
● O atom
● O dimer
2
● CO
● H O
2
Tasks:
● Relaxation
● Vibrational frequencies
● MD
The O atom (Example: 1_1_O_atom)
The O atom (Example: 1_1_O_atom)
The O atom (Example: 1_1_O_atom)
The O atom (Example: 1_1_O_atom)
The O atom (Example: 1_1_O_atom)
The O atom
The O atom (Example: 1_1_O_atom)
The O atom (Example: 1_1_O_atom)
The O atom (Example: 1_1_O_atom)
The O atom (Example: 1_1_O_atom)
The O atom (Example: 1_2_O_atomspin)
The O atom (Example: 1_2_O_atomspin)
The O atom (Example: 1_3_O_atomspinlowsym)
The O2 dimer (Example: 1_4_Odimer)
The O2 dimer (Example: 1_4_Odimer)
The O2 dimer (Example: 1_4_Odimer)
The O2 dimer (Example: 1_4_Odimer)
The CO molecule (Example: 1_5_CO)
The CO molecule (Example: 1_5_CO)
Vibrational frequencies of CO (Example: 1_6_COvib)
Vibrational frequencies of CO (Example: 1_6_COvib)
Eigenstates of CO (Example: 1_7_COstates)
Eigenstates of CO (Example: 1_7_COstates)
Step 2.) select atoms: “all”, “C”, “O”, “1”, “2”, ...
Start p4vasp:
> p4v [vasprun.xml]
Step 1.) go to:
Electronic/Local DOS+bands control
Step 3.) select orbital character
Step 4.) and “add new line”
The H2O molecule (Example: 1_8_H2O)
The H2O molecule (Relaxation: 1_8_H2O, Vibrations: 1_9_H2Ovib)
MD with the H2O molecule (Example: 1_10_H2O)
MD with the H2O molecule (Example: 1_10_H2O)
Start p4vasp: Step 1.) go to: Convergence/Energy
> p4v [vasprun.xml]
Step 2.) update graph
Further things to try
Bulk systems
Examples:
● fcc Si
● fcc Ni
Tasks:
● Equilibrium volume & structure
● Density-of-states (DOS)
● Bandstructure
Equilibrium volume of fcc Si (Example: 2_1_fccSi)
Equilibrium volume of fcc Si (Example: 2_1_fccSi)
Equilibrium volume of fcc Si (Example: 2_1_fccSi)
Automated volume scan (by means of a shell script):
Equilibrium volume of fcc Si (Example: 2_1_fccSi)
Equilibrium volume of fcc Si (Example: 2_1_fccSi)
A quick look at the results? (see README)
>gnuplot
gnuplot> plot "SUMMARY.fcc" using ($1):($4) w lp “kill the window with”
gnuplot> exit
Density-of-states of fcc Si (Example: 2_2_fccSi_dos)
Density-of-states of fcc Si (Example: 2_2_fccSi_dos)
N.B. To copy the self-consistent charge density of example 2_1_fccSi to your current working
directory (assumed to be 2_2_fccSi_dos), type: $ cp ../2_1_fccSi/CHGCAR .
You must do this otherwise VASP can not read the CHGCAR and will terminate
Density-of-states of fcc Si (Example: 2_2_fccSi_dos)
Start p4vasp: Go to: Electronic/DOS+bands
> p4v [vasprun.xml]
Density-of-states of fcc Si (Example: 2_2_fccSi_dos)
Or use gnuplot for a quick look:
>./plotdos
Bandstructure of fcc Si (Example: 2_3_fccSi_band)
N.B. To copy the self-consistent charge density of example 2_1_fccSi to your current working
directory (assumed to be 2_2_fccSi_band), type: $ cp ../2_1_fccSi/CHGCAR .
You must do this otherwise VASP can not read the CHGCAR and will terminate
Bandstructure of fcc Si (Example: 2_3_fccSi_band)
Step 1.) Go to: Electronic/DOS+bands
Start p4vasp:
> p4v [vasprun.xml]
Step 2.) Go to: Show/Bands
Equilibrium volume of cd Si (Example: 2_4_diamondSi)
To Do:
1.) Determine equilibrium lattice constant / volume
2.) Calculate DOS (at groundstate volume)
3.) Compute bandstructure (at groundstate volume)
Job scripts:
1.) loop.job
2.) dos.job
3.) band.job
Visualisation: as in examples 2_1_fccSi, 2_2_fccSi_dos, and 2_3_fccSi_band
N.B.; have a look at README, and take a look at what the script do!
Equilibrium volume of cd Si (Example: 2_4_diamondSi)
Equilibrium volume of cd Si (Example: 2_4_diamondSi)
“Fat” bands (Example: 2_4_diamondSi)
Start p4vasp: Step 1.) go to:
> p4v [vasprun.xml] Electronic/Local DOS+bands control
Step 2.) Go to: Show/Bands
Step 3.) select atoms: “all”, “Si”, “1”, “2”, ...
Step 4.) adjust symbol size
Step 5.) select orbital character
Step 6.) and “add new line”
Volume relaxation of cd Si (Example: 2_5_diamondSi_volrel)
To determine the equilibrium volume we can:
Alternatively, we will now try:
Volume relaxation of cd Si (Example: 2_5_diamondSi_volrel)
Volume relaxation of cd Si (Example: 2_5_diamondSi_volrel)
Ionic relaxation in cd Si (Example: 2_6_diamondSi_rel)
Ionic relaxation in cd Si (Example: 2_6_diamondSi_rel)
General comments
fcc Ni (Example: 2_7_fccNi)
General setup:
fcc Ni (Example: 2_7_fccNi)
To Do:
1.) Determine equilibrium lattice constant / volume
2.) Calculate DOS (at groundstate volume)
3.) Compute bandstructure (at groundstate volume)
Job scripts:
1.) loop.job
2.) dos.job
3.) band.job
Visualisation: as in examples 2_1_fccSi, 2_2_fccSi_dos, and 2_3_fccSi_band
But beware there are separate spin-up and spin-down states!
N.B.; have a look at README, and take a look at what the script do!
fcc Ni (Example: 2_7_fccNi)