TRIQS/triqs_modest 3.3.0
Modular Electronic Structure Toolkit
Loading...
Searching...
No Matches
One-body elements

Detailed Description

The one-body elements abstraction in ModEST.

Classes

struct  triqs::modest::band_dispersion
 The one-body dispersion as a function of momentum. More...
 
struct  triqs::modest::downfolding_projector
 The projector that downfolds the energy bands onto a set of localized atomic-like orbitals. More...
 
struct  triqs::modest::ibz_symmetry_ops
 Irreducible Brillouin Zone (IBZ) symmetry operations to symmetrize observables over the entire Brillouin zone. More...
 
class  triqs::modest::local_space
 Describe the atomic orbitals within downfolded \(\mathcal{C}\) space. More...
 
struct  triqs::modest::one_body_elements_on_grid
 A one-body elements struct where all of the underlying data exists on a fixed momentum grid. More...
 
struct  triqs::modest::one_body_elements_tb
 A one-body elements using a tight-binding Hamiltonian. More...
 

OBE factories using a fixed grid

Factory functions to create one_body_elements_on_grid

std::pair< double, one_body_elements_on_gridtriqs::modest::one_body_elements_from_dft_converter (std::string const &filename, double threshold=1.e-5, bool diagonalize_hloc=false)
 Create a one-body elements with orthonormalized projectors.
 
one_body_elements_on_grid triqs::modest::one_body_elements_with_theta_projectors (std::string const &filename, one_body_elements_on_grid const &obe)
 Create a one-body elements with the \( \Theta \) projectors.
 
one_body_elements_on_grid triqs::modest::one_body_elements_on_high_symmetry_path (std::string const &filename, one_body_elements_on_grid const &obe)
 Create a one-body elements along specific k-path.
 

OBE factories using a TB Hamiltonian

Factory functions to create one_body_elements_on_tb

one_body_elements_tb triqs::modest::one_body_elements_from_wannier90 (std::string const &wannier_file_path, spin_kind_e spin_kind, std::vector< atomic_orbs > atomic_shells)
 Construct a one-body elements TB object from Wannier90 in the case of a single spin index.
 
one_body_elements_tb triqs::modest::one_body_elements_from_wannier90 (std::string const &wannier_file_path_up, std::string const &wannier_file_path_dn, spin_kind_e spin_kind, std::vector< atomic_orbs > atomic_shells)
 Construct a one-body elements TB object from Wannier90 in the case with separate spin up/spin down channels.
 

Function Documentation

◆ one_body_elements_from_dft_converter()

std::pair< double, one_body_elements_on_grid > triqs::modest::one_body_elements_from_dft_converter ( std::string const &  filename,
double  threshold = 1.e-5,
bool  diagonalize_hloc = false 
)

#include <triqs_modest/loaders.cpp>

Create a one-body elements with orthonormalized projectors.

Using the data from the "dft_input" group, the band dispersion, local space, downfolding projector, and optional IBZ symmetry ops are prepared to create a one-body elements. This object is intended to be used in DMFT calculations.

Our strategy is to decompose the \({\cal C}\) space using the suitable basis for embedding. Each block of embedded self-energy will then be mapped to corresponding impurity models self-energy.

