Calculs DFT avec Quantum ESPRESSO

Générer et gérer des calculs DFT avec Quantum ESPRESSO (pw.x). Comprend la création de fichiers d'entrée et les paramètres pour la relaxation.

Spar Skills Guide Bot
Data & IAAvancé
3025/08/2026
Claude CodeCursorWindsurfCopilotCodex
#quantum-espresso#dft#plane-wave#pseudopotential#hpc

Recommandé pour


name: quantum-espresso description: > Generate 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. compatibility: > Requires Quantum ESPRESSO installed on the HPC target. Pseudopotential files (UPF) must be available in the configured pseudo_dir.

Quantum ESPRESSO (pw.x)

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.md for post-processing)

Prerequisites

  1. QE binaries (pw.x, pp.x) accessible on HPC
  2. Pseudopotential library (SSSP or PseudoDojo recommended) in a known directory
  3. 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 relax for slabs (fixed cell), vc-relax for bulk
  • For slabs: constrain bottom atoms with if_pos flags (0 = fixed)

Common Pitfalls

  1. ecutrho too low for US pseudopotentials — NC needs 4x ecutwfc, US needs 8-12x. Check pseudopotential header.
  2. Mixing divergence for metals — reduce mixing_beta to 0.1-0.2 and try mixing_mode = 'local-TF'
  3. Wrong ibrav — always use ibrav = 0 with explicit CELL_PARAMETERS to avoid ambiguity
  4. Missing pseudo files — ensure UPF filenames match ATOMIC_SPECIES exactly (case-sensitive)
  5. Slab vacuum too thin — need at least 15 A vacuum; add assume_isolated = '2D' for 2D corrections
  6. K-points along vacuum direction — slabs must use k3=1 (single k-point in z)
Skills similaires