Virtual crystal approximation (VCA)
A. Pseudo-Potential Mixinxg
Suppose we want to calculate an alloy, for example, $InSb_{x}As_{1-x}$.
We can generate a mixed pseudopotential of $Sb$ and $As$ in the following way:
$Sb_x + As_{1-x}$ norm-conserving pseudo-potential (ONCV case), follow the below instruction.
-
Keep ready the original pseudopotentials of $Sb$ and $As$.
mkdir mixed-pseudo cd mixed-pseudo git clone https://github.com/pipidog/ONCVPSP.git cd ONCVPSP/sg15
-
[Optional]
For the first time, go to the Quantum Espresso parent (installation) directory and executecd ./bin/ ln -s ../upflib/*.x ./
-
Run
virtual_v2.x
.virtual_v2.x
Input PP file # 1 in UPF format > Sb_ONCV_PBE_fr.upf Input PP file # 1 in UPF format > As_ONCV_PBE_fr.upf
(for example,)
New Pseudo = x Sb_ONCV_PBE_fr.upf + (1-x) As_ONCV_PBE_fr.upf mixing parameter x [0<x<1] = 0.25
-
Rename the newly created mixed pseudopotential.
mv ./NewPseudo.UPF ./Sb25As75_ONCV_PBE_fr.upf
B. Example DFT Calculation
-
Generate mixed pseudopotential in Section A.
-
To relax the structure using
vc-relax
. Create the input file forvc-relax
calculation as follow:cat> OPT_VCRELAX.in <<EOF &CONTROL calculation = 'vc-relax' restart_mode = 'from_scratch' pseudo_dir = './pseudo_dir/' outdir = './OUT_DIR/' / &SYSTEM ibrav = 2 A = 6.479 ntyp = 2 nat = 2 ecutwfc = 60.0 occupations = 'smearing' smearing = 'gaussian' degauss = 0.01 / &ELECTRONS conv_thr = 1.0d-8 / &IONS / &CELL / ATOMIC_SPECIES In 114.8180 In_ONCV_PBE_fr.upf Xx 100.0000 Sb25As75_ONCV_PBE_fr.upf ATOMIC_POSITIONS (alat) In 0.00 0.00 0.00 Xx 0.25 0.25 0.25 K_POINTS (automatic) 2 2 2 0 0 0 EOF
-
Run the variable cell relaxation calculation.
mpirun -np 4 pw.x < OPT_VCRELAX.in> OPT_VCRELAX.out
-
Re-run the
vc-relax
relaxation a couple of times more using the latest lattice parameters until lattice parameter stops to change below 1 decimal point.Formula to use for optimized lattice parameter read from
grep 'final coordinates' OPT_VCRELAX.out
:alat_value[=celldm(1)] * 0.433080256 / 0.5 (unit is in $Bohr$)