Difference between revisions of "Evolution.m"
(→Arguments) |
|||
| Line 10: | Line 10: | ||
L - the Liouvillian to be used during evolution | L - the Liouvillian to be used during evolution | ||
| − | + | ||
rho - the initial state vector or a horizontal stack thereof | rho - the initial state vector or a horizontal stack thereof | ||
| − | + | ||
output - a string giving the type of evolution that is required | output - a string giving the type of evolution that is required | ||
| − | + | ||
'final' - returns the final state vector or a horizontal | 'final' - returns the final state vector or a horizontal | ||
stack thereof. | stack thereof. | ||
| − | + | ||
'trajectory' - returns the stack of state vectors giving | 'trajectory' - returns the stack of state vectors giving | ||
the trajectory of the system starting from | the trajectory of the system starting from | ||
rho with the user-specified number of steps | rho with the user-specified number of steps | ||
and step length. | and step length. | ||
| − | + | ||
'total' - returns the integral of the observable trace | 'total' - returns the integral of the observable trace | ||
from the simulation start to infinity. This | from the simulation start to infinity. This | ||
option requires the presence of relaxation. | option requires the presence of relaxation. | ||
| − | + | ||
'refocus' - evolves the first vector for zero steps, | 'refocus' - evolves the first vector for zero steps, | ||
second vector for one step, third vector for | second vector for one step, third vector for | ||
| Line 32: | Line 32: | ||
stage of evolution in the indirect dimension | stage of evolution in the indirect dimension | ||
after a refocusing pulse. | after a refocusing pulse. | ||
| − | + | ||
'observable' - returns the time dynamics of an observable | 'observable' - returns the time dynamics of an observable | ||
as a vector (if starting from a single ini- | as a vector (if starting from a single ini- | ||
tial state) or a matrix (if starting from a | tial state) or a matrix (if starting from a | ||
stack of initial states). | stack of initial states). | ||
| − | + | ||
'multichannel' - returns the time dynamics of several | 'multichannel' - returns the time dynamics of several | ||
observables as rows of a matrix. Note | observables as rows of a matrix. Note | ||
| Line 43: | Line 43: | ||
less efficient when there are multiple | less efficient when there are multiple | ||
destinations to screen against. | destinations to screen against. | ||
| − | + | ||
coil - the detection state, used when 'observable' is specified as | coil - the detection state, used when 'observable' is specified as | ||
the output option. If 'multichannel' is selected, the coil | the output option. If 'multichannel' is selected, the coil | ||
should contain multiple columns corresponding to individual | should contain multiple columns corresponding to individual | ||
observable vectors. | observable vectors. | ||
| − | + | ||
destination - (optional) the state to be used for destination state | destination - (optional) the state to be used for destination state | ||
screening. | screening. | ||
| Line 55: | Line 55: | ||
L - Hamiltonian matrix | L - Hamiltonian matrix | ||
| − | + | ||
coil - observable operator (if any) | coil - observable operator (if any) | ||
| − | + | ||
rho - initial density matrix | rho - initial density matrix | ||
| − | + | ||
timestep - duration of a single time step (seconds) | timestep - duration of a single time step (seconds) | ||
| − | + | ||
nsteps - number of steps to take | nsteps - number of steps to take | ||
| − | + | ||
output - a string giving the type of evolution that is required | output - a string giving the type of evolution that is required | ||
| − | + | ||
'final' - returns the final density matrix. | 'final' - returns the final density matrix. | ||
| − | + | ||
'trajectory' - returns a cell array of density matrices | 'trajectory' - returns a cell array of density matrices | ||
giving the trajectory of the system star- | giving the trajectory of the system star- | ||
ting from rho with the user-specified num- | ting from rho with the user-specified num- | ||
ber of steps and step length. | ber of steps and step length. | ||
| − | + | ||
'refocus' - evolves the first matrix for zero steps, | 'refocus' - evolves the first matrix for zero steps, | ||
second matrix for one step, third matrix for | second matrix for one step, third matrix for | ||
| Line 78: | Line 78: | ||
stage of evolution in the indirect dimension | stage of evolution in the indirect dimension | ||
after a refocusing pulse. | after a refocusing pulse. | ||
| − | + | ||
'observable' - returns the time dynamics of an observable | 'observable' - returns the time dynamics of an observable | ||
as a vector. | as a vector. | ||
| − | + | ||
destination - this argument is ignored. | destination - this argument is ignored. | ||
| − | |||
| − | |||
==Outputs== | ==Outputs== | ||
Revision as of 14:43, 27 August 2018
Time evolution function. Performs all types of time propagation with automatic trajectory level state space restriction (https://doi.org/10.1016/j.jmr.2008.08.008).
Contents
Syntax
answer=evolution(spin_system,L,coil,rho,timestep,nsteps,output,destination)
Arguments
Arguments for Liouville space calculations:
L - the Liouvillian to be used during evolution
rho - the initial state vector or a horizontal stack thereof
output - a string giving the type of evolution that is required
'final' - returns the final state vector or a horizontal
stack thereof.
'trajectory' - returns the stack of state vectors giving
the trajectory of the system starting from
rho with the user-specified number of steps
and step length.
'total' - returns the integral of the observable trace
from the simulation start to infinity. This
option requires the presence of relaxation.
'refocus' - evolves the first vector for zero steps,
second vector for one step, third vector for
two steps, etc., consistent with the second
stage of evolution in the indirect dimension
after a refocusing pulse.
'observable' - returns the time dynamics of an observable
as a vector (if starting from a single ini-
tial state) or a matrix (if starting from a
stack of initial states).
'multichannel' - returns the time dynamics of several
observables as rows of a matrix. Note
that destination state screening may be
less efficient when there are multiple
destinations to screen against.
coil - the detection state, used when 'observable' is specified as
the output option. If 'multichannel' is selected, the coil
should contain multiple columns corresponding to individual
observable vectors.
destination - (optional) the state to be used for destination state
screening.
Arguments for Hilbert space calculations:
L - Hamiltonian matrix
coil - observable operator (if any)
rho - initial density matrix
timestep - duration of a single time step (seconds)
nsteps - number of steps to take
output - a string giving the type of evolution that is required
'final' - returns the final density matrix.
'trajectory' - returns a cell array of density matrices
giving the trajectory of the system star-
ting from rho with the user-specified num-
ber of steps and step length.
'refocus' - evolves the first matrix for zero steps,
second matrix for one step, third matrix for
two steps, etc., consistent with the second
stage of evolution in the indirect dimension
after a refocusing pulse.
'observable' - returns the time dynamics of an observable
as a vector.
destination - this argument is ignored.
Outputs
output - description of the output
output - description of the output
description of the output
Notes
- Calculation of final states and observables in Hilbert space is parallelised (http://dx.doi.org/10.1063/1.3679656) and tested all the way to 128-core (16 nodes, 8 cores each) configuations. Parallelization of the trajectory calculation does not appear to yield any benefits due to large amount of inter-thread communication.
- One-off propagation events (e.g. a hard pulse) should be computed with step.m, which is more efficient inthose cases.
- For extremely large Liouvillians that cannot be exponentiated, use krylov.m, which avoids matrix exponentials.
See also
step.m, krylov.m, reduce.m, propagator.m
Version 2.2, authors: Ilya Kuprov, Luke Edwards, Ohad Levinkron