PAOFLOW.hamiltonian.add_ext_field#

Functions#

add_ext_field(data_controller)

Add external electric field, magnetic field, and Hubbard U corrections to the real-space Hamiltonian.

Module Contents#

PAOFLOW.hamiltonian.add_ext_field.add_ext_field(data_controller)[source]#

Add external electric field, magnetic field, and Hubbard U corrections to the real-space Hamiltonian.

Parameters:

data_controller (DataController) – Object providing data_arrays and data_attributes. Required arrays: HRs (shape (nawf, nawf, nk1, nk2, nk3, nspin)), Efield (shape (3,)), Bfield (shape (3,)), Sj (shape (3, nawf, nawf)), HubbardU (shape (nawf,)), tau (shape (natoms, 3) in Bohr radii). Required attribute: natoms.

Returns:

Modifies data_controller.data_arrays['HRs'] in place.

Return type:

None

Notes

This function applies up to three perturbations to the on-site elements of the real-space Hamiltonian at \(\mathbf{R} = 0\). Each correction is applied only when the corresponding field array is non-zero.

  • Electric field: subtracts \(\mathbf{E} \cdot \boldsymbol{\tau}_n\) from each diagonal entry \(H^R_{nn}(0)\), where \(\boldsymbol{\tau}_n\) is the orbital position in Ångström:

    \[H^R_{nn}(0) \leftarrow H^R_{nn}(0) - \mathbf{E} \cdot \boldsymbol{\tau}_n\]
  • Magnetic field: subtracts the Zeeman coupling from every \(\mathbf{R} = 0\) matrix element:

    \[H^R_{nm}(0) \leftarrow H^R_{nm}(0) - \sum_{\alpha} B_{\alpha} S^{\alpha}_{nm}\]
  • Hubbard U: subtracts \(U_n / 2\) from each diagonal entry:

    \[H^R_{nn}(0) \leftarrow H^R_{nn}(0) - U_n / 2\]

Atomic positions are assumed to be uniform across orbitals within the same atom. The array HRs is temporarily reshaped to (nawf, nawf, nk1*nk2*nk3, nspin) during processing and restored to its original shape on exit.