Significant refactoring of the code, Local diabatization and more #176
Closed
alexvakimov
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Code restructuring:
significantly restructured the code (via the tsh_revision branch). Now, the dynamics code
is much more compact, clean, and consistent. New functions are added in a modular way to
enable more compact coding of the may computational workflow.
reducing the nesting levels and making it more modular: the hamiltonian library and namespaces
are broken into atomistic (for MM and QM) and models (collection Hamiltonians) modules
the nhamiltonian library and namespace is made top-level, to avoid unnecessary dependencies
all the dynamical variables are now held in the
dyn_variables
class. Functions are coded totake this data class. Withing it, the amplitudes or density matrix variables can be used, the conversion
functions (including from-to different representations are available)
Added cctor and memory status check functions to the nHamiltonian class - now it all works fine, removed the
implementation of the propagators that dependend on the projectors, added auxiliary Hamiltonian as an input parameter
to the compute_dynamics function and reflected that in the Python wrapper function, changed the compute_St functions
to take two nHamiltonian objects as input, removed the use of Uprev variable in the compute_dynamics function,
since it is now deprecated
New methods and variables:
the local diabatization approach and multiple electronic integrators are added: There are algorithms based on
matrix exponential, rotation, and others (e.g. QTAG-like). The integrators are available for diabatic and adiabatic
representations.
the propagation in terms of density matrix is now available (solving the QCLE). The QCLE integrators are coded.
added Shenvi-Subotnik-Yang (SSY) phase correction algorithm (to fix the decoherence-induced phase effects)
added Zhu's Liouvillian-based phase correction method (developed as an alternative to the SSY method)
added Zhu-Nakamura (ZN) hop attempt probability.
new dynamical control variables added to provide a more convenient definition of the computing recipes
added new electronic integrator in the diabatic basis - according to the qtag approach
added new control variables for various schemes of variables updates, added new functions for computing hopping probabilities in a more efficent way
added generalized Holstein Hamiltonian
reactivated BCSH and DISH methods
added packages.cp2k module that implements an input generator for cp2k
added Morse model Hamiltonians and the parameterization of Coronado-Xing-Miller
Deprecations and removals:
the external_hamiltonian class/namespace is deprecated
the Ensemble class is deprecated
update_Hamiltonian_ functions are deprecated in favor of the new general version
removed a lot of unnecessary (commented or not) C++ code in files in the dyn module (e.g. Dynamics.cpp, Energy_and_Forces.cpp, etc.)
the state tracking and phase correction approaches are deprecated in lieu of the local diabatization-based
approaches: the original one of Granucci, Persico, and Toniolo + a number of other interators derived in the
TCA paper (to be published)
Many old nearly duplicate or confusing functions for electronic integration are removed to clean up the code, yet to keep
the essential functionality.
moved tutorial on plotting model Hamiltonians to the CyberTraining repo
removed outdated QTAG examples
Fixes:
fixed a minor but important bug in GFSH; the algorithm is now working
fixed the false fail of the SDM (mSDM) method which could happen under certain conditions when the populations
on a given state is close to 1.0
Misc:
revised and simplified the installation instructions (including building a suitable Conda environment)
simplified and optimized build/compillation scripts, started using precompiled headers (PCH)
made the C++ code compatible with the C++11 stnadard
Other notable changes:
improved quality of dynamics_plotting plots and added new options for plotting
Added plotting of the time-resolved Hamiltonians, time-overlaps and projections
changed NULL to nullptr
This discussion was created from the release Significant refactoring of the code, Local diabatization and more.
Beta Was this translation helpful? Give feedback.
All reactions