fix a lot of style issues authored by Philipp Rüssmann's avatar Philipp Rüssmann
###### Perform Fermi surfaces calculations using pkkr code
###### Perform Fermi surfaces calculations using PKKprime code
The computation of Fermi surfaces, or band structures can be easily done
setting the *RUNOPTION* *qdos* (see [Qdos
tutorial](jumu/qdos "wikilink")). The \"qdos approach\" is based on the
scan of the k-space for a given energy (or different energy values if we
are interested on band-structure calculations) by the spectral function
: \$\\rho(E+i\\eta,k) = \\frac{\\eta}{\\pi}\\frac{1}{(E-\\epsilon\_k)\^2
+ \\eta\^2}\$. \\\\ So the density is written as a Lorentzian which
reaches its maximum \$\\frac{1}{\\eta\\pi}\$ at
\$E=\\epsilon\_{\\vec{k},\\sigma}\$. All the maximums of this spectral
function constitute the Fermi surface (at \$E=E\_f\$).
setting the *RUNOPTION* *qdos* (see [Qdos tutorial](jumu/qdos "wikilink")). The "qdos approach" is based on the scan of the k-space for a given energy (or different energy values if we are interested on band-structure calculations) by the spectral function
: $`\rho(E+i\eta,k) = \frac{\eta}{\pi}\frac{1}{(E-\epsilon\_k)\^2 + \eta\^2}`$.
So the density is written as a Lorentzian which
reaches its maximum $`\frac{1}{\eta\pi}`$ at $`E=\epsilon\_{\vec{k},\sigma}`$. All the maximums of this spectral
function constitute the Fermi surface (at $`E=E\_f`$).
Even if this method is straightforward, it has some inconveniences.
First in order to obtain accurate dispersions fine \$(\\vec{k},E)\$
First in order to obtain accurate dispersions fine $`(\vec{k},E)`$
meshes must be chosen, which increases computation time. Also a precise
Fermi surface computation requires a small \$\\eta\$ which increases as
Fermi surface computation requires a small $`\eta`$ which increases as
well the computational effort. Finally because of the spreading around
\$E=\\epsilon\_{\\vec{k},\\sigma}\$ the exact value of \$\\vec{k}\$ is
$`E=\epsilon\_{\vec{k},\sigma}`$ the exact value of $`\vec{k}`$ is
not known which is a necessary input data for further calculations,
particularly transport ones. However, the \'qdos method\' allows to have
a first glance on the Fermi surface, before launching more accurate
computations with the pkkr code.
computations with the PKKprime code.
##### Fermi surface calculation
The goal is to solve numerically the secular equation of KKR : \\\\
\$\|\\underline{\\underline{M}}(\\vec{k},E)\|=0 \$ where
\$\\underline{\\underline{M}}(\\vec{k},E)=\\delta\_{\\Lambda\\Lambda\'}-\\sum\\limits\_{\\Lambda*}
g\_{\\Lambda\\Lambda*}(\\vec{k};E) t\_{\\Lambda\'\'\\Lambda\'}(E)\$ and
\$\\ \\Lambda=(L,\\sigma)\$.
The goal is to solve numerically the secular equation of KKR :
In most cases this equation can\'t be solved analytically so a \"trick\"
is done. This trick consists on rather solving:\\\\
\$\\underline{\\underline{M}}(\\vec{k},E) \\underline{c\_\\nu} =
\\lambda\_\\nu(\\vec{k},E) \\underline{c\_\\nu}\$\\\\ and find the
$`\|\underline{\underline{M}}(\vec{k},E)\|=0`$ where
$`\underline{\underline{M}}(\vec{k},E)=\delta\_{\Lambda\Lambda\'}-\sum\limits\_{\Lambda*}
g\_{\Lambda\Lambda*}(\vec{k};E) t\_{\Lambda\'\'\Lambda\'}(E)`$ and
$`\ \Lambda=(L,\sigma)`$.
In most cases this equation can\'t be solved analytically so a "trick"
is done. This trick consists on rather solving:
$`\underline{\underline{M}}(\vec{k},E) \underline{c\_\nu} =
\lambda\_\nu(\vec{k},E) \underline{c\_\nu}`$
and find the
eigenvalue which satisfies the following condition
\$\\lambda\_\\nu(\\vec{k},E)=0\$.\\\\ Thus the objective is to scan the
k-space, for a fixed energy \$E\$, and find
\$\\min\\limits\_{\\vec{k},\\nu}(\|\\lambda\_\\nu(\\vec{k},E)\|)\$.
$`\lambda\_\nu(\vec{k},E)=0`$.
Thus the objective is to scan the
k-space, for a fixed energy $`E`$, and find
$`\min\limits\_{\vec{k},\nu}(\|\lambda\_\nu(\vec{k},E)\|)`$.
##### Qualitative explanation of the iterative method
The main feature of this method is that the Brillouin zone, will be
divided into cubes and into each cube the secular equation
\$\\underline{\\underline{M}}(\\vec{k},E) \\underline{c\_\\nu} =
\\lambda\_\\nu(\\vec{k},E) \\underline{c\_\\nu}\$ for
\$\\lambda\_\\nu(\\vec{k},E)=0\$ will be solved numerically. However,
$`\underline{\underline{M}}(\vec{k},E) \underline{c\_\nu} =
\lambda\_\nu(\vec{k},E) \underline{c\_\nu}`$ for
$`\lambda\_\nu(\vec{k},E)=0`$ will be solved numerically. However,
scanning the k-space can be a heavy computational task, especially for
3D Brillouin zones. That\'s why an iterative method is done in order to
refine the mesh and keep in memory only the zones crossed by a band. So
in a first step the algorithm will quad the Brillouin zone, into
tetrahedras (triangles in 2D), and then evaluate if along the edges we
can find a solution satisfying \$\|\\lambda\_\\nu(\\vec{k},E)\|\<a\_n\$,
where \$a\_n\$ is a given accuracy.
can find a solution satisfying $`\|\lambda\_\nu(\vec{k},E)\|\<a\_n`$,
where $`a\_n`$ is a given accuracy.
If a solution is found along a tetrahedra edges, the mesh is refined in
this region. Otherwise, we don\'t take any more into account this
......@@ -61,13 +61,13 @@ desired cubes in the Brillouin zone ((Total cubes number = cubes with
intersect the bands and cubes which doesn\'t intersect the bands)).
Once the mesh is refined to a certain accuracy, the research of
\$\\vec{k}\$ that minimize \$\\lambda\_\\nu(\\vec{k},E)\$ start in the
$`\vec{k}`$ that minimize $`\lambda\_\nu(\vec{k},E)`$ start in the
cubes which are crossed by a band (found in the previous step). For
doing so a dichotomy procedure is employed:
` - The spectrum of $\underline{\underline{M}}(\vec{k},E)$ is calculated for discrete k-points in the tetrahedra edges.`\
` - The local $\Omega_k$ region where the transition $\lambda_\nu(\vec{k},E) > 0$ -> $\lambda_\nu(\vec{k},E) < 0$ is kept in memory. So by the Bijection Theorem, $\exists \ \vec{k}_0 \in \Omega_k \ , \ \lambda_\nu(\vec{k}_0,E)=0$.`\
` - The k-mesh in $\Omega_k$ is refined.`\
` - The spectrum of $`\underline{\underline{M}}(\vec{k},E)`$ is calculated for discrete k-points in the tetrahedra edges.`\
` - The local $`\Omega_k`$ region where the transition $`\lambda_\nu(\vec{k},E) > 0`$ -> $`\lambda_\nu(\vec{k},E) < 0`$ is kept in memory. So by the Bijection Theorem, $`\exists \ \vec{k}_0 \in \Omega_k \ , \ \lambda_\nu(\vec{k}_0,E)=0`$.`\
` - The k-mesh in $`\Omega_k`$ is refined.`\
` - The same steps are repeated until the given accuracy is reached, or the maximal number of steps is exhausted.`
```{=mediawiki}
......
......