Available kernels

\(\mu\)-Kernels

In mu_kernels the following kernels are implemented:

Kubo kernels

Different Kubo kernels can be accessed from KuboKernel. These include inter_band, intra_band, anomalous, even and odd kernels. For instance, to access the inter_band kernel:

from py4mulas.mu_kernels import KuboKernel
mu_kernel = KuboKernel(name='inter_band')
  • Anomalous Hall kernel name='anomalous'

    \(-2i\frac{f_n}{(E_n - E_m)(E_n - E_m + i\eta)}\)

  • Interband Kubo kernel name='inter_band'

    \(i\frac{f_m - f_n}{(E_n - E_m)(E_n - E_m + i\eta)}\)

    See. [1]

  • Intraband Kubo kernel name='intra_band'

    \(\frac{i}{\eta}\partial_E f|_{E=E_n}\)

  • Constant broadening kernels

    The effect of temperature is included in the constant broadening \(\eta\). Thetse kernels are therfore \(T\) independent.

    • name='even' Eq(4) of [2]

    • name='odd' Eq(5) of [2]

Kubo-Bastin kernels

Other mu_kernel s are also available from KuboBastinKernel. These kernels are originally defined within the Kubo-Bastin framework. Using the recently proposed approach to analytically handle the Kubo-Bastin energy integration [3], the formula becomes easier to implement as no energy integration is required anymore. This formulation is useful when we are interested in separating different response components such as Fermi-surface and Fermi-sea contributions.

This kernel class takes the following names: StredaI, StredaII, BMI, Overlap and BMII.

  • StredaI and StredaII correspond to the Streda decomposition of the Kubo-Bastin formula.

  • BMI and BMII are Fermi-surface and Fermi-sea contributions recently suggested by Bonbien and Manchon [4]. This decomposition corrects the original Streda decomposition.

  • Overlap corresponds to the overlap between these two contributions.

These kernels can be accesses by specifiying their names in the underlying kernel class

from py4mulas.mu_kernels import KuboBastinKernel
mu_kernelBMI = KuboBastinKernel(name='BMI')

Finally, the kernel should be passed to a formula. For instance to the built-in KuboFormula as

from py4mulas.responses import Kubo
formula = Kubo(some_model, kspace_options=kspace_options, mu_kernel=mu_kernelBMI)

See. rashbaModel.py where these kernels ar explored.

[1] Crepieux et Bruno, [PRB 64, 014416 (2001)].

[2] Freimuth et al, [PRB 90, 174423 (2014)].

[3] Ly, [arXiv.2605.19670].

[4] Bonbian and Manchon [PRB 102, 085113 (2020)].