From Surface Models to Reaction Mechanisms
Author: Dr. Nabil Khossossi Duration: ~13 hours Level: Graduate / Advanced Website: sustai-nabil.com/teaching
This tutorial provides a comprehensive, hands-on introduction to density functional theory (DFT) calculations for heterogeneous catalysis using VASP. Following pedagogical principles from MIT, Stanford, and leading computational catalysis groups, this course bridges theory and practice through real-world examples.
- Problem-driven learning: Each module starts with a research question
- Authentic datasets: Real catalyst surfaces (Pt, NiFe alloys, TM oxides)
- Code-first pedagogy: Every concept paired with working Python/ASE scripts
- Multi-code support: Primary focus on VASP, with references to GPAW, Quantum ESPRESSO
Before starting this tutorial, you should complete:
- Tutorial 01: Introduction to ASE and DFT
- Tutorial 02: Python for Materials Science
- Tutorial 03: Crystal Structures & Symmetry
Additionally, you need:
- Access to VASP (license required) or alternative DFT code
- Basic quantum mechanics and solid-state physics background
- Python programming experience
| Module | Topic | Duration | Key Concepts |
|---|---|---|---|
| 1 | VASP Input Files Mastery | 1.5h | INCAR, POSCAR, KPOINTS, POTCAR |
| 2 | Surface Slab Models | 2h | Miller indices, vacuum, convergence |
| 3 | Adsorption & Binding Sites | 2h | Site enumeration, adsorption energies |
| 4 | Spin-Polarized DFT | 1h | ISPIN, MAGMOM, magnetic ordering |
| 5 | DFT+U for Transition Metals | 1.5h | Hubbard U, strongly correlated systems |
| 6 | Transition States & Barriers | 2.5h | NEB, CI-NEB, Dimer method |
| 7 | Computational Hydrogen Electrode | 1.5h | HER/OER, free energy diagrams |
| 8 | Best Practices & Workflows | 1h | Convergence, HPC, reproducibility |
git clone https://github.com/nkhossossi/Tutorial-04-VASP-Catalysis.git
cd Tutorial-04-VASP-Catalysisconda env create -f environment.yml
conda activate vasp-catalysispython -c "import ase; import pymatgen; print('Ready!')"jupyter lab- Pt(111) + CO oxidation - Classic benchmark system
- NiFe alloy for HER - Earth-abundant electrocatalyst
- Transition metal oxides - Battery-relevant, DFT+U required
from ase.build import fcc111, add_adsorbate
from ase.calculators.vasp import Vasp
# Create Pt(111) with CO
slab = fcc111('Pt', size=(3,3,4), vacuum=15)
add_adsorbate(slab, 'CO', height=1.85, position='ontop')
# Setup VASP calculator
calc = Vasp(
encut=450,
kpts=(4,4,1),
xc='PBE',
ismear=1,
sigma=0.1,
ldipol=True,
idipol=3
)
slab.calc = calc
energy = slab.get_potential_energy()While this tutorial focuses on VASP, we provide guidance for:
| Code | License | Notebooks |
|---|---|---|
| GPAW | Open Source | 01_input_files/alternatives/gpaw_script.py |
| Quantum ESPRESSO | Open Source | 01_input_files/alternatives/quantum_espresso.md |
| AIMD | Various | Module 6 extensions |
| Gaussian/Schrödinger | Commercial | Cluster calculations |
- Tutorial 01: Introduction to ASE and DFT
- Tutorial 02: Python for Materials Science
- Tutorial 03: Crystal Structures & Symmetry
- Issues/Questions: Open an issue on GitHub
- Documentation: sustai-nabil.com/teaching
- Contact: See website for contact information
This work is licensed under CC BY-NC-SA 4.0.
You are free to:
- Share — copy and redistribute the material
- Adapt — remix, transform, and build upon the material
Under the following terms:
- Attribution — Give appropriate credit
- NonCommercial — Not for commercial purposes
- ShareAlike — Same license for derivatives
Happy Computing!
Dr. Nabil Khossossi