[Wien] Differences in band character plotting using two methods under rotated local basis

Yichen Zhang zycforphysics at gmail.com
Mon Oct 14 07:46:37 CEST 2024


Dear WIEN2k developers and users,

Recently, I'm trying to plot the band characters in a 45 deg locally
rotated xy basis. I'm using WIEN2k 23.2. Following previous mails, there
are two ways of doing that.
1) Directly modifying the local rotation matrix in case.struct, right
before x lapw2 -band -qtl.
2) Using the qtl programme.

I attempted both ways, but noticed that the results are different.

Firstly, for method 1), the local rotation matrix for all atoms
corresponding to the local point group symmetry was
0.0000000 1.0000000 0.0000000
0.0000000 0.0000000 1.0000000
1.0000000 0.0000000 0.0000000
Essentially, it swapped xyz a bit. (The system is orthorhombic, so this
default loc rot matrix has changed the y to z, which happens to be the z
direction I wanted for consistency with experimental definition of
out-of-plane in ARPES.) In order to project px and py orbitals on 45 deg
rotated xy axes. I changed the loc rot matrix to
0.7071068 0.7071068 0.0000000
0.0000000 0.0000000 1.0000000
0.7071068 - .7071068 0.0000000
(Notice that this 45 deg basis is an arbitrary basis for the space group,
as a and b are inequivalent in the orthorhombic structure.)

Then for method 2), I changed the case.inq file (originally with loro=0) to
the following:
-9.0      3.0       Emin  Emax
    4                  number of atoms
    1 -2 0 2        iatom, qsplit, symmetrize, locrot
4      0 1 2 3     nL, l-values
0. 1. 0.
1. 0. 1.
    2 -2 0 2        iatom, qsplit, symmetrize, locrot
3      0 1 2        nL, l-values
0. 1. 0.
1. 0. 1.
    3 -2 0 2        iatom, qsplit, symmetrize, locrot
3      0 1 2        nL, l-values
0. 1. 0.
1. 0. 1.
    3 -2 0 2        iatom, qsplit, symmetrize, locrot
3      0 1 2        nL, l-values
0. 1. 0.
1. 0. 1.
My ISPLIT in case.struct is 8 for QSPLIT=-2 to refer to.
To get the band character plot from this case.inq file, I couldn't find
very detailed documentation. The way I attempted was after SOC converged
SCF, I ran
x lapw1 -p -band
x lapwso -p
x lapw2 -p -so -band -qtl (on the unmodified highest symmetry loc rot
matrix)
x qtl -p -so -band (which rewrites case.qtl based on the axes in case.inq)
Due to running band structure after SCF and the lapw2 -fermi included in x
qtl, it would report a FERMI error saying number of k points inconsistent
when reading kgen and asking to check IN1 and KGEN files. This issue has
been discussed before in the mailing list due to running band structure
before x qtl. Despite the error in lapw2, qtl finished successfully and
provided an updated qtl file from the qtl programme.

Therefore, my first question is: is there a way to avoid this error in
using qtl for band character calculation? If I hadn't done lapw1 for band
structure, qtl would tend to use the SCF klist which is not the band
structure path I wanted from klist_band. However, to have qtl running along
klist_band, the lapw2 -fermi error becomes inevitable due to getting
eigenenergies and eigenvectors of the band structure klist first? For now,
I cannot find a way to avoid this error under the current implemented
workflow of  "x qtl". Is there a better way to do this?

My second question is: when I compare the results from the two methods,
they are different. The qtl results seem to be more consistent with ARPES
observation of px and py orbitals under different light polarization. In
this qtl with symmetrization=0 (as used above), one diagonal is pure px and
the other diagonal is pure py. This is what we expected from the isolated
local layer. (Certainly, symmetrization=1 in the case.inq would destroy
this result). While for the method 1) of directly modifying the loc rot
matrix in case.struct, the results still show certain px and py imbalances
between two diagonals, but with much mixing. So why are they different?
Does x lapw2 -band -qtl have some sort of symmetrization that mixes the 45
deg rotated x and y axes? I briefly looked into the code but only found
symmetrization programme used in lapw2 for spin-polarized calculation,
which is irrelevant here.

Just for clarity, considering the whole crystal, the two diagonals are
equivalent. I projected the orbitals to a 45 deg off basis just to see the
local orbital texture as the local layer is rotated 45 deg. Therefore, when
one goes from one diagonal to the other, px naturally becomes py in the 45
rotated xy basis. That's why x qtl results with clean-cut px py projections
seem more natural to me, but results from x lapw2 under modified loc rot
matrix in the case.struct file seem a bit confusing to me.

Looking forward to hearing comments and to finding out if I have done
something wrong here.

Best regards
Yichen

-- 
Yichen Zhang
Department of Physics and Astronomy
Rice University
6100 Main St., Houston, TX 77005-1892
Email: zycforphysics at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://zeus.theochem.tuwien.ac.at/pipermail/wien/attachments/20241014/8dcfe3d1/attachment.htm>


More information about the Wien mailing list