This work builds off Structural spillage: an efficient method to identify non-crystalline topological materials (https://link.aps.org/doi/10.1103/PhysRevResearch.5.L042011) with a more efficient implementation of the structural spillage calculations.
The quasi-Bloch structural spillage at UC k-point k (paper eq. 2b):
where --xtal-sc) and --amor-sc), both expressed in the plane-wave basis and unfolded onto the UC k-mesh (--xtal-uc). This is implemented in compute_structural_spillage in structural_spillage.py: p4 is aa is p1/p2 are the two cross terms
Currently only
Python 3.9+ (uses the walrus operator). Install dependencies with:
pip install -r requirements.txt
We provide the commands to calculate structural spillage for Bismuthene bi-layer for example.
uc/2nd/WAVECAR— crystalline unit cell, 5×5×1 k-mesh, SOC (vasp_type=ncl)supercell/WAVECAR— crystalline 50-atom supercell, gamma-only, SOCdis/WAVECAR— the same supercell disordered (amorphized), gamma-only, noSOC
Run:
python structural_spillage.py \
--xtal-uc /global/cfs/cdirs/m4590/spillage_data/Bi_data/uc/2nd/WAVECAR \
--uc-soc \
--xtal-sc /global/cfs/cdirs/m4590/spillage_data/Bi_data/supercell/WAVECAR \
--amor-sc /global/cfs/cdirs/m4590/spillage_data/Bi_data/dis/WAVECAR \
--out-spillage tests/bi_smoke/spillage.txt
--uc-soc is required because the UC WAVECAR was written with LSORBIT=.TRUE..
We confirm that the value at the
Unlike the bismuthene case above, this compares the crystalline SOC supercell against
the same nominal structure without SOC — no actual disorder — so it isolates the
SOC-driven band inversion at
python structural_spillage.py \
--xtal-uc /global/cfs/cdirs/m5222/ehof12/AmorphousTDA/r2scan_uc_nosoc/WAVECAR \
--xtal-sc /global/cfs/cdirs/m4590/spillage_data/DOS_crys_supercell/soc/WAVECAR \
--amor-sc /global/cfs/cdirs/m4590/spillage_data/DOS_crys_supercell/noSOC/WAVECAR \
--out-spillage tests/bi2se3_smoke/spillage.txt
We confirm that the value at the