-
Kostas Vilkelis authoredKostas Vilkelis authored
jupytext:
text_representation:
extension: .md
format_name: myst
format_version: 0.13
jupytext_version: 1.14.4
kernelspec:
display_name: Python 3 (ipykernel)
language: python
name: python3
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 in real-space.
- Fourier transform the total Hamiltonian to the momentum space .
- Calculate the ground-state density matrix in momentum space.
- Diagonalize the Hamiltonian to obtain the eigenvalues and eigenvectors.
- Calculate the fermi level given the desired filling of the unit cell.
- Calculate the density matrix using the eigenvectors and the fermi level(currently we do not consider thermal effects so).
- Diagonalize the Hamiltonian
- Inverse Fourier transform the density matrix to real-space .
- Calculate the new mean-field interaction 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.