.. _kernels: ==================================== Available kernels ==================================== :math:`\mu`-Kernels ==================== In :mod:`~py4mulas.mu_kernels` the following kernels are implemented: Kubo kernels ------------- Different Kubo kernels can be accessed from :class:`~py4mulas.mu_kernels.KuboKernel`. These include ``inter_band``, ``intra_band``, ``anomalous``, ``even`` and ``odd`` kernels. For instance, to access the ``inter_band`` kernel: .. code-block:: python from py4mulas.mu_kernels import KuboKernel mu_kernel = KuboKernel(name='inter_band') * Anomalous Hall kernel ``name='anomalous'`` :math:`-2i\frac{f_n}{(E_n - E_m)(E_n - E_m + i\eta)}` * Interband Kubo kernel ``name='inter_band'`` :math:`i\frac{f_m - f_n}{(E_n - E_m)(E_n - E_m + i\eta)}` See. [1] * Intraband Kubo kernel ``name='intra_band'`` :math:`\frac{i}{\eta}\partial_E f|_{E=E_n}` * Constant broadening kernels The effect of temperature is included in the constant broadening :math:`\eta`. Thetse kernels are therfore :math:`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 :class:`~py4mulas.mu_kernels.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 .. code-block:: python 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 .. code-block:: python from py4mulas.responses import Kubo formula = Kubo(some_model, kspace_options=kspace_options, mu_kernel=mu_kernelBMI) .. only:: builder_html See. :download:`rashbaModel.py <../../../examples/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)] `_.