Skip to content

Libra with TC-NBRA, MASH, FSSH2, revDISH, revised TSH and Ehrenfest, phase-corrected exact calculations

Compare
Choose a tag to compare
@alexvakimov alexvakimov released this 26 Nov 23:21
· 341 commits to master since this release

1. Structural changes and paradigm changes

  • Restructured the libra_py library to set all the package-specific modules into a separate sub-library. Adapted importing
    libraries based on packages folder

  • Simplified the interface of hop proposal, hop acceptance, and hop handling functions, as well as dish - these all
    are now taking the dyn_variables input rather than individual variables of all kinds

  • Moved DISH coherence time updates inside dish function, added other decoherence options although they are not doing anything - just for completeness

2. New major capabilities

  • [src/nHamiltonian and src/dyn]: The phase/state-consistency transformations (a.k.a local diabatization transformations)
    are now applied directly to element of the nHamiltonian object right after the new diabatic-to-adiabatic transformation is computed
    they are removed right before re-computing the time-overlaps at the next dynamical step. This way, the Hamiltonian properties
    are well-behaved and can be used both the TSH and Ehrenfest methods. This makes the Ehrenfest method conserve energy even in the adiabatic
    basis when NACs are used, as well as using the NAC-based integrators in the TD-SE integration of the TSH methods. This is a very
    critical change that hopefully makes the current implementation more reliable and robust than before.

  • [src/dyn]: added themrally-correct NBRA (TC-NBRA) approach

  • [src/dyn]: initial implementations of the Exact Factorization (XF) and mixed quantum-classical XF (MQCXF) methods

  • [src/dyn]: Implemented MASH scheme

  • [src/dyn]: Implemented FSSH2 scheme of Leonardo Araujo

  • [src/dyn]: A new implementation of the DISH method, it is suitable for NBRA workflow too

  • [src/dyn/wfcgrid2]: Added a phase-consistency correction to the diabatic-to-adiabatic transformation matrices computed at all grid points.
    This change is important since otherwise the kinetic energy calculations won't converge with dx due to highly-oscillatory behavior of the
    wavefunction in regions of strong nonadiabaticity. With this correction, the energy conservation is now much more robust and the convergence
    of kinetic energy w.r.t. the grid's dx is achieved. The wavefunctions are well-behaved too.

  • [src/math_meigen]: Added Cholesky decomposition of real matrices

  • [libra_py.models]: Added Ferretti Hamiltonian

  • [src/dyn]: added Voronoi tesselaiton scheme and initial conditions sampling based on it

  • [libra_py.dynamics.exact]: Added a new capability to the exact propagation function to save the wavefunction snapshots into files for their
    later plotting and animation. Updated the corresponding functions' documentation.

  • [libra_py.packages.cp2k.methods]: Added analysis function for pdos, exc analysis, energy vs time to CP2K methods

3. Improvements and new minor capabilities

Dynamics

  • Made the velocity rescaling happening only if the initial and final states are different

  • Added the option to save the derivative coupling vectors along the trajectory

CP2K and NBRA

  • Fixed the cp2k input generator script so that the calculations are more robust, correct, and lead to convergences

  • Added new functionality to CP2K input generator for hybrid functionals

  • Updated CP2K input generator

  • Added new functions for computing MO coefficients + description of functions

  • Added "restart_file" parameter for step_2. It is useful for big systems to have the initial guess of SCF orbitals

  • Added isUKS implementation of open-shell systems. In Step3 of cp2k interacing-code, modified some functions to
    account for systems with different numbers of electrons in alpha and beta channels.

QTSH

  • implemented an auxiliary function needed in kinematic momentum calculations for QTSH

GWP

  • added derivatives of the GWP functions, in a somewhat different style

4. Bug fixes and documentation

src/dyn

  • Fixed the bug with the velocity rescaling of only the quantum nuclear DOFs

  • Fixed some bug that was breaking even normal FSSH, modified interface of the hop acceptance function to give a bit more flexibility

src/nHamiltonian

  • Fixed a bug in the copy_content function of the nHamiltonian class where it would copy diabatic time-overlap into the
    adiabstic one, also added new functions to transform the elements of the nHamiltonian class according to certain
    transformation matrix, there are several kinds of such transformations with the same matrix - forward,backward, explicit, implicit or normalizing

DISH

  • fixed a bug in the existing implementation of the DISH method

QTAG

  • Adding a careful documentation and somewhat revising the interfaces of the QTAG functions, added new auxiliary ones

Models

  • Fixed a bug in Holstein_gen function that would create an incorrect size of the first derivatives matrix

CP2K

  • Added some documentation in the cp2k input generation module

  • Fixed reading of TDDFT data in CP2K v23 - a very important fix, because it sometimes led to strange
    energies, especially of the ground state.

MFSD

  • Fixed the implementation of the Shwartz decoherence times, also included the options to account for the local diabatization
    approximation in computing MF forces, added some documentation on the related functions, fixed some bugs in MFSD -
    the effective NAC calculations, momentum rescaling. The momentum rescaling and corresponding Hamiltonian update
    functions are also added in the main dynamics module for MFSD. Fixed more bugs in the mfsd code - the calculations of the
    Ehrenfest energies was not done correctly. Also, fixed the generic code for computing Ehrenfest energies - need to split by the trajectories

dynamics_plotting and data_visualize

  • updated the decomentation of the dynamics_plotting function that plots surface and fixed a bug of not having the
    output directory to store figures produced

  • Revised dynamics_plotting and data_visualize modules, added some documentation, added new member functions to the dyn_variables class

step2 of NBRA

  • Fixed the reindexing function for isUKS=True

step3 of NBRA

  • Debugging and revisiting mapping functions for Slater determinant calculations of NACs
    Added new mapping module with fully revised math and simplified interface

DFTB+

  • Fixed some functions in DFTB+ package for it to be used in current NA-MD procedures, added documentation,
    got rid of the critical params, replaced them by default onese, fixed a minor bug in the dftb run_step2 function
    so the overlaps are now correct, changed the number of result objects returned by the do_step function

  • Fixed the DFTB+ methods for reading time-overlap matrices - made them more robust to the known problem of having NaN
    and wrong values in the off-diagonal blocks of the super-molecule overlap matrix calculations

FT

  • Updated the documentation of the ft2 function in the ft module

5. Cleaning up

  • Removed deprecated dynamics tutorials

  • Removed the DFTB time-overlap calculation tutorials. Moved the tutorial to the Tutorials_Libra repo and revised it

  • Removed excessive output from libint2 code

  • Cleaned up some commented and unnecessary code in the Dynamics.cpp and related files

  • Revised the LZ workflow, removed deprecated or obsolete functionality and keywords

  • Removed the examples of ACF and FT calculations. Now moved to the Tutorials_Libra repository