Lumen 2.0

From Lumen wiki
Jump to navigationJump to search
Lumen 2.0 release was supported by the EU through the TIMES MSCA-DN

Lumen 2.0 patches



Release Notes

This is the first release of the lumen code, after the reboot based on yambo 5.3

Main new features

  • Exciton-phonon coupling: in Lumen 2.0 a novel interface with the electron-phonon (epc) couplings computed with ph.x has been implemented. The epc are computed by a dedicated code (LetzElphC [1]) which is not part of the lumen-code project. The new epc are gauge consistent with other quantities computed in the code. An example of application is the calculation of exciton-phono couplings. See tutorial: Exciton-phonon coupling and luminescence
  • WFs phases: The phase matrix of the wave-functions (“D” in eq. 8 here: [2]) is now computed. This is needed for applying symmetry rotations to the excitonic WFs in the exciton-phonon workflow.
  • Chirped laser pulses: Lumen can handle a list of laser pulses with different shapes and properties. In lumen 2.0 also chirped laser pulses can be introduced. This is controlled by the field characteristic Field1_chirp= X.XX fs, which adds a linear chirping. An associated tool in ypp for generating and plotting external fields is also available.
  • Laser pulses from external file: If you need to include a pulse with a very specific shape in a time-propagation simulation, in Lumen 2.0 you can read vector potential from simple text files. The neede file is very simple, and can be also generated with YamboPy. See for example the tutorial: Real-time dynamics with external field read from file
  • BSE and real time with frozen states: Simulations of optical properties in materials often require the construction of very large excitonic matrices, due to the large number of k-points and also of valence and conduction bands needed for convergence. However, some specific peaks are mostly dictated by a few specific bands. In Lumen 2.0 specific bands can be selected via a new input variable. This can be useful to study (semi)core-spectroscopy. The same approach can be also used in real-time propagation. See tutorial: Bands selection in BSE and application to semi-core states
  • Conversion of BSE kernel into HSEX collisions for real-time propagation: With Lumen 2.0 collisions can be generated by converting them directly from the BSE kernel. See tutorial: Collisions from BSE
  • Real-time propagation for spin-polarized systems: Real time dynamics simulations can now be performed on spin-polarized systems
  • Kerr: The off-diagonal elements of the dielectric tensor epsilon_ij can contain both a symmetric component and a anti-symmetric component (with respect to swapping “i” and “j”). In lumen 2.0, by setting in input BSEprop=”kerr asymm” it is possible to directly compute the asymmetric part, which is the one originating the kerr effect.
  • New dephasing in the non-linear optics module: written in terms of the one body density-matrix
  • Ypp plotting: magnons wave-functions can now be plotted (similar to excitons wave-functions). For both, one can choose either the “fixed-hole” or the “fixed-electron” mode. In the past only fixed hole mode was available. This is controlled by the new input variable CenterKind=”hole” # Hole or Electron which can be set in input
  • Gama Only mode: Lumen can now be compiled with a new flag useful for calculations on isolated systems: --enable-gamma-only. This turns the wave-function in real-space into real variables (as opposed to complex variables) and gives a factor 2 reduction in the requested memory. To be used on top of a GAMMA_ONLY calculation with QE. In this mode some integrals in real space can also be cut by removing point space where the density is smaller than a given threshold (highly experimental).
  • WFs history in yambo_nl: history of time dependent wave-functions can now be stored in a database for later post-processing.

Code optimization

  • Slepc with coupling: Via a collaboration with the Slepc developers team (i) we optimized the Slepc solver in the coupling case, and (ii) gpu ported the solver.
  • Elpa and Scalapack interface: The interface with the Scalapack library has been re-written, based on a novel library (Ldiago) available as a standalone library under the lumen-code gitlab repository ([3]). The same library is also used for an interface with the ELPA library. Performances for both the Slepc solver and the Scalapack/ELPA solvers on both CPU and GPU are described here: [4]
  • Calculation of Xo response function in G-space: The implementation of the Xo response function has been re-written by taking advantage of lapack GEMM. The new implementation is fully GPU ported by using devxlib_xGEMM interface. Roughly a factor 2 speed-up is obtained and also a memory reduction of a factor 2 for the allocation of the G-space response function.
  • Fock parallelism level introduced: Now the evaluation of the exchange (Fock) self-energy can be parallelized in an independent way w.r.t. the correlation self-energy, since the two calculations are rather different (exchange does not need to explicitly use empty bands)

Fixes

  • Dichroism dipoles: The definition of orbital dipoles for dichroism (implementation exact only for the case of isolated systems) has been fixed,since a wrong conjg factor was present
  • Magnons: Some fixes in the magnons implementation
  • Compilation with Intel compiler 2025 fixed
  • Fixed misspelled threshold
  • Fixed linking with libxc > 6.0
  • Many fixes to driver

More

  • Common databases produced by yambo_rt & yambo_nl:
  • Added symmetrization of polarization and current in Yambo_nl (with residual symms)
  • a2y now supports the elph project. This is used to generate ndb.GKKP_expanded starting from abinit run. See new a2y_gkkp subroutine
  • Old q=0 implementation of PL recovered
  • Renaming of orbital dipoles and definition of new quantities for ongoing project: compute Magneto-Electric tensor.
  • Elph bands now can be specified over a finite range
  • Defined k%g_table alongside of k%k_table and k%s_table
  • k_small_grp subroutine related to ongoing developments to extract the small group of a give k/q point
  • Overlaps IO moved in an independent subroutine
  • Overlaps can use WFs on the fly or full allocation
  • Degeneration_finder procedure now works also with integers
  • Compression of collisions in yambo_nl
  • Calculation of “full bse kernel” (without exploiting the pseudo-hermitian structure) can be imposed. For testing purposes.
  • Derk dipoles coded, although not yet 100% working
  • Headers reorganisation. All headers moved before the subroutines and y_memory_alloc module defined
  • Internal NetCDF updated to version:  4.9.3
  • Internal HDF5     updated to version:  1.14.6
  • Internal Slepc and Petsc updated to version 3.24.0
  • Internal Slepc and Petsc are now compiled in parallel
  • Compatibility with old and newer Petsc and Slepc versions coded
  • Added vscode suggested configuration files
  • Simple gitlab CI created
  • AUTHORS list re-ordered
  • “make gpl” removed. Lumen is 100% GPL
  • Setup can be performed also in “k+q” convention. The default one “k-q” is always used in practice.
  • Removed some line of code for serial I/O
  • Old io_Vnl removed

Updates and fixes included in tag 2.0.1

  • Added ford documentation (first version)
  • Fixed long standing issue with finite-q bse with SOC, by defining the double-point group
  • Fixed long standing openMP bug in HF
  • Fixed performance issue in qindx_B distribution in BSE (switched from HDF5 I/O to MPI WinCreate)
  • Improved Slepc messaging
  • Added extra timer to BSE kernel
  • Added dumping to excph derived absorption
  • NL damping improved
  • performance change in X_irredux_residuals