Skip to content

Yambo 4.3

Compare
Choose a tag to compare
@sangallidavide sangallidavide released this 19 Oct 07:11
· 13820 commits to master since this release

List of new features:

  • implemented USPPs in YAMBO and created a new prototype library, qe_pseudo;
  • improved the PWscf to YAMBO interface, p2y;
  • fully supported parallel linear algebra and implemented a new level of parallelism
    for the irreducible response functions;
  • implemented in YAMBO the support for SLEPc and PETSc libraries;
  • calculation of dipole matrix elements with alternative approaches;
  • non-linear optics from time propagation;
  • Quasiparticle corrections can now be calculated starting from hybrid functionals.

Extension of the p2y interface with Q UANTUM ESPRESSO.

Within YAMBO , p2y is the main interface with Q UANTUM ESPRESSO, reading, checking, and importing all data (such as crystal, electronic structure info, and wavefunctions) produced by the preliminary DFT steps. We have extended p2y capabilities by implementing:
(i) auto-recognition of the Q UANTUM ESPRESSO data formats;
(ii) paralll execution of p2y;
(iii) handling of non-linear core corrections (NLCC) and USPPs data.
In the past the user had to provide at configuration level the format of DFT data to interface with, internally handled by precompiler macros. If different data formats were used, YAMBO had to be recompiled. While supporting multiple QE formats (qexml, qexsd, qexsd+hdf5),
(i) we have added to p2y the capability of recognising the format, thereby superseding the need of user intervention. Moreover,
(ii) p2y can now be run in parallel (parallelism is expressed at the MPI level over conversion of wavefunction data blocks). This is particularly relevant when large scale systems are addressed, resulting in wavefunction volume easily larger than 100 GB. Together with the implementation of USPPs, we have also supported the use of NLCC
(iii), a pseudopotential option that broadens the class of potentials YAMBO can deal with.


Support to USPPs:

Norm-conserving pseudopotentials (NCPPs) are used in YAMBO to describe valence electrons. NCPPs can show high transferibility but, due to the norm conservation constraint, may also require the use of a large plane-wave basis set to obtain suitable pseudo-wavefunctions. In these conditions, GW calculations can be computationally demanding. In order to reduce the computational cost induced by the use of a high kinetic energy cutoff, we have implemented support for USPPs in YAMBO . USPPs lead to a reduction of the plane wave basis set used to describe the pseudo-wavefunctions. However, the implementation requires the evaluation of augmentation terms (often non-trivial to compute) that have to be included to account for wavefunction normalisation and, in turn, to properly evaluate matrix elements and observables.
The YAMBO implementation of USPPs have been achieved in three steps. First, (i) we have generated the external library (qe_pseudo). Then (ii) the library has been imported in YAMBO and the main interface layer built (mostly the initialisation of the USPP data). Finally, (iii) new routines specific to YAMBO (such as the augmentation of the matrix elements entering the response function) have been implemented.

For coding the interface with USPPs, we have taken advantage of the implementation already existing in Q UANTUM ESPRESSO. Some routines (mainly concerning the reading and handling of USPPs data and the calculation of augmentation contributions) have been extracted from Q UANTUM ESPRESSO and cast into the form of an external library (qe_pseudo), currently in beta form. The library is currently shared with YAMBO. As a follow up step, this module will be further developed as a self-standing library and made usabe via well defined and public APIs. This is part of the long standing modularization work carried on within MAX.


Parallel linear algebra distribution of response functions.

One of the most serious bottlenecks that is common to many of the calculations performed by YAMBO is the accumulation and storing in memory of the frequency dependent dielectric matrix X. This is commonly obtained as solution of the Dyson equation for the response function. In YAMBO this is written in the reciprocal space, therefore its dimension is directly connected to the number of plane waves used to represent the system under study. In the latest release we implemented an advanced slicing of the response function that is efficiently distributed in memory and workload. This slicing is peculiar to YAMBO and we coded ad hoc interfaces between the slicing and the blacs/scalapack structure. In this way all steps of the
Dyson equation are distributed in memory and, together with the use of the scalapack library, the dielectric matrix is never fully allocated in memory. This new feature allows us to overcome one of the most serious drawbacks of Many-Body ab-initio calculations.


SLEPC & PETSC support.

Solving the BSE implies the solution of eigenvalue problems for the two-particle Hamiltonian that in the e–h basis can be a matrix as large as 10^6 ×10^6 . The standard matrix full diagonalisation algorithm is available in YAMBO through the interface with the LAPACK and the ScaLAPACK libraries. Alternatively, when only the spectrum is required, YAMBO provides the iterative Haydock–Lanczos solver. The iterative approach is much faster, however it does not provide information on the excitonic wave-functions. Recently, YAMBO has been interfaced
with the SLEPc library which use objects and methods of the PETSc library to implement Krylov subspace algorithms to iteratively solve eigenvalue problems. These are used in YAMBO to obtain selected eigenpairs of the excitonic Hamiltonian. This allows the user to select a fixed number of excitonic states to be explicitly calculated, avoiding the full diagonalisation and thus saving a great amount of computational time and memory. The SLEPc solver makes it possible to obtain and plot exciton wave functions in large systems where the full diagonalisation might be computationally too demanding.


Non-linear optics.

With the last YAMBO release we made available a real–time approach to compute linear response absorption spectra via the solution of the Bethe–Salpeter Equation in real time, i.e. propagating of the one–body density matrix. In the present release we also make available a real–time approach to compute non linear response function, via the time propagation of single particle wave–functions. The approach is part of the official YAMBO release thanks to the merge into the YAMBO project of the developments which had been previously released in the Lumen code.


Alternative formulation and computation of dipole matrix elements.
The dipole matrix elements r nmk = hnk|r̂|mki are needed in YAMBO to compute the absorption spectrum and can be evaluated using the relation [r, H] = p + [r, V nl ]. Their calculation is quite demanding, due to the [r, V nl ] term, and its implementation has been strongly optimised and extended to account for projectors with angular momentum l > 2. We have also made available alternative strategies. The shifted grids approach uses wave-functions computed on four different grids in k-space, i.e. a starting k-grid plus three grids with k + q e i slightly shifted along the three Cartesian directions e x , e y , e z . Such approach is computationally more efficient, although it requires to generate more wave–functions. The Covariant approach exploits the definition of the position operator in k space: r = i∂ k . The dipole matrix elements are then evaluated as finite differences in between the k-point of a single regular grid. A five-point midpoint formula is used, with a truncation error O(∆k 4 ). For finite systems, finally, the dipole matrix elements can be directly evaluated in real space (R-space x approach).


GW calculations starting from hybrid functionals.

In the present release we have added in YAMBO the possibility to compute GW corrections starting from ground state calculated using hybrid functionals. This feature permits to achieve a better precision in GW calculations for materials where portion of exchange are needed for a good description of the ground state. The implementation of this feature consists in: (i) read the parameter of the xc functional from the Q UANTUM ESPRESSO output by using the new p2y interface (see sec.6.3), (ii) calculate the expected value of the exchange-correlation potential
using the libXC library and finally (iii) remove the divergency in the Fock term. Point (iii) has been realising by adding in YAMBO the possibility of truncating the interaction beyond the Wigner-Seitz supercell. The same scheme is shared in the Q UANTUM ESPRESSO code.