... | @@ -22,22 +22,21 @@ computations with the PKKprime code. |
... | @@ -22,22 +22,21 @@ computations with the PKKprime code. |
|
|
|
|
|
The goal is to solve numerically the secular equation of KKR :
|
|
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)|=0`$ where
|
|
$`\underline{\underline{M}}(\vec{k},E)=\delta_{\Lambda\Lambda\'}-\sum\limits_{\Lambda*}
|
|
$`\underline{\underline{M}}(\vec{k},E)=\delta_{\Lambda\Lambda'}-\sum\limits_{\Lambda*}
|
|
g_{\Lambda\Lambda*}(\vec{k};E) t_{\Lambda\'\'\Lambda\'}(E)`$ and
|
|
g_{\Lambda\Lambda*}(\vec{k};E) t_{\Lambda''\Lambda'}(E)`$ and
|
|
$`\ \Lambda=(L,\sigma)`$.
|
|
$`\Lambda=(L,\sigma)`$.
|
|
|
|
|
|
In most cases this equation can\'t be solved analytically so a "trick"
|
|
In most cases this equation can\'t be solved analytically so a "trick"
|
|
is done. This trick consists on rather solving:
|
|
is done. This trick consists on rather solving:
|
|
|
|
|
|
$`\underline{\underline{M}}(\vec{k},E) \underline{c_\nu} =
|
|
$`\underline{\underline{M}}(\vec{k},E) \underline{c_\nu} = \lambda_\nu(\vec{k},E) \underline{c_\nu}`$
|
|
\lambda_\nu(\vec{k},E) \underline{c_\nu}`$
|
|
|
|
and find the
|
|
and find the
|
|
eigenvalue which satisfies the following condition
|
|
eigenvalue which satisfies the following condition
|
|
$`\lambda_\nu(\vec{k},E)=0`$.
|
|
$`\lambda_\nu(\vec{k},E)=0`$.
|
|
Thus the objective is to scan the
|
|
Thus the objective is to scan the
|
|
k-space, for a fixed energy $`E`$, and find
|
|
k-space, for a fixed energy $`E`$, and find
|
|
$`\min\limits_{\vec{k},\nu}(\|\lambda_\nu(\vec{k},E)\|)`$.
|
|
$`\min\limits_{\vec{k},\nu}(|\lambda_\nu(\vec{k},E)|)`$.
|
|
|
|
|
|
## Qualitative explanation of the iterative method
|
|
## Qualitative explanation of the iterative method
|
|
|
|
|
... | @@ -51,14 +50,14 @@ scanning the k-space can be a heavy computational task, especially for |
... | @@ -51,14 +50,14 @@ scanning the k-space can be a heavy computational task, especially for |
|
refine the mesh and keep in memory only the zones crossed by a band. So
|
|
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
|
|
in a first step the algorithm will quad the Brillouin zone, into
|
|
tetrahedras (triangles in 2D), and then evaluate if along the edges we
|
|
tetrahedras (triangles in 2D), and then evaluate if along the edges we
|
|
can find a solution satisfying $`\|\lambda_\nu(\vec{k},E)\|\<a_n`$,
|
|
can find a solution satisfying $`|\lambda_\nu(\vec{k},E)|\<a_n`$,
|
|
where $`a_n`$ is a given accuracy.
|
|
where $`a_n`$ is a given accuracy.
|
|
|
|
|
|
If a solution is found along a tetrahedra edges, the mesh is refined in
|
|
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
|
|
this region. Otherwise, we don't take any more into account this
|
|
spatial region. This step is repeated until we reach the final number of
|
|
spatial region. This step is repeated until we reach the final number of
|
|
desired cubes in the Brillouin zone ((Total cubes number = cubes with
|
|
desired cubes in the Brillouin zone (Total cubes number = cubes with
|
|
intersect the bands and cubes which doesn\'t intersect the bands)).
|
|
intersect the bands and cubes which doesn't intersect the bands).
|
|
|
|
|
|
Once the mesh is refined to a certain accuracy, the research of
|
|
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
|
... | @@ -66,7 +65,7 @@ cubes which are crossed by a band (found in the previous step). For |
... | @@ -66,7 +65,7 @@ cubes which are crossed by a band (found in the previous step). For |
|
doing so a dichotomy procedure is employed:
|
|
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 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 \rightarrow \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 local $`\Omega_k`$ region where the transition $`\lambda_\nu(\vec{k},E) > 0 \rightarrow \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 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.
|
|
- The same steps are repeated until the given accuracy is reached, or the maximal number of steps is exhausted.
|
|
|
|
|
... | | ... | |