Giter Club home page Giter Club logo

wave_train's Introduction

WaveTrain

by Jerome Riedel, Patrick Gelß, and Burkhard Schmidt

Freie Universität Berlin, Germany

WaveTrain-Logo

Short description

WaveTrain is an open-source software for numerical simulations of chain-like quantum systems with nearest-neighbor (NN) interactions only (with or without periodic boundary conditions). This Python package is centered around tensor train (TT, or matrix product) representations of quantum-mechanical Hamiltonian operators and (stationary or time-evolving) state vectors. WaveTrain builds on the Python tensor train toolbox scikit_tt, which provides efficient construction methods, storage schemes, as well as solvers for eigenvalue problems and linear differential equations in the TT format.

WaveTrain comprises solvers for time-independent and time-dependent Schrödinger equations employing TT decompositions to construct low-rank representations. Often, the TT ranks of state vectors are found to depend only marginally on the chain length N, which results in the computational effort growing only slightly more than linearly in N, thus mitigating the curse of dimensionality. Thus, WaveTrain complements the existing WavePacket project at SourceForge which does not offer these advantages but which can be used for general Hamiltonians, i.e., without restriction to chain-like systems.

As a complement to the Python classes for full quantum mechanics, WaveTrain also contains classes for fully classical and mixed quantum-classical (Ehrenfest or mean field) dynamics of bipartite ("slow-fast" and/or "heavy-light") systems. Moreover, the graphical capabilities allow visualization of quantum dynamics ‘on the fly’, with a choice of several different graphical representations based on reduced density matrices.

Full description

For a detailed description of the WaveTrain software, see our article that appeared in April 2023 in J. Chem. Phys.1.

Installation

After downloading and installing the Python tensor train toolbox scikit_tt, installation of the WaveTrain software package is straightforward

pip install git+https://github.com/PGelss/scikit_tt
pip install wave_train 

where pip belongs to a Python installation with minimum version requirement 3.7.0. For a developer installation you can download the latest version of WaveTrain to your local computer by using the 'git clone' command.

git clone https://github.com/PGelss/wave_train.git 
cd wave_train
python setup.py install --user

Applications

see our work on solving the TISE2 and TDSE3 for coupled excitons and phonons

Footnotes

  1. J. Riedel, P. Gelß, R. Klein, and B. Schmidt, "WaveTrain: A Python Package for Numerical Quantum Mechanics of Chain-Like Systems Based on Tensor Trains", J. Chem. Phys. 158 (16), 164801 (2023)

  2. P. Gelß, R. Klein, S. Matera, B. Schmidt, "Solving the Time-Independent Schrödinger Equation for Chains of Coupled Excitons and Phonons using Tensor Trains", J. Chem. Phys. 156 (2), 024109 (2022)

  3. P. Gelß, R. Klein, S. Matera, and B. Schmidt, "Quantum Dynamics of Coupled Excitons and Phonons in Chain-Like Systems: Tensor Train Approaches and Higher-Order Propagators", arXiv:2302.03725

wave_train's People

Contributors

bsch63 avatar jeriedel avatar pgelss avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

wave_train's Issues

Classify Hamiltonians

The available Hamiltonians should be classified by two Boolean attributes|properties:

  • classical: Whether or not a system has a well-defined classical limit. If yes (e.g. class Phonon), then CEoM (classical equations of motion) simulations may be considered as an approximation to full quantum mechanics.
  • bipartite: Whether or not a system is bipartite, i.e. comprising two classes of particles. If yes (e.g. class Coupled), then QCMD (hybrid quantum–classical molecular dynamics) simulations may be considered as an approximation to full quantum mechanics.

The goal of this issue is to replace all queries for the names of classes (Exciton, Phonon, Coupled) by queries for these two attributes|properties. Thus, it should open the way toward designing new classes for other Hamiltonians.

Smart limits for y-axis of energy plots

  • Bei TISE wird offenbar der Achsen-Bereich aus den analytischen Lösungen genommen, wenn vorhanden. Also alles bestens!
  • Wenn bei TISE keine analytischen Lösungen vorhanden sind, werden die Werte genommen, die der Nutzer selbst als Attribute von einer Instanz (meist 'dynamics') der TISE-Klasse einsetzt. Ist zwar nicht so komfortabel, aber anders geht es halt nicht. Also auch OK.
  • Bei CEoM ist auch schon alles schön, siehe Abb. 5 in unserem Manuskript.
  • Bei QCMD ist auch schon alles schön, siehe Abb. 6 in unserem Manuskript.
  • Bei TDSE wird offenbar der Energie-Bereich automatisch auf 0...1 gesetzt, siehe Abb. 3 & 4 in unserem Manuskript. Könntest Du (Jerome) das vielleicht noch verbessern? Mir (Burkhard) schwebt vor, einfach den Anfangswert der Energie E_0 zu nehmen (der sollte ja verfügbar sein), und dann ein Intervall von 0.99 E_0 ... 1.01 E_0 zu nehmen, wenn E_0 positiv ist. Oder 1.01 E_0 ... 0.99 E_0 wenn E_0 negativ ist.

Pauli matrices

Use also Pauli matrices as default observables. Calculate (and plot?) their expectation values for every (main!) time step.

From ACF to absorption spectrum

During TDSE (and QCMD) propagations we are calculating autocorrelation functions (ACFs) which are good for two purposes:

  • Comparison with WavePacket (Matlab/Octave), but only for N not large
  • Calculate absorption spectrum as (power) Fourier transform of ACF

Problem with uncertainties

Occasionally, problems arise when calculating quantum-mechanical uncertainties, see *.err files created by 'curta' batch jobs.
Probably, the following line in method observe in class QuantumMechanics is not smart enough:

np.real_if_close ( np.sqrt(self.pos_squa[i,j] - self.position[i,j]**2), tol=TOLERANCE )

and similarly for the momenta

Console output also to logfile

It would be nice to have the console output to be written in parallel to a log-file, for documentation purposes etc. That log-file should have the same filename as the input Python script, but with extension .txt or .log. Hence, in analogy to the image (.png) and animation (.mp4) output that WaveTrain already produces routinely.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.