Run Quantum ESPRESSO DFT calculations. Use when asked to perform first-principles calculations, SCF, structural relaxation, band structure, DOS, phonons, or any ab initio quantum mechanical calculation.
Install
npx skillscat add fl-sean03/agentic-science-worker/quantum-espresso Install via the SkillsCat registry.
Quantum ESPRESSO DFT Calculations
You are executing Quantum ESPRESSO density functional theory calculations.
CRITICAL: Pseudopotentials Are NOT Pre-Installed
You must find and download pseudopotentials yourself.
Pseudopotentials are NOT stored locally. You need to:
- Determine what elements and functional you need
- Find appropriate pseudopotentials online
- Download them to your workspace
- Reference them in your input file
How to Acquire Pseudopotentials
Step 1: Determine requirements
Element(s): Si, O, Li, etc.
Functional: PBE (most common), LDA, PBEsol
Type: NC (norm-conserving), US (ultrasoft), PAW (projector augmented wave)Step 2: Find pseudopotentials online
| Source | URL | Best For |
|---|---|---|
| SSSP | https://www.materialscloud.org/discover/sssp/table/efficiency | Production - curated, tested |
| PseudoDojo | http://www.pseudo-dojo.org/ | High accuracy |
| QE Library | https://www.quantum-espresso.org/pseudopotentials | Quick access |
| Materials Cloud | https://www.materialscloud.org/ | Various libraries |
Step 3: Download the files
Use WebFetch or Playwright:
Search for: "silicon PBE pseudopotential SSSP download"
Navigate to SSSP table, find Si row, download .UPF fileExample file names:
Si.pbe-n-rrkjus_psl.1.0.0.UPF(PBE, ultrasoft)Si.pz-vbc.UPF(LDA, norm-conserving)O.pbe-n-kjpaw_psl.1.0.0.UPF(PBE, PAW)
Step 4: Save to workspace
workspaces/your-project/pseudo/Si.pbe-n-rrkjus_psl.1.0.0.UPFStep 5: Note recommended cutoffs
SSSP provides recommended cutoffs. If not available:
- NC: ecutwfc ~40-80 Ry, ecutrho = 4 × ecutwfc
- US: ecutwfc ~30-50 Ry, ecutrho = 8-12 × ecutwfc
- PAW: ecutwfc ~40-60 Ry, ecutrho = 8-12 × ecutwfc
Step 6: Reference in input
&CONTROL
pseudo_dir = './pseudo'
/
ATOMIC_SPECIES
Si 28.0855 Si.pbe-n-rrkjus_psl.1.0.0.UPFComplete Agentic Workflow
Example: Silicon Band Structure
Given only: "Calculate the band structure of silicon"
You do:
Get crystal structure
# From Materials Project from mp_api.client import MPRester import os with MPRester(os.environ.get("MP_API_KEY")) as mpr: si = mpr.get_structure_by_material_id("mp-149") # Note: a = 5.431 Å, diamond structure, Fd-3mFind and download pseudopotential
- Search: "silicon PBE pseudopotential SSSP"
- Navigate to SSSP table
- Download Si.pbe-n-rrkjus_psl.1.0.0.UPF
- Note: recommended ecutwfc = 30 Ry
Create SCF input
&CONTROL calculation = 'scf' prefix = 'si' outdir = './tmp' pseudo_dir = './pseudo' / &SYSTEM ibrav = 2 ! FCC celldm(1) = 10.26 ! a in Bohr (5.43 Å) nat = 2 ntyp = 1 ecutwfc = 40.0 ! From SSSP recommendation ecutrho = 320.0 ! 8x for US pseudo / &ELECTRONS conv_thr = 1.0d-8 / ATOMIC_SPECIES Si 28.0855 Si.pbe-n-rrkjus_psl.1.0.0.UPF ATOMIC_POSITIONS crystal Si 0.00 0.00 0.00 Si 0.25 0.25 0.25 K_POINTS automatic 8 8 8 0 0 0Run SCF
/path/to/pw.x < scf.in > scf.outCreate bands input
&CONTROL calculation = 'bands' prefix = 'si' outdir = './tmp' pseudo_dir = './pseudo' / ... K_POINTS crystal_b 5 0.5 0.5 0.5 20 ! L 0.0 0.0 0.0 20 ! Gamma 0.5 0.0 0.5 20 ! X 0.5 0.25 0.75 20 ! W 0.5 0.5 0.5 1 ! LRun bands and post-process
pw.x < bands.in > bands.out bands.x < bands_pp.in > bands_pp.outAnalyze
- Extract band gap from output
- Si has indirect gap ~0.5 eV (LDA underestimates, exp ~1.1 eV)
Binary Locations
Local GPU-accelerated QE (RTX 5080):
# GPU Build (NVHPC-compiled, sm_120)
QE_GPU="/home/sf2/Workspace/main/39-GPUTests/1-GPUTests/dft-qe/build-gpu/bin"
# CPU Build (GCC/MPI)
QE_CPU="/home/sf2/Workspace/main/39-GPUTests/1-GPUTests/dft-qe/build-cpu/bin"
# Environment setup for GPU build
QE_ENV="/home/sf2/Workspace/main/39-GPUTests/1-GPUTests/dft-qe/env/setup_nvhpc.sh"Execution
CPU (general purpose):
/home/sf2/Workspace/main/39-GPUTests/1-GPUTests/dft-qe/build-cpu/bin/pw.x < input.in > output.out
# With MPI
mpirun -np 4 /home/sf2/Workspace/main/39-GPUTests/1-GPUTests/dft-qe/build-cpu/bin/pw.x < input.in > output.outGPU (RTX 5080 accelerated - recommended for production):
# First source NVHPC environment
source /home/sf2/Workspace/main/39-GPUTests/1-GPUTests/dft-qe/env/setup_nvhpc.sh
# Run GPU-accelerated QE
/home/sf2/Workspace/main/39-GPUTests/1-GPUTests/dft-qe/build-gpu/bin/pw.x < input.in > output.out
# Or with wrapper variables
$QE_GPU/pw.x < input.in > output.outTest scripts available:
bash /home/sf2/Workspace/main/39-GPUTests/1-GPUTests/dft-qe/scripts/run_example01_cpu.sh
bash /home/sf2/Workspace/main/39-GPUTests/1-GPUTests/dft-qe/scripts/run_example01_gpu.shCalculation Types
| Type | Use For |
|---|---|
scf |
Ground state energy, charge density |
relax |
Optimize atomic positions |
vc-relax |
Optimize cell + positions |
bands |
Band structure (after SCF) |
nscf |
DOS, more k-points (after SCF) |
Crystal Structure Input
Common ibrav Values
| ibrav | Lattice | Example |
|---|---|---|
| 1 | Simple cubic | Po |
| 2 | FCC | Si, Cu, Al |
| 3 | BCC | Fe, W, Na |
| 4 | Hexagonal | Graphite, Ti |
| 0 | General (provide CELL_PARAMETERS) | Any |
From Materials Project or CIF
If you get a structure from Materials Project or a CIF file:
ibrav = 0 ! General cell
CELL_PARAMETERS angstrom
5.431 0.000 0.000
0.000 5.431 0.000
0.000 0.000 5.431
ATOMIC_POSITIONS angstrom
Si 0.000 0.000 0.000
Si 1.358 1.358 1.358
...Cutoff Selection
Always check pseudopotential recommendations.
If not available, use these guidelines:
| Pseudo Type | ecutwfc | ecutrho |
|---|---|---|
| Norm-conserving (NC) | 60-80 Ry | 4 × ecutwfc |
| Ultrasoft (US) | 30-50 Ry | 8-12 × ecutwfc |
| PAW | 40-60 Ry | 8-12 × ecutwfc |
Test convergence for production calculations.
K-point Selection
| System | K-grid |
|---|---|
| Metals | Dense: 12×12×12 or more |
| Semiconductors | Medium: 6×6×6 to 8×8×8 |
| Insulators | Coarse: 4×4×4 often sufficient |
| Molecules/surfaces | Gamma only or few k-points |
For band structure, use crystal_b with high-symmetry path.
Output Parsing
# Total energy
grep "!" output.out
# Forces
grep -A 20 "Forces acting" output.out
# Fermi energy
grep "Fermi" output.out
# Band gap (for insulators)
grep "highest occupied" output.outCommon Issues
"Error reading pseudo file"
- Check pseudo_dir path
- Verify file was downloaded correctly
- Check filename matches ATOMIC_SPECIES
Convergence failure
- Reduce mixing_beta to 0.3-0.5
- Increase ecutwfc
- Check structure for overlapping atoms
Memory issues
- Reduce k-points
- Use disk_io = 'low'
Negative frequencies in phonons
- Structure not fully relaxed
- Reduce forc_conv_thr and re-relax
Key Principle
Never assume pseudopotentials exist locally.
Every QE calculation requires you to:
- Identify the elements
- Choose appropriate functional
- Find and download pseudopotentials
- Note recommended cutoffs
- Reference correctly in input
If a pseudopotential doesn't exist for your element/functional combination, that's important information to report.
Example: Formation Energy Calculation
Task: Calculate formation energy of NaCl
Complete workflow:
Get structure
# From Materials Project mp-22862 → NaCl rock salt structureDownload pseudopotentials
Na.pbe-spn-kjpaw_psl.1.0.0.UPF (ecutwfc=66 Ry) Cl.pbe-n-rrkjus_psl.1.0.0.UPF (ecutwfc=45 Ry)Run SCF for NaCl
- ecutwfc = 66 Ry (use max of both elements)
- k-points: 6x6x6 automatic
- Check convergence
Run reference calculations
- Na metal (BCC structure)
- Cl₂ molecule (in large box)
Calculate formation energy
E_f = E(NaCl) - E(Na_metal) - 0.5*E(Cl₂)Compare to literature
- Expected: ~-4.2 eV/atom
- If different by >10%, investigate
Common pitfall: Forgetting reference calculations. You need ALL of:
- The compound (NaCl)
- The elemental references (Na metal, Cl₂)
See also: examples/workflows/multi-compound-study.md for multi-compound studies