Embedding
The embedding object is the central controller of the DMFT problem: it defines how the correlated subspace \(\mathcal{C}\) is partitioned into impurities and handles the bookkeeping needed to map back and forth between the lattice and the impurities at every DMFT iteration.
Mapping from impurities to \(\mathcal{C}\)
An embedding is specified by a function
that assigns to each embedded block \((\alpha, \sigma)\) in \(\mathcal{C}\) an impurity model \(n_{\mathrm{imp}}\), an impurity block \(\gamma\), and a block-diagonal index \(\tau\). The corresponding embedded self-energy is then
See Theory and notation for the full notation and derivation.
Typical use cases covered by the embedding object:
Equivalent atoms — use the same impurity model (same \(n_{\mathrm{imp}}\)) for different blocks \(\alpha\).
Magnetic order — reverse the spin for some atoms, \(\tau(\sigma) = 1 - \sigma\).
Splitting impurity models — depending on the block structure, the impurity model connected to atom \(a\) can be split. Different impurity solvers can then be used for each of these split impurity models, with the self-energies mapped back to a single atom \(a\). A trivial solver can also be used to obtain a zero self-energy (
drop_imp).Cluster DMFT — regroup a subset of atoms \(a\) into a larger super-atom treated as a cluster DMFT problem.
The embedding object provides:
Factory functions to conveniently construct common embeddings.
Operations to adapt and modify an embedding (e.g.
split_imp,drop_imp).Methods to map data between impurity and embed spaces.
This abstraction simplifies the DMFT loop, making it easy to construct arbitrary embedding scenarios.
The embedding class. |
|
Construct an embedding from spin names, a block decomposition per atom, and an atom-to-impurity mapping. |