This is an interface between Abinit and any external impurity solvers that support python interface, like EDIpack (an exact diagonalization impurity solver) and the TRIQS impurity solver family, including CTHYB and Hubbard-I, etc. Currently only support calculations without SOC and spin polarization. The generalization to spin-polarized case is easy and on-going. Here we present two examples on the interface with EDIpack (SrVO3_EDIpack/
) and Hartree-Fock impurity solver (FeSe_HF/
).
The structure of the interface is similar to dmft_solv = 9
(python invocation) mode in Abinit. We have fixed some bugs and made it simpler and more efficient compared with its original implementation. Details of the modifications can be found here. Some codes in the python scripts test.py
and tools.py
are modified from DCore and TRIQS.
- Replace 5 files in the source code of Abinit 9.6.2 by the modified files provided in
abinit_patch/
. Compile the modified Abinit with flagenable_python_invocation="yes"
. - An external impurity solver that supports python interface
- TRIQS 3.x
- mpi4py
- netCDF4 for python
- Run Abinit as usual with the provided input files. Note that we must set
dmft_solv = 2
and the python scripttest.py
must be present in the calculation directory. - In order to plot the spectral function A(k,w), please follow the instructions in Abinit DMFT tutorial. The file
SVOi_DS3Self_ra-omega_iatom0001_isppol1
that contains the self energy on real frequency axis must be provided. For EDIpack impurity solver, we can usesigmaw.py
to generate it. The header and footer of the file should be copied and modified fromSVOo_DS2Self-omega_iatom0001_isppol1
.