PAOFLOW.topology.do_spin_texture#

Functions#

do_spin_texture(data_controller)

Compute the spin texture for Fermi-surface bands and write output files.

Module Contents#

PAOFLOW.topology.do_spin_texture.do_spin_texture(data_controller)[source]#

Compute the spin texture for Fermi-surface bands and write output files.

Parameters:

data_controller (DataController) – Object providing data_arrays and data_attributes. Required arrays: E_k (shape (nkpnts, nawf, 1)), v_k (shape (snktot, nawf, nawf, 1)), Sj (shape (3, nawf, nawf)). Required attributes: nawf, nk1, nk2, nk3, npool, fermi_up, fermi_dw, opath.

Returns:

Adds the following key to data_controller.data_arrays:

  • ind_plot : list of int — indices of the bands that cross the Fermi window [fermi_dw, fermi_up].

Writes one of the following output files on rank 0:

  • {opath}/spin-texture-bands.dat: if kq is present (k-path mode), a text file with columns ik, E, Sx, Sy, Sz for each band in ind_plot.

  • {opath}/spin_text_band_{ib}.npz: one NPZ archive per Fermi band (key spinband, shape (nk1, nk2, nk3, 3)) for full k-grid mode.

Return type:

None

Notes

The spin expectation value for band \(n\) at k-point \(\mathbf{k}\) is computed as

\[\langle S_l \rangle_{n\mathbf{k}} = \langle n\mathbf{k} | S_l | n\mathbf{k} \rangle = \mathbf{v}^\dagger_{n\mathbf{k}} S_l \mathbf{v}_{n\mathbf{k}}\]

where \(S_l\) (Sj[l]) is the \(l\)-th Cartesian spin matrix and \(\mathbf{v}_{n\mathbf{k}}\) are the Bloch eigenvectors. Only the diagonal elements (band index \(n\)) of the full matrix product are retained. The computation is valid only for non-collinear or spin–orbit coupled calculations (nspin = 1).