The projectors are obtained from the DFT code or Wannier90, in some global coordinate system of the crystal. Some basis transformations are required before performing the embedding.

  1. A coordinate system rotation \(R^{a}_{m_{a},m_{a}'}\) from the global coordinate system of atom (site) \(a\) into the local coordinate system of the crystal. This rotations ensure that equivalent atoms have the same self-energy in the new basis, hence can be solved by the same impurity model.
  2. Optionally, we perform a second rotation \( U \) to infer the irreps from the local Hamiltonian. Unfortunately, at this stage, the proper information about irreps is not retrieved from the electronic structure code. A workaround has been to examine the local non-interacting Hamiltonian:

    \[ [H_{\mathrm{loc}}^{0}]_{m_{a} m_{a}'}^{a,\sigma} \equiv \sum_{\mathbf{k}} P_{(a,m_{a})\nu}^{\sigma} (\mathbf{k}) \varepsilon_{\nu\nu'}^{\sigma}(\mathbf{k}) [P_{(a',m_{\alpha}')\nu'}^{\sigma} (\mathbf{k})]^{\dagger}. \]

Its block structure is infered (up to a user-defined threshold), by discovering a permutation of the orbitals \(m_{a}\) which renders \(H_{\mathrm{loc}}^{0}\) block-diagonal. Optionally, we can diagonalize these smaller blocks of the local non-interacting Hamiltonian (to reduce the off-diagonal elements in the impurity model hybridization functions \(\Delta_{mm'}^{\sigma}\)).

The Wannier basis is therefore transformed as:

\[ P^{\sigma}_{m\nu}(\mathbf{k}) \leftarrow (RU)^{\dagger}_{m, m'} P^{\sigma}_{m'\nu}(\mathbf{k}). \]

Parameters
filenameHdf5 file from dft_tools converter.
thresholdOff-diagonal threshold for discovery of symmetries.
diagonalize_hlocDiagonalize the local non-interacting hamiltonian.
Returns
The total electron density and a one-body elements.

Definition at line 253 of file loaders.cpp.

◆ one_body_elements_from_wannier90() [1/2]

one_body_elements_tb triqs::modest::one_body_elements_from_wannier90 ( std::string const &  wannier_file_path,
spin_kind_e  spin_kind,
std::vector< atomic_orbs atomic_shells 
)

#include <triqs_modest/obe_tb.cpp>

Construct a one-body elements TB object from Wannier90 in the case of a single spin index.

Parameters
wannier_file_pathString to Wannier90 files, including the prefix, as in "path/to/file/seedname" to specify a Wannier files named in the format "seedname_tb.dat".
spin_kindSpin kind for this calculation.
atomic_shellsList of atomic shells input by the user.
Returns
One-body elements containing the Wannier90 tight binding Hamiltonian.

Definition at line 23 of file obe_tb.cpp.

◆ one_body_elements_from_wannier90() [2/2]

one_body_elements_tb triqs::modest::one_body_elements_from_wannier90 ( std::string const &  wannier_file_path_up,
std::string const &  wannier_file_path_dn,
spin_kind_e  spin_kind,
std::vector< atomic_orbs atomic_shells 
)

#include <triqs_modest/obe_tb.cpp>

Construct a one-body elements TB object from Wannier90 in the case with separate spin up/spin down channels.

Parameters
wannier_file_path_upString to Wannier90 files, including the prefix, for the up spin channel, as in "path/to/file/seedname" to specify a Wannier files named in the format "seedname_tb.dat".
wannier_file_path_dnString to Wannier90 files, including the prefix, for the down spin channel as in "path/to/file/seedname" to specify a Wannier files named in the format "seedname_tb.dat"
spin_kindSpin kind for this calculation.
atomic_shellsList of atomic shells input by the user.
Returns
One-body elements containing the Wannier90 tight binding Hamiltonian.

Definition at line 39 of file obe_tb.cpp.

◆ one_body_elements_on_high_symmetry_path()

one_body_elements_on_grid triqs::modest::one_body_elements_on_high_symmetry_path ( std::string const &  filename,
one_body_elements_on_grid const &  obe 
)

#include <triqs_modest/loaders.cpp>

Create a one-body elements along specific k-path.

Using the data from the "dft_bands_input" group, the band disperion and downfolding projector are prepared to create one-body elements. This object is intended to be used for post-processing the momentum-resolved spectral function.

Parameters
filenameHdf5 file from the DFTtools converter.
obeOne-body elements that was ued in the DMFT calculation.
Returns
One-body elements along high-symmetry k-path.

Definition at line 361 of file loaders.cpp.

◆ one_body_elements_with_theta_projectors()

one_body_elements_on_grid triqs::modest::one_body_elements_with_theta_projectors ( std::string const &  filename,
one_body_elements_on_grid const &  obe 
)

#include <triqs_modest/loaders.cpp>

Create a one-body elements with the \( \Theta \) projectors.

Using the data from the "dft_parproj_input" group, the local space, downfolding projectors, and optional IBZ symmetry ops are prepared to create a one-body elements. This object is intended to be used for post-processing the atom- and orbitally-resolved k-summed spectral functions.

Parameters
filenameHdf5 file from DFTtools converter with "dft_parproj_input" group.
obeOne-body elements that was used in the DMFT calculation.
Returns
One-body elements using the \( \Theta \) projectors.

Definition at line 328 of file loaders.cpp.