# 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)). 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
$`\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.
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
spatial region. This step is repeated until we reach the final number of
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
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 \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 same steps are repeated until the given accuracy is reached, or the maximal number of steps is exhausted.
# 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)). 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
$`\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.
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
spatial region. This step is repeated until we reach the final number of
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
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 \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 same steps are repeated until the given accuracy is reached, or the maximal number of steps is exhausted.