Numerical quantum dynamics using WavePacket: I. Closed quantum systems and discrete variable representations: Difference between revisions

From MaRDI portal
T4schmidt (talk | contribs)
mNo edit summary
T4schmidt (talk | contribs)
mNo edit summary
Line 37: Line 37:
== Model ==
== Model ==


Isolated molecules (e.g. single molecules in electric, magnetic, optical traps, or in dilute gases), can be modeled as closed quantum systems. Their bound states $\Psi_n$, along with the energies $E_n$, are obtained as solutions of the '''TISE'''
Isolated molecules (e.g. single molecules in electric, magnetic, optical traps, or in dilute gases), can be modeled as closed quantum systems. Their bound states <math>\Psi_n</math>, along with the energies <math>E_n</math>, are obtained as solutions of the '''TISE'''


<math> \hat{H}(R,-i\nabla_R,t) \Psi_n = E_n \Psi_n </math>
<math> \hat{H}(R,-i\nabla_R,t) \Psi_n = E_n \Psi_n </math>
Line 54: Line 54:


Due to the object-oriented concept and the open architecture, it is straightforward to add new classes for spatial discretizations.
Due to the object-oriented concept and the open architecture, it is straightforward to add new classes for spatial discretizations.
=== Variables ===
Using atomic units ([https://www.wikidata.org/wiki/Q757568 wikidata:Q757568]) throughout WavePacket software
{|
! Name
! Symbol
! Unit
|-
| number of bound states
| n_\mathrm{max}
| n.a.
|-
| initial time
| $t_0$
| a. t. u.
|-
| final time
| $t_f$
| a. t. u.
|-
| size of main time steps
| $\Delta t$
| a. t. u.
|-
| number of sub steps
| $n$
| n.a.
|-
| initial state
| $\Psi_0$
| n.a.
|}
=== Parameters ===
Definition of WavePacket's standard Hamiltonian. If applicable, interaction with external electric fields is treated within the semi-classical dipole approximation (TDSE only).
[ H=T(R,-i\nabla_R)1+V(R)-iW(R)1-F(t)\cdot\mu(R)-\frac{1}{2}F^2(t)\cdot\alpha(R) ]
{|
! Name
! Symbol
! Unit
|-
| spatial discretization
| $R$
| Bohr
|-
| kinetic energy
| $T(-i\nabla_R,R$)
| Hartree
|-
| potential energy
| $V(R,t)$
| Hartree
|-
| absorbing potential
| $W(R)$
| Hartree
|-
| electric field
| $F(t)$
| a. u.
|-
| dipole moment
| $\mu(R)$
| a. u.
|-
| polarizability
| $\alpha(R)$
| a. u.
|}
== Process Informationen ==
=== Process Steps ===
Essentially the same as above, thus doubling information given in section &quot;Procedure&quot; ?!?
{|
! Name
! Description
! Input
! Output
! Method
! Parameter
! Environment
! Mathematical Area
|-
| qm_setup
| Setup before simulations
| ---
| WavePacket object
| ---
| ---
| [https://de.mathworks.com/products/matlab.html Matlab]
| ---
|-
| qm_init
| Initialize specific simulation
| Set all input and parameters
| Initial state $\Psi(t_0)$
| ---
| ---
| [https://de.mathworks.com/products/matlab.html Matlab]
| ---
|-
| qm_bound
| Stationary wave functions
| Choose number of bound states
| Bound states $\Psi_n$, energies $E_n$
| Solving the TISE, see below
| All of the above parameters
| [https://de.mathworks.com/products/matlab.html Matlab]
| Numerical Mathematics
|-
| qm_propa
| Propagate wave functions
| Choose numerical propagator
| Intermediate and final states $\Psi(t_i)$
| Solving the TDSE, see below
| All of the above parameters
| [https://de.mathworks.com/products/matlab.html Matlab]
| Numerical Mathematics
|-
| qm_cleanup
| Purge after simulations
| ---
| ---
| ---
| ---
| [https://de.mathworks.com/products/matlab.html Matlab]
| ---
|}
=== Applied Methods ===
The WavePacket software packages encompasses several different methods for numerical propagation of quantum states in time. Due to the object-oriented concept and the open architecture, it is straightforward to add new classes for the implementation of further numerical schemes. The aim could/should be to evolve WavePacket into a &quot;laboratory&quot; for numerical quantum dynamics.
==== Solving the TISE ====
{|
! ID
! Name
! Process Step
! Parameter
! implemented by
|-
| [https://www.wikidata.org/wiki/Q52069558 wikidata:Q52069558]
| Fourier grid Hamiltonian
| Bound states
| $n_\mathrm{max}$
| WavePacket Software
|}
==== Solving the TDSE ====
{|
! ID
! Name
! Process Step
! Parameter
! implemented by
|-
| [https://www.wikidata.org/wiki/Q2311789 wikidata:Q2311789]
| Split-step method
| Propagation
| Time step $\Delta t$
| WavePacket Software
|-
| [https://www.wikidata.org/wiki/Q115616698 wikidata:Q115616698]
| Chebychev method
| Propagation
| Time step $\Delta t$
| WavePacket Software
|-
| [https://www.wikidata.org/wiki/Q115616932 wikidata:Q115616932]
| Second order differencing
| Propagation
| Time step $\Delta t$
| WavePacket Software
|}
Note: WikiData entries for the latter two methods were created by me (B. S.)
=== Software used ===
Software package: [https://sourceforge.net/projects/wavepacket/ WavePacket project at SourceForge]. This document is mainly on the mature and stable [https://sourceforge.net/projects/matlab.wavepacket.p/ Matlab/Octave version] of WavePacket. Note that there is also a [https://sourceforge.net/projects/cpp.wavepacket.p/ C++/Python version] which is still in an experimental phase (but making good progress recently). Both versions come with extended Wiki pages hosted along with the respective Sourceforge repositories.
{|
! ID
! Name
! Description
! Version
! Programming Language
! Dependencies
! versioned
! published
! documented
|-
| [https://sourceforge.net/projects/matlab.wavepacket.p/ SF.net]
| WavePacket
| Numerical quantum dynamics
| 7.0.0
| [https://de.mathworks.com/products/matlab.html Matlab]/[https://octave.org/ Octave]
| n.a.
| git, svn
| 3 papers, see below
| Wiki
|-
| [https://sourceforge.net/projects/cpp.wavepacket.p/ SF.net]
| WavePacket
| Numerical quantum dynamics
| 0.3.4
| C++/Python
| n.a.
| git
| no
| Wiki
|}
Documentation also available from this scientific article:
* Comp. Phys. Comm. (2017), [https://doi.org/10.1016/j.cpc.2016.12.007 doi:10.1016/j.cpc.2016.12.007]
=== Hardware ===
WavePacket should run on any hardware for which Matlab (and a licence) is available
{|
! ID
! Name
! Processor
! Compiler
! #Nodes
! #Cores
|-
|
|
|
|
|
|
|}
=== Input Data ===
All the input needed for a WavePacket simulation is encoded in a Matlab script called qm_init.m which has to be provided by the user. A large number of existing demo examples are expected to be very helpful for unexperienced users.
Essentially, the input data therein match everything given above, see sections on &quot;Variables&quot; and &quot;Parameters&quot;.
{|
! ID
! Name
! Size
! Data Structure
! Format Representation
! Format Exchange
! binary/text
! proprietary
! to publish
! to archive
|-
| -
| qm_init.m
| tiny
| Matlab script
| m-file
| [https://sourceforge.net/p/wavepacket/wiki/Demos.Main/ wiki]
| text
| yes
| yes
| yes
|}
=== Output Data ===
{|
! ID
! Name
! Size
! Data Structure
! Format Representation
! Format Exchange
! binary/text
! proprietary
! to publish
! to archive
|-
| -
| Log files, e.g. qm_propa.out
| tiny [kB]
| -
| txt-file
| -
| text
| no
| no
| yes
|-
| -
| Mat files: $E_n,\Psi_n,\Psi(t)$
| large [GB]
| -
| mat-file
| -
| binary
| yes
| no
| perhaps
|-
| -
| Figure files
| small [MB]
| -
| jpg, fig
| -
| binary
| no
| yes
| yes
|-
| -
| Animation
| small [MB]
| -
| mp4
| -
| binary
| no
| perhaps
| yes
|}
== Reproducibility ==
=== Mathematical Reproducibility ===
WavePacket reproduces several known analytic solutions of Schrödinger equations, see the [https://sourceforge.net/p/wavepacket/wiki/Demos.Adi/ demo examples on our Wiki pages]. Among them well-known cases such as the quantum harmonic oscillator and the Morse oscillator, but also less widespread ones such as the generalized pendulum which is an intriguing example for conditionally quasi-exactly solvability (CQES), see [https://www.wikidata.org/wiki/Q25111852 wikidata:Q25111852] and our 2017 work, [https://www.wikidata.org/wiki/Q59528631 wikidata:Q59528631].
=== Runtime Reproducibility ===
Not sure what to write here
=== Reproducibility of Results ===
Not sure what to write here
=== Reproducibility on original Hardware ===
Originally developed on Windows-PCs. No changes of the results upon migrating from Win7 to Win10 and Win11. (No surprise because it is Matlab!)
=== Reproducibility on other Hardware ===
Reproducibility is ensured for Linux and iOS. (No surprise because it is Matlab!)
a) Serial Computation
b) Parallel Computation
So far, no specific efforts were taken to make WavePacket suitable for parallel computation. However, at least on multi-core-CPUs Matlab automatically uses several cores, e.g., when doing Fourier transforms or standard Linear Algebra tasks.
=== Transferability to ===
a) similar model parameters (other initial and boundary values):
The WavePacket program package comes with a choice of different model functions for
* Kinetic energy operators $T(-i\nabla_R,R)$
* Potential energy functions $V(R)$
* Negative imaginary potentials $W(R)$
* Pulse shapes for electric fields $F(t)$
* (Permanent or transition) dipole moments $\mu(R)$
* Polarizability tensor $\alpha(R)$
* Initial quantum states $\Psi(t=0)$
If none of the provided model functions fits, the user has the choice either to write new ones or to provide tabulated data (→interpolation)
b) other models: Simulations of classical and quantum-classical dynamics also available within WavePacket using the same input, thus simulating ''exactly the same'' physical system. (This is a unique selling point)
= Legend =
The following abbreviations are used in the document to indicate/resolve IDs:
doi: DOI / [https://doi.org/ https://doi.org/]
sw: swMATH / [https://swmath.org/software/ https://swmath.org/software/]
zb: zbMATH / [https://zbmath.org/ https://zbmath.org/]
wikidata: [https://www.wikidata.org/wiki/ https://www.wikidata.org/wiki/]

Revision as of 13:59, 8 December 2022

Problem Statement

Numerical quantum dynamics, wikidata:Q7269042

For atoms, molecules and possible also other fields, including interaction of quantum systems with external fields within the semi-classical dipole approximation

Object of Research and Objective

Although WavePacket is made for general quantum systems, so far it has been developed/used mainly for describing the dynamics of molecules, i.e., typically the motion of the comprising nuclei. Especially when low masses (e.g. hydrogen atoms), low energies, and/or low temperatures are involved, the dynamics of the nuclei may be subject to quantum effects. Hence, the modeling of small molecules should be based on quantum mechanical modeling. Because of the computational effort increasing steeply (exponentially?) with the number of atoms, this can not be done for large molecules. However, due to recent advances both in computer hardware and in modeling/algorithms, the border between small and large is constantly shifting toward the latter ...

Procedure

<img src="flowchart.jpg" width="500" height="100">

  • qm_setup: Before WavePacket simulations, initialize a wave function object.
  • qm_init: Initialize your simulation scenario, i.e. potential and kinetic energy operators, spatial and temporal discretization, coupling to external fields, set initial state.
  • qm_bound: Solving the time-independent Schrödinger equation (TISE), i.e., calculate stationary bound states of a quantum system. Note that there is a substantial choice of spatial discretizations built-in for numerical solution of the TISE.
  • qm_propa: Solving the time-dependent Schrödinger equation (TDSE), i.e., propagate the state of a quantum state in time. Note that there is a substantial choice of different integration methods built-in for numerical solution of the TDSE.
  • qm_cleanup: After WavePacket simulations, clean up everything ...

Involved Disciplines

Connection to other MaRDI projects and to other NFDI consortia yet to be established

Data Streams

Not sure what to write here. In some of the other workflows, data streams from and to projects in other consortia are mentioned here

Model

Isolated molecules (e.g. single molecules in electric, magnetic, optical traps, or in dilute gases), can be modeled as closed quantum systems. Their bound states Ψn, along with the energies En, are obtained as solutions of the TISE

H^(R,iR,t)Ψn=EnΨn

Their dynamics is obtained as solution $\Psi(t)$ of the TDSE (wikidata:Q165498)

itΨ(t)=H^(R,iR,t)Ψ(t)

Discretization

  • Time (TDSE only): Equally spaced time steps; typically to be chosen inversely proportional to the spectrum of the spatially discretized Hamiltonian.
  • Space: For each degree of freedom there is a choice of the following pseudo-spectral discretizations
    • FFT methods, with equally spaced grid points: Mainly for molecular scattering, dissociation, association
    • Gauss-Hermite: Mainly for molecular vibrations
    • Gauss-Legendre: Mainly for molecular rotations

Due to the object-oriented concept and the open architecture, it is straightforward to add new classes for spatial discretizations.

Variables

Using atomic units (wikidata:Q757568) throughout WavePacket software

Name Symbol Unit
number of bound states n_\mathrm{max} n.a.
initial time $t_0$ a. t. u.
final time $t_f$ a. t. u.
size of main time steps $\Delta t$ a. t. u.
number of sub steps $n$ n.a.
initial state $\Psi_0$ n.a.

Parameters

Definition of WavePacket's standard Hamiltonian. If applicable, interaction with external electric fields is treated within the semi-classical dipole approximation (TDSE only).

[ H=T(R,-i\nabla_R)1+V(R)-iW(R)1-F(t)\cdot\mu(R)-\frac{1}{2}F^2(t)\cdot\alpha(R) ]

Name Symbol Unit
spatial discretization $R$ Bohr
kinetic energy $T(-i\nabla_R,R$) Hartree
potential energy $V(R,t)$ Hartree
absorbing potential $W(R)$ Hartree
electric field $F(t)$ a. u.
dipole moment $\mu(R)$ a. u.
polarizability $\alpha(R)$ a. u.

Process Informationen

Process Steps

Essentially the same as above, thus doubling information given in section "Procedure" ?!?

Name Description Input Output Method Parameter Environment Mathematical Area
qm_setup Setup before simulations --- WavePacket object --- --- Matlab ---
qm_init Initialize specific simulation Set all input and parameters Initial state $\Psi(t_0)$ --- --- Matlab ---
qm_bound Stationary wave functions Choose number of bound states Bound states $\Psi_n$, energies $E_n$ Solving the TISE, see below All of the above parameters Matlab Numerical Mathematics
qm_propa Propagate wave functions Choose numerical propagator Intermediate and final states $\Psi(t_i)$ Solving the TDSE, see below All of the above parameters Matlab Numerical Mathematics
qm_cleanup Purge after simulations --- --- --- --- Matlab ---

Applied Methods

The WavePacket software packages encompasses several different methods for numerical propagation of quantum states in time. Due to the object-oriented concept and the open architecture, it is straightforward to add new classes for the implementation of further numerical schemes. The aim could/should be to evolve WavePacket into a "laboratory" for numerical quantum dynamics.

Solving the TISE

ID Name Process Step Parameter implemented by
wikidata:Q52069558 Fourier grid Hamiltonian Bound states $n_\mathrm{max}$ WavePacket Software

Solving the TDSE

ID Name Process Step Parameter implemented by
wikidata:Q2311789 Split-step method Propagation Time step $\Delta t$ WavePacket Software
wikidata:Q115616698 Chebychev method Propagation Time step $\Delta t$ WavePacket Software
wikidata:Q115616932 Second order differencing Propagation Time step $\Delta t$ WavePacket Software

Note: WikiData entries for the latter two methods were created by me (B. S.)

Software used

Software package: WavePacket project at SourceForge. This document is mainly on the mature and stable Matlab/Octave version of WavePacket. Note that there is also a C++/Python version which is still in an experimental phase (but making good progress recently). Both versions come with extended Wiki pages hosted along with the respective Sourceforge repositories.

ID Name Description Version Programming Language Dependencies versioned published documented
SF.net WavePacket Numerical quantum dynamics 7.0.0 Matlab/Octave n.a. git, svn 3 papers, see below Wiki
SF.net WavePacket Numerical quantum dynamics 0.3.4 C++/Python n.a. git no Wiki

Documentation also available from this scientific article:

Hardware

WavePacket should run on any hardware for which Matlab (and a licence) is available

ID Name Processor Compiler #Nodes #Cores

Input Data

All the input needed for a WavePacket simulation is encoded in a Matlab script called qm_init.m which has to be provided by the user. A large number of existing demo examples are expected to be very helpful for unexperienced users.

Essentially, the input data therein match everything given above, see sections on "Variables" and "Parameters".

ID Name Size Data Structure Format Representation Format Exchange binary/text proprietary to publish to archive
- qm_init.m tiny Matlab script m-file wiki text yes yes yes

Output Data

ID Name Size Data Structure Format Representation Format Exchange binary/text proprietary to publish to archive
- Log files, e.g. qm_propa.out tiny [kB] - txt-file - text no no yes
- Mat files: $E_n,\Psi_n,\Psi(t)$ large [GB] - mat-file - binary yes no perhaps
- Figure files small [MB] - jpg, fig - binary no yes yes
- Animation small [MB] - mp4 - binary no perhaps yes

Reproducibility

Mathematical Reproducibility

WavePacket reproduces several known analytic solutions of Schrödinger equations, see the demo examples on our Wiki pages. Among them well-known cases such as the quantum harmonic oscillator and the Morse oscillator, but also less widespread ones such as the generalized pendulum which is an intriguing example for conditionally quasi-exactly solvability (CQES), see wikidata:Q25111852 and our 2017 work, wikidata:Q59528631.

Runtime Reproducibility

Not sure what to write here

Reproducibility of Results

Not sure what to write here

Reproducibility on original Hardware

Originally developed on Windows-PCs. No changes of the results upon migrating from Win7 to Win10 and Win11. (No surprise because it is Matlab!)

Reproducibility on other Hardware

Reproducibility is ensured for Linux and iOS. (No surprise because it is Matlab!)

a) Serial Computation

b) Parallel Computation

So far, no specific efforts were taken to make WavePacket suitable for parallel computation. However, at least on multi-core-CPUs Matlab automatically uses several cores, e.g., when doing Fourier transforms or standard Linear Algebra tasks.

Transferability to

a) similar model parameters (other initial and boundary values):

The WavePacket program package comes with a choice of different model functions for

  • Kinetic energy operators $T(-i\nabla_R,R)$
  • Potential energy functions $V(R)$
  • Negative imaginary potentials $W(R)$
  • Pulse shapes for electric fields $F(t)$
  • (Permanent or transition) dipole moments $\mu(R)$
  • Polarizability tensor $\alpha(R)$
  • Initial quantum states $\Psi(t=0)$

If none of the provided model functions fits, the user has the choice either to write new ones or to provide tabulated data (→interpolation)

b) other models: Simulations of classical and quantum-classical dynamics also available within WavePacket using the same input, thus simulating exactly the same physical system. (This is a unique selling point)

Legend

The following abbreviations are used in the document to indicate/resolve IDs:

doi: DOI / https://doi.org/

sw: swMATH / https://swmath.org/software/

zb: zbMATH / https://zbmath.org/

wikidata: https://www.wikidata.org/wiki/