Numerical quantum dynamics using WavePacket: II. Open quantum systems, optimal control, and model reduction: Difference between revisions
mNo edit summary |
Adding a wiki paage about the dynamics of open quantum systems |
||
Line 1: | Line 1: | ||
*Author: Burkhard Schmidt, [https://orcid.org/0000-0002-9658-499X ORCID:0000-0002-9658-499X], personal web page: [https://www.qcmd.info www.qcmd.info] | *Author: Burkhard Schmidt, [https://orcid.org/0000-0002-9658-499X ORCID:0000-0002-9658-499X], personal web page: [https://www.qcmd.info www.qcmd.info] | ||
[[Category:Workflow]] | [[Category:Workflow]] | ||
* Publication listed at [https://zbmath.org/1448.93039 zbMATH] | |||
* Software not yet listed at [https://zbmath.org/software swMATH] | |||
<img src="Logo.jpg" width="100" height="100"> | |||
== Problem Statement == | |||
Numerical quantum dynamics, [https://www.wikidata.org/wiki/Q7269042 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. | |||
=== Procedure === | |||
<img src="flowchart.jpg" width="500" height="100"> | |||
* '''qm_matrix''': Generate matrix (state space) representations of relevant operators | |||
* '''qm_abncd''': Setup bilinear control problem, either for TDSE or for LvNE | |||
* '''qm_balance''': Perform balancing transformation of controllability and observability | |||
* '''qm_truncate''': Perform simple truncation of balanced representation ''or'' singular perturbation approximation | |||
* '''qm_H2model''': Perform H2 optimal model reduction | |||
* '''qm_propa''': Propagation of full or reduced system without given temporal profile of control fields | |||
* '''qm_optimal''': Propagation of full or reduced system with optimization of temporal profile of control fields | |||
=== Involved Disciplines === | |||
* Theoretical Chemistry, [https://www.wikidata.org/wiki/Q321150 wikidata:Q321150] | |||
* Femto-chemistry, see, e.g., 1996 nobel prize in chemistry for A.H.Zewail, [https://www.wikidata.org/wiki/Q106624 wikidata:Q106624] | |||
* Molecular physics, [https://www.wikidata.org/wiki/Q489328 wikipedia:Q489328] | |||
Connection to other MaRDI projects and to other NFDI consortia yet to be established. Perhaps a cooperation with Benner/Saak at MPI-DCTS? | |||
=== 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 == | |||
For the case of molecules in thermal contact with their environment (e.g. molecules in solution phase or impurities in a solid), the Liouville-von Neumann equation (LvNE, [https://www.wikidata.org/wiki/Q2533076 wikidata:Q2533076]) with Lindblad operators describing dephasing and|or dissipation has to be solved for the density operator|matrix <math>\rho(t)</math> | |||
<math> i \frac{\partial}{\partial t}\rho(t)=[H(R,-i\nabla_R,t),\rho(t)] </math> | |||
=== Discretization === | |||
* Time: Equally spaced time steps; typically to be chosen inversely proportional to the spectrum of the Hamiltonian. | |||
* Space: A state space (aka energy space) representation is used here, based on bound states calculated with qm_bound, see [https://portal.mardi4nfdi.de/wiki/Numerical_quantum_dynamics_using_WavePacket:_I._Closed_quantum_systems_and_discrete_variable_representations quantum dynamics workflow I]. | |||
=== Variables === | |||
Using atomic units ([https://www.wikidata.org/wiki/Q757568 wikidata:Q757568]) throughout WavePacket software | |||
{| | |||
! Name | |||
! Symbol | |||
! Unit | |||
|- | |||
| number of bound states | |||
| <math>n_\mathrm{max}</math> | |||
| n.a. | |||
|- | |||
| initial time | |||
| <math>t_0</math> | |||
| a. t. u. | |||
|- | |||
| final time | |||
| <math>t_f</math> | |||
| a. t. u. | |||
|- | |||
| size of main time steps | |||
| <math>\Delta t</math> | |||
| a. t. u. | |||
|- | |||
| number of sub steps | |||
| <math>n</math> | |||
| n.a. | |||
|- | |||
| initial state | |||
| <math>\Psi_0</math> | |||
| n.a. | |||
|- | |||
| decay rates | |||
| <math>\Gamma</math> | |||
| 1 / a.t.u. | |||
|- | |||
| dimension of truncated model | |||
| <math>d_t</math | |||
| n.a. | |||
|- | |||
| dimension of reduced model | |||
| <math>d_r</math | |||
| n.a. | |||
|} | |||
=== Parameters === | |||
Definition of WavePacket's standard Hamiltonian. If applicable, interaction with external electric fields <math>F(t)</math> through dipole moments <math>\mu(R)</math> and/or polarizabilities <math>\alpha(R)</math> is treated within the semi-classical dipole approximation. | |||
<math> 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) </math> | |||
{| | |||
! Name | |||
! Symbol | |||
! Unit | |||
|- | |||
| spatial discretization | |||
| <math>R</math> | |||
| Bohr | |||
|- | |||
| kinetic energy | |||
| <math>T(-i\nabla_R,R)</math> | |||
| Hartree | |||
|- | |||
| potential energy | |||
| <math>V(R,t)</math> | |||
| Hartree | |||
|- | |||
| absorbing potential | |||
| <math>W(R)</math> | |||
| Hartree | |||
|- | |||
| electric field | |||
| <math>F(t)</math> | |||
| a. u. | |||
|- | |||
| dipole moment | |||
| <math>\mu(R)</math> | |||
| a. u. | |||
|- | |||
| polarizability | |||
| <math>\alpha(R)</math> | |||
| a. u. | |||
|- | |||
| system-bath-coupling | |||
| <math>C_{ij}</math> | |||
| 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_matrix | |||
| Generate matrix representations | |||
| Cutoff for setting matrix elements to zero | |||
| Matrix elements of quantum operators | |||
| Numerical quadratures | |||
| Most of the above parameters | |||
| [https://de.mathworks.com/products/matlab.html Matlab] | |||
| Numerical Mathematics | |||
|- | |||
| qm_abncd | |||
| Setup bilinear control problem | |||
| Matrix elements of quantum operators | |||
| Matrices A,B,N,C,D used in bilinear control | |||
| TDSE or LvNE with dephasing, dissipation | |||
| Decay rates | |||
| [https://de.mathworks.com/products/matlab.html Matlab] | |||
| Quantum mechanics | |||
|- | |||
| qm_balance | |||
| Perform balancing transformation | |||
| Unbalanced matrices A,B,N,C,D | |||
| Balanced matrices A',B',N',C',D' | |||
| Balancing controllability vs. observability | |||
| n. a. | |||
| [https://de.mathworks.com/products/matlab.html Matlab] | |||
| Model order reduction | |||
|- | |||
| qm_truncate | |||
| Truncate balanced representation | |||
| Balanced matrices A',B',N',C',D' | |||
| Truncated matrices A'',B'',N'',C'',D'' | |||
| Truncation ''or'' singular perturbation theory | |||
| dimension of truncated model | |||
| [https://de.mathworks.com/products/matlab.html Matlab] | |||
| Model order reduction | |||
|- | |||
| qm_H2model | |||
| Perform H2 optimal model reduction | |||
| Full matrices A,B,N,C,D | |||
| Reduced matrices A',B',N',C',D' | |||
| ℋ2-Optimal Model Reduction | |||
| dimension of reduced model | |||
| [https://de.mathworks.com/products/matlab.html Matlab] | |||
| Model order reduction | |||
|- | |||
| qm_propa | |||
| Propagation with given control fields | |||
| Choose ODE solver | |||
| Intermediate and final states <math>\Psi(t_i)</math> or <math>\rho(t_i)</math> | |||
| Solving sets of coupled ODEs | |||
| Matrices A,B,N,C,D | |||
| [https://de.mathworks.com/products/matlab.html Matlab] | |||
| Numerical Mathematics | |||
|- | |||
| qm_optimal | |||
| Optimization of control fields | |||
| Choose ODE solver | |||
| Intermediate and final states <math>\Psi(t_i)</math> or <math>\rho(t_i)</math> | |||
| Optimal control of quantum system | |||
| Matrices A,B,N,C,D | |||
| [https://de.mathworks.com/products/matlab.html Matlab] | |||
| Optimal control theory | |||
|} | |||
=== Applied Methods === | |||
The WavePacket software packages encompasses several different methods for solving sets of coupled ordinary differential equations (ODEs) 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. | |||
{| | |||
! ID | |||
! Name | |||
! Process Step | |||
! Parameter | |||
! implemented by | |||
|- | |||
| [https://www.wikidata.org/wiki/Q1028945 wikidata:Q1028945] | |||
| Generalized Lyapunov equation | |||
| qm_balance | |||
| convergence of iteration | |||
| WavePacket Software | |||
|- | |||
| [https://www.wikidata.org/wiki/Q3730848 wikidata:Q3730848] | |||
| Generalized Sylvester equation | |||
| qm_H2model | |||
| convergence of iteration | |||
| WavePacket Software | |||
|- | |||
| [https://www.wikidata.org/wiki/Q725944 wikidata:Q725944] | |||
| Runge-Kutta ODE solvers | |||
| qm_propa | |||
| time steps | |||
| WavePacket Software | |||
|- | |||
| [https://www.wikidata.org/wiki/Q57604851 wikidata:Q57604851] | |||
| Quantum Optimal Control Theory | |||
| qm_optimal | |||
| time steps, initial guess of control fields | |||
| WavePacket Software | |||
|} | |||
=== 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 | |||
| 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 | |||
|} | |||
Extensive documentation is also available from this scientific article: | |||
* Comp. Phys. Comm. (2018), [https://doi.org/10.1016/j.cpc.2018.02.022 doi:10.1016/j.cpc.2018.02.022] | |||
=== 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 | |||
| tiny [kB] | |||
| 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 output: qm_xyz.out | |||
| tiny [kB] | |||
| - | |||
| txt | |||
| - | |||
| text | |||
| no | |||
| no | |||
| yes | |||
|- | |||
| - | |||
| Optimal control field: <math>F(t)</math> | |||
| medium [MB] | |||
| - | |||
| mat | |||
| - | |||
| binary | |||
| yes | |||
| no | |||
| yes | |||
|- | |||
| - | |||
| Wave functions/densities: <math>\Psi(t),\rho(t)</math> | |||
| large [GB] | |||
| - | |||
| mat | |||
| - | |||
| binary | |||
| yes | |||
| no | |||
| perhaps | |||
|- | |||
| - | |||
| Figures | |||
| small [MB] | |||
| - | |||
| jpg, fig | |||
| - | |||
| binary | |||
| no | |||
| yes | |||
| yes | |||
|- | |||
| - | |||
| Animation | |||
| small [MB] | |||
| - | |||
| mp4 | |||
| - | |||
| binary | |||
| no | |||
| perhaps | |||
| yes | |||
|} | |||
== Reproducibility == | |||
=== Mathematical Reproducibility === | |||
Not sure what to write here | |||
=== 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 <math>T(-i\nabla_R,R)</math> | |||
* Potential energy functions <math>V(R)</math> | |||
* Negative imaginary potentials <math>W(R)</math> | |||
* Pulse shapes for electric fields <math>F(t)</math> | |||
* (Permanent or transition) dipole moments <math>\mu(R)</math> | |||
* Polarizability tensor <math>\alpha(R)</math> | |||
* Initial quantum states <math>\Psi(t=0)</math> | |||
* System-bath-coupling <math>C_{ij}</math> | |||
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 19:41, 13 December 2022
- Author: Burkhard Schmidt, ORCID:0000-0002-9658-499X, personal web page: www.qcmd.info
- Publication listed at zbMATH
- Software not yet listed at swMATH
<img src="Logo.jpg" width="100" height="100">
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.
Procedure
<img src="flowchart.jpg" width="500" height="100">
- qm_matrix: Generate matrix (state space) representations of relevant operators
- qm_abncd: Setup bilinear control problem, either for TDSE or for LvNE
- qm_balance: Perform balancing transformation of controllability and observability
- qm_truncate: Perform simple truncation of balanced representation or singular perturbation approximation
- qm_H2model: Perform H2 optimal model reduction
- qm_propa: Propagation of full or reduced system without given temporal profile of control fields
- qm_optimal: Propagation of full or reduced system with optimization of temporal profile of control fields
Involved Disciplines
- Theoretical Chemistry, wikidata:Q321150
- Femto-chemistry, see, e.g., 1996 nobel prize in chemistry for A.H.Zewail, wikidata:Q106624
- Molecular physics, wikipedia:Q489328
Connection to other MaRDI projects and to other NFDI consortia yet to be established. Perhaps a cooperation with Benner/Saak at MPI-DCTS?
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
For the case of molecules in thermal contact with their environment (e.g. molecules in solution phase or impurities in a solid), the Liouville-von Neumann equation (LvNE, wikidata:Q2533076) with Lindblad operators describing dephasing and|or dissipation has to be solved for the density operator|matrix
Discretization
- Time: Equally spaced time steps; typically to be chosen inversely proportional to the spectrum of the Hamiltonian.
- Space: A state space (aka energy space) representation is used here, based on bound states calculated with qm_bound, see quantum dynamics workflow I.
Variables
Using atomic units (wikidata:Q757568) throughout WavePacket software
Name | Symbol | Unit | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
number of bound states | n.a. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
initial time | a. t. u. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
final time | a. t. u. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
size of main time steps | a. t. u. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
number of sub steps | n.a. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
initial state | n.a. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
decay rates | 1 / a.t.u. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dimension of truncated model | through dipole moments and/or polarizabilities is treated within the semi-classical dipole approximation.
Process InformationenProcess StepsEssentially the same as above, thus doubling information given in section "Procedure" ?!?
Applied MethodsThe WavePacket software packages encompasses several different methods for solving sets of coupled ordinary differential equations (ODEs) 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.
Software usedSoftware 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.
Extensive documentation is also available from this scientific article:
HardwareWavePacket should run on any hardware for which Matlab (and a licence) is available
Input DataAll 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".
Output DataReproducibilityMathematical ReproducibilityNot sure what to write here Runtime ReproducibilityNot sure what to write here Reproducibility of ResultsNot sure what to write here Reproducibility on original HardwareOriginally 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 HardwareReproducibility 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 toa) similar model parameters (other initial and boundary values): The WavePacket program package comes with a choice of different model functions for
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) LegendThe 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/ |