-
Kostas Vilkelis authoredKostas Vilkelis authored
Algorithm overview
Self-consistency loop
In order to calculate the mean-field interaction in {eq}mf_infinite
, we require the ground-state density matrix
density
is a functional of the mean-field interaction We define a single iteration of a self-consistency loop:
such that it performs the following operations given an initial mean-field interaction
- Calculate the total Hamiltonian \hat{H}(R) = \hat{H_0}(R) + \hat{V}_{\text{init, MF}}(R)in real-space.
- Fourier transform the total Hamiltonian to the momentum space \hat{H}(R) \to \hat{H}(k).
- Calculate the ground-state density matrix \rho_{mn}(k)in momentum space.
- Diagonalize the Hamiltonian \hat{H}(k)to obtain the eigenvalues and eigenvectors.
- Calculate the fermi level \mugiven the desired filling of the unit cell.
- Calculate the density matrix \rho_{mn}(k)using the eigenvectors and the fermi level\mu(currently we do not consider thermal effects so\beta \to \infty).
- Diagonalize the Hamiltonian
- Inverse Fourier transform the density matrix to real-space \rho_{mn}(k) \to \rho_{mn}(R).
- Calculate the new mean-field interaction \hat{V}_{\text{new, MF}}(R)via {eq}
mf_infinite
.
Self-consistency criterion
To define the self-consistency condition, we first introduce an invertible function
Currently,
With this function, we define the self-consistency criterion as a fixed-point problem:
To solve this fixed-point problem, we utilize a root-finding function scipy.optimize.anderson
which uses the Anderson mixing method to find the fixed-point solution.
However, our implementation also allows to use other custom fixed-point solvers by either providing it to solver
or by re-defining the solver
function.