Silicon Walkthrough (QE + LetzElPhC)
This tutorial provides a step-by-step walkthrough of the example located in examples/qe/silicon. We will compute the electron-phonon matrix elements for bulk Silicon.
Prerequisites
- Quantum Espresso (
pw.x,ph.x) - Yambo (
p2y,yambo) - LetzElPhC (
lelphc) - The
Si.upfpseudopotential (included in the example directory).
Directory Structure
The example directory is organized as follows:
examples/qe/silicon/
├── Si.upf # Pseudopotential
├── run.sh # All-in-one script
├── scf/ # Step 1: SCF
├── ph/ # Step 2: Phonons
├── nscf/ # Step 3: NSCF & Yambo Setup
└── elph/ # Step 4: LetzElPhC Calculation
You can run the entire workflow using ./run.sh, but we will go through each step manually to understand the process.
Step 1: SCF Calculation
First, we perform a self-consistent field (SCF) calculation to obtain the ground state density.
Input: scf/scf.in
&CONTROL
prefix = 'si'
calculation = 'scf'
...
/
&SYSTEM
ibrav = 0, nat = 2, ntyp = 1
ecutwfc = 40.0
...
/
...
K_POINTS automatic
4 4 4 0 0 0
Command:
Step 2: Phonon Calculation
Next, we calculate the phonons and the deformation potentials (\(\delta V_{SCF}\)) on a uniform q-grid.
Input: ph/ph.in
&inputph
nq1 = 2, nq2 = 2, nq3 = 2, ! 2x2x2 q-grid
fildyn = 'si.dyn',
tr2_ph = 1e-12,
prefix = 'si',
fildvscf = 'dvscf', ! Important: Save potential changes
ldisp = .true.,
reduce_io = .true.
/
Important Notes:
* We use a 2x2x2 q-grid.
* fildvscf is specified to save the potential variation files.
Command:
Step 3: NSCF Calculation & Yambo Setup
We need the electronic wavefunctions on a k-grid that is commensurate with our phonon q-grid.
Input: nscf/nscf.in
&CONTROL
calculation = 'nscf'
prefix = 'si'
...
/
&SYSTEM
...
nbnd = 10 ! Number of bands
force_symmorphic = .true. ! Crucial for Yambo compatibility
/
...
K_POINTS automatic
4 4 4 0 0 0 ! 4x4x4 k-grid (commensurate with 2x2x2 q-grid)
Command:
Initialize Yambo Database
Once the NSCF run is complete, we enter the save directory and initialize the Yambo database.
Step 4: LetzElPhC Preprocessing
Before running the main calculation, we run the preprocessor in the phonon directory to organize the phonon data into a ph_save directory.
Command:
This createsph/ph_save.
Step 5: LetzElPhC Calculation
Finally, we compute the electron-phonon matrix elements.
Input: elph/elph.in
nkpool = 1
nqpool = 1
start_bnd = 2
end_bnd = 6
save_dir = ../nscf/si.save/SAVE # Path to Yambo SAVE
ph_save_dir = ../ph/ph_save # Path to ph_save
kernel = dfpt # Use full DFPT screening
convention = standard # <k+q|dV|k>
Command:
Output
The code will generate:
* Standard output with progress information.
* ndb.elph: The database containing the electron-phonon matrix elements (in LetzElPhC format).
* If running with Yambopy or converting later, this can be transformed into Yambo's ndb.elph_gkkp databases.