Yambo 5.1
Yambo version 5.1 is now ready for production
Yambo 5.0 was released 14 months ago, making almost all features developed within the Yambo code fully available. This includes a whole bunch of new capabilities which were made possible by the support of the MaX project. With version 5.1 the testing and the stabilization was finalized, further refining the code structure and modularization, and improving performance and memory footprint. Yambo 5.1 is a production version, but it also includes new features.
Below is a detailed list of changes:
External Libraries
- Libxc: from 2.2.3 to 5.1.5. New libxc interfaces adopted. Now yambo is able to link recent external libxc libraries
- Petsc updated to version 3.14.6
- Slepc updated to version 3.14.2
- Yambo reads and re-construct all the info on the pseudo-potential via the QE_pseudo library
Coulomb cutoff
- Added new Coulomb cutoff technique ("slab z") for for lower dimensional materials . The "slab z" cutoff has an analytical expression and is compatible with the rim_cut runlevel, for the analytical integration around the G=0 point of the coulomb interaction
- Added rimW integration of the screened interaction obtained via interpolation functions. Together with the RIM, this makes possible to significantly speed up the convergence of GW and BSE simulations with respect to the k-point sampling. To be used with the "slab z" cutoff and for 2D materials.
Screening
- Improved handling of anisotropy. For the q → 0 limit, now an average over three cartesian direction can be selected in input
Yambo can now compute screening without SOC and later use it in a calculation with SOC
Dipoles
- Spin dipoles con now be projected in the valence and in the conduction band channel, to study independently the spin dynamics of electrons and holes in real-time simulations. This is controlled via a new input variable.
TDDFT (eh space)
- Added possibility to lower cutoff on Fxc. Useful for comparison with G-space simulations
- Defined F_xc_mat for magnons
- Added support to some hybrid functionals
IO
- Further modularization of the I/O subroutines. io_control and io_connect subroutines have been extracted from mod_IO.F
- Splitting of mod_IO and mod_IO_interfaces
- qindx_B table can become very large for systems with many k-points. The variable can now be distributed in memory taking advantage of HDF5 parallel I/O while computing the table and writing, and using the HDF5written file as a buffer, where the code checks value not directly stored in memory when the table is later used
- Implementation of IO compression for the excitonic matrix
- Parallel I/O adopted for HXC collisions in real-time simulations and added option to limit collisions to “cv only” channel
- Adopting new upgraded interfaces for io (def_variable and io_variable) in some subroutines of the code
BSE
- Added support for double grid with Haydock solver
- Reorganization of the BSE subroutines:
K_Transitions_setup split into two subroutines;
created K_dipoles and K_IP_sort;
created K_restart file to handle restart, K_multiply_by_V split into to subroutines;
K_driver split into two subroutines ;
Inversion of qindx_B indexes, distribution in memory and parallel I/O (see also section on IO)
Self-consistent module
- Two independent chemical potentials can be added to model the non-equilibrium excitonic insulator
Real time
- Added possibility to perform simulations with two external fields in yambo_nl to model transient absorption experiments
- Coded calculation of ARPES spectral function starting from GKBA reconstruction of G<(t,t’) from density matrix via ypp_rt
- Added calculation of field envelop and extraction of Rabi coupling
- Transient Absorption via ypp restored and greatly improved
- Improved handling of phenomenological dephasing in degenerate subspaces
- Improve openMP parallelization for the yambo_nl
Electron-phonon
- Electron-phonon self-energy now works with irreducible and expanded gkkp
- Possibility to plot diagonal elements of the gkkp
Performance
- The computation of the dipoles in reciprocal space up to yambo 5.0 was very demanding for pseudo-potentials with a large number of projectors. Since version 5.1 the algorithm evaluating <nk|[x,Vnl]|mk> has been completly rewritten, drastically reducing both the CPU time and the memory requirements. The new implementation avoid memory transfer between host and device inside the loop over conduction and valence bands when running on GPUs, gaining a factor 6.5 in benchmark tests on rutile
Configure
- Automatic configuration of MKL blas, lapack and scalapack,FFT
- Pnetcdf: interface with parallel-netcdf library coded in the configure. It could replace HDF5. Not yet possible to use them directly. (experimental)
- Improved configuration for NetCDF and HDF5
- Automatic configuration of HDF5 if the HDF5 compilers are in the path
Fixes
- Fixed problems with parallel I/O of dipoles
- Handling of magnetic semiconductors improved by defining different size for number of full and metallic bands in the two spin channel independently
- Fixed compilation X_irreduc.F subroutine with some compilers
- Fixed fragmentation indices qindx_B_load