Quantum ESPRESSO (pw.x)
SkillDev toolsGenerate and manage Quantum ESPRESSO (pw.x) DFT calculations. Use when the user requests QE, Quantum ESPRESSO, pw.x, or plane-wave pseudopotential calculations outside VASP.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Quantum ESPRESSO (pw.x) skill
What this skill tells your AI
The instructions your AI receives, as published by hello-qm/catgo-lrg in .claude/skills/qe/SKILL.md and read by ahel’s review.
When to Use
- User explicitly requests Quantum ESPRESSO / QE / pw.x
- User needs norm-conserving or ultrasoft pseudopotentials (not PAW-only like VASP)
- User wants open-source plane-wave DFT
- User needs ph.x phonon calculations (hand off to
analysis/phonopy/SKILL.mdfor post-processing)
Prerequisites
- QE binaries (
pw.x,pp.x) accessible on HPC - Pseudopotential library (SSSP or PseudoDojo recommended) in a known directory
- Structure loaded in viewer — verify with
catgo_view(action="get_state")
Workflow Steps
1. Verify structure
catgo_view(action="get_state")
2. Create workflow
catgo_workflow_engine(action="create", params={"name": "QE relaxation - TiO2"})
3. Add QE task
CatGo does not yet have a native QE engine. Use task_type: "shell" with input file generation.
catgo_workflow_engine(action="add_task", params={
"workflow_id": "wf_xxx",
"task_type": "shell",
"name": "qe_relax",
"command": "pw.x -in relax.in > relax.out",
"input_files": {
"relax.in": "<pw.x input content>"
},
"system_name": "TiO2_relax"
})
When a @register_engine("qe") is added to CatGo, use task_type: "geo_opt" with software: "qe" instead.
4. Submit
catgo_workflow_engine(action="submit", params={"workflow_id": "wf_xxx"})
Input File Template — SCF
&CONTROL
calculation = 'scf'
pseudo_dir = './pseudo/'
outdir = './tmp/'
tprnfor = .true.
tstress = .true.
/
&SYSTEM
ibrav = 0
nat = <natoms>
ntyp = <ntypes>
ecutwfc = 60.0
ecutrho = 480.0
occupations = 'smearing'
smearing = 'mv'
degauss = 0.02
/
&ELECTRONS
conv_thr = 1.0d-6
mixing_beta = 0.3
/
ATOMIC_SPECIES
<element> <mass> <element>.UPF
CELL_PARAMETERS angstrom
<a1x> <a1y> <a1z>
<a2x> <a2y> <a2z>
<a3x> <a3y> <a3z>
ATOMIC_POSITIONS angstrom
<element> <x> <y> <z>
K_POINTS automatic
<k1> <k2> <k3> 0 0 0
Parameter Guidance
| Parameter | Typical value | Notes |
|---|---|---|
| ecutwfc | 40-80 Ry | Depends on pseudopotential; SSSP suggests per-element values |
| ecutrho | 4-12x ecutwfc | NC: 4x, US: 8-12x |
| conv_thr | 1.0d-6 | SCF convergence; tighten to 1.0d-8 for phonons |
| mixing_beta | 0.3-0.7 | Lower for metals/magnetic systems |
| K_POINTS | auto from cell | ~0.03 A^-1 spacing, Gamma for molecules |
| smearing | 'mv' | Marzari-Vanderbilt cold smearing; use 'gaussian' for insulators |
Relaxation-Specific Parameters
Add to input for geometry optimization:
&CONTROL
calculation = 'relax' ! ions only
! or 'vc-relax' ! ions + cell
/
&IONS
ion_dynamics = 'bfgs'
/
&CELL ! only for vc-relax
cell_dynamics = 'bfgs'
press = 0.0
/
- Use
relaxfor slabs (fixed cell),vc-relaxfor bulk - For slabs: constrain bottom atoms with
if_posflags (0 = fixed)
Common Pitfalls
- ecutrho too low for US pseudopotentials — NC needs 4x ecutwfc, US needs 8-12x. Check pseudopotential header.
- Mixing divergence for metals — reduce
mixing_betato 0.1-0.2 and trymixing_mode = 'local-TF' - Wrong ibrav — always use
ibrav = 0with explicit CELL_PARAMETERS to avoid ambiguity - Missing pseudo files — ensure UPF filenames match ATOMIC_SPECIES exactly (case-sensitive)
- Slab vacuum too thin — need at least 15 A vacuum; add
assume_isolated = '2D'for 2D corrections - K-points along vacuum direction — slabs must use k3=1 (single k-point in z)
Signals
- GitHub stars
- 196
- Forks
- 23
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
quantum-espresso- Source
- github.com/hello-qm/catgo-lrg