Menu

Reference.Programs.qm_matrix

Burkhard Schmidt

qm_matrix: Matrix (eigen) representations of important operators

Starting from a sequence of eigenenergies and eigenfunctions of a quantum mechanical Hamiltonian, typically generated by qm_bound, this function calculates matrix elements of dipole moments and polarizabilities along x and/or y (if applicable) and optionally also matrix elements of the system-bath-coupling, populations and/or projections. Thus, qm_matrix serves as bridge between the PDE based functions qm_bound and qm_propa and the ODE based functions qm_abncd and qm_propa and qm_optimal. The calculation of the matrix elements relies on the same numerical quadrature also underlying the DVR methods used in qm_bound and qm_propa.

  • Energies: δij Ei = ⟨i|H|j⟩

  • Dipole moments: μx,ij = ⟨i|μx|j⟩, μy,ij = ⟨i|μy|j⟩

  • Polarizabilities: αxx,ij = ⟨i|αxx|j⟩, αyy,ij = ⟨i|αyy|j⟩

  • System-bath coupling: χij = ⟨i|χ|j⟩

  • Additional multiplicative operators: to be used as control targets

  • Populations of eigenstates: to be used as control targets

  • Projections onto eigenstates: to be used as control targets

Source code

The MATLAB function qm_matrix.m can be found here

Note that qm_matrix.m works only with objects of the main classes given in the following table:

class name description
wave wavefunctions, represented on grids

Input parameters

parameter description
cutoff an optional parameter that serves to define a cut-off; matrix elements are set to zero if their absolute values are below the cut-off, which keeps the output files more compact.

The name of directory where wavefunctions are read from, as well as the filename(s), are taken from the respective properties of object state (of class wave), i.e.,

state.save_dir
state.save_file

For further information on how wavefunctions are saved and/or loaded, see also here.

You have to make sure that - while running bound state calculations with qm_bound, the sequence of wavefunctions is saved to unformatted Matlab data files which is achieved by the following code line

state.save_export = true;

File I/O

  • Typically, the required wavefunctions have to be generated previously by running qm_bound where they have to be saved in unformatted Matlab data files, see also our detailed description.

  • The resulting matrix elements are stored in properties M_... in object state and are written to file wave_0.mat in the current working directory. They can be used in a subsequent calculation of A, B, N, C, D matrices by running qm_abncd where there is a choice for TDSE (class ket) or LvNE (class rho) setting. These A, B, N, C, D matrices can then be used e.g. in bilinear control simulations by running qm_propa and/or in optimal control simulations qm_optimal and/or in model order reduction.

Algorithms

The numerical integrations are done using FBR/DVR (quadrature) schemes, see also our discussions of grids. Note that the FBR/DVR representations are the only place where classes/objects are used in the present MATLAB version of WavePacket.

  • MATLAB class for Fast Fourier Transform scheme can be found here

  • MATLAB class for Gauss-Hermite scheme can be found here

  • MATLAB class for Gauss-Legendre scheme can be found here

Variables

Note that function qm_init should be run previously in order to initialize all variables in use. Of particular interest are the following structures:


Related

Blog: 2019/02/version-530-released-30-may-2017
Wiki: Reference.Classes.wave
Wiki: Reference.Files.Main
Wiki: Reference.Programs.Main
Wiki: Reference.Programs.qm_abncd
Wiki: Reference.Programs.qm_bound
Wiki: Reference.Programs.qm_init
Wiki: Reference.Programs.qm_optimal
Wiki: Reference.Programs.qm_propa
Wiki: Reference.Variables.control
Wiki: Reference.Variables.hamilt
Wiki: Reference.Variables.time
Wiki: Users.Grids.Main
Wiki: Users.Matlab.Main
Wiki: Users.Saving.Main

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.