Difference between revisions of "Evolution.m"
(Created page with "Time evolution function. Performs all types of time propagation with automatic trajectory level state space restriction. Syntax: answer=evolution(spin_system,L,coil,...") |
|||
| Line 1: | Line 1: | ||
| − | Time evolution function. Performs all types of time propagation with | + | {{DISPLAYTITLE:evolution.m}} |
| − | automatic trajectory level state space restriction. | + | 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). |
| − | + | ==Syntax== | |
| − | |||
| + | answer=evolution(spin_system,L,coil,rho,timestep,nsteps,output,destination) | ||
| + | |||
| + | ==Arguments== | ||
Arguments for Liouville space calculations: | Arguments for Liouville space calculations: | ||
| Line 82: | Line 84: | ||
destination - this argument is ignored. | 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]]'' | ||
Revision as of 14:42, 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