Usage
A typical usage will consist of about three steps; 1. preparation, 2. building Potential
, and 3. computing capture coefficient. Find more detail for step 2 and step 3 in example notebooks. The command line interface is depreciated and not recommended.
1. Preparation
Before CarrierCapture
, you need to calculate potential energy surfaces of atomic vibrations (one-dimensional Configuration Coordinate diagram; 1D-CC
) and e-ph coupling matrix element (W_if
). Prepare a sequence of structures with displacements which interpolate between two defect states. Run single-point energy calculations on these structures, and extract the total energies. Scripts for preprocessing can be found in /script
which require the pymatgen
python library.
Generate
1D-CC
Calculate equilibrium geometries and total energies of defective supercells with charge states
q
(initial) andq±1
(final) denotedConf.(q)
andConf.(q±1)
, respectively.Generate interpolated and extrapolated structures between
Conf.(q)
(POSCAR_i
) andConf.(q±1)
(POSCAR_f
). You may usegen_cc_struct.py
:$ gen_cc_struct.py -i POSCAR_i -f POSCAR_f -d -1 -0.6 -0.4 -0.2 -0.1 0 0.1 0.2 0.4 0.6 1.0 $ ls disp_dir_i disp_dir_f
Run total-energy calculations for each structure. Example of the directory tree (
template
) contains all input files for DFT calculations. Make sure DFT-program writes wavefunctions (e.g.LWAVE=.TRUE.
inVASP
) for the next stageW_if
):├── 00_q2q±1 │ ├── 00_q │ │ ├── DISP_000 │ │ ├── DISP_001 │ │ ├── ... │ │ ├── disp_dir -> ../../90_DISPLACEMENT/disp_dir_i │ │ └── template │ └── 01_q±1 │ ├── DISP_000 │ ├── DISP_001 │ ├── ... │ ├── disp_dir -> ../../90_DISPLACEMENT/disp_dir_f │ └── template ├── 90_DISPLACEMENT │ ├── disp_dir_f │ │ ├── POSCAR_000 │ │ ├── ... │ ├── disp_dir_i │ │ ├── POSCAR_000 │ │ ├── ...
You can submit jobs for all calculations using a following script in a high-performance computer with a batch system.
#!/bin/bash -l for NUM in {-14,-13,-12,-11,-10,-09,-08,-07,-06,-05,-04,-03,-02,-01,000,001,002,003,004,005,006,007,008,009,010,011,012,013,014} do #if [ ! -d DISP_$NUM ] #then echo DISP_$NUM cp -r template DISP_$NUM cp disp_dir/POSCAR_$NUM DISP_$NUM/POSCAR cd DISP_$NUM qsub run.pbs cd ../ #fi done
Calculate
𝛥Q
usingget_del_Q.py
. Generatenotential.csv
using following script.<a name="qe_data"></a>#!/bin/bash -l echo Q, E for NUM in {-14,-13,-12,-11,-10,-09,-08,-07,-06,-05,-04,-03,-02,-01,000,001,002,003,004,005,006,007,008,009,010,011,012,013,014} do en=`tail -n 1 DISP_$NUM/OSZICAR|awk '{print $3};'|sed 's/-./-0./' ` del_Q=`get_del_Q.py -i $1 -f DISP_$NUM/POSCAR` echo ${del_Q}, ${en} done
Example
potential.csv
file:Q, E 5.034147844442521, -0.28566871E+03 4.027331082104984, -0.28581530E+03 ... 1.0068515567113572, -0.28581699E+03 0.0, -0.28566641E+03
Calcuate e-ph coupling matrix element
W_if
<a name="wif"></a>You already have eigenvalues, wavefunctions and configurations. Read Work by Alkauskas and coworkers carefully.
Find initial and final eigenvalues (
ϵ_i
andϵ_f
).Calculate overlap initial and final wavefunctions. For
VASP
, you can useget_wf.py
:$ python get_wf.py -d 288 -b 291 -D DISP_000 -i DISP_-02 DISP_-01 DISP_001 DISP_002 GRID ENCUT 918.2911873931497 finished making projector list -------------- ran get_projector_list in 0.033210 seconds --------------- STARTING PROJSETUP started setup_proj calculating projector_values onto_projector calcs Done -------------- ... ================================= ----------- Overlaps ------------ ================================= [[0.0574] [0.0267] [0.0345] [0.0643]]
Calculate the rate of change in overlap between initial and final wavefunctions
<ψ_i0|ψ_f(𝛥Q)>
as the geometry changes𝛥Q
:W_if = (ϵ_f - ϵ_i) d<ψ_i0|ψ_f(𝛥Q)> / d𝛥Q
. See more detail in this example.
2. Building Potential
See Example.
- Use
fit_pot!
to find a best fit to the data ofQ
andE
. - Use
solve_pot!
to solve 1D Shrödinger equation for the potential energy surface (PES).
3. Computing capture rates
See Example.
- Use
calc_overlap!
to calculate the overlap between phonon wave functions. - Use
calc_capt_coeff!
to calculate the capture coefficient as a function of temperature.
High-Throughput Usage
High-throughput usage is possible by preparing files in a similar method to the examples, useParamScan_Harmonic.jl
and useParamScan_Anharmonic.jl
. It is recommended that a high-performance computer rather than a personal machine is used, depending on how many calculations are performed. The code can then be run remotely using nohup julia useParamScan_Harmonic &
.
The steps are as follows,
Define the parameters for which capture coefficient C will be calculated.
Calculate C for these parameters, in parallel over the largest parameter range (usually ΔQ)
Find
ccArray.npz
to analyse the capture coefficient as a function of its parameters.