# Evolution.m

From Spinach Documentation Wiki

Time evolution function. Performs all types of time propagation with automatic trajectory level state space restriction. Syntax:

answer=evolution(spin_system,L,coil,rho,timestep,... nsteps,output,destination)

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.

Calculation of final states and observables in Hilbert space is parallel- ized and tested all the way to 128-core (16 nodes, 8 cores each) configu- rations. Parallelization of the trajectory calculation does not appear to yield any benefits due to large amount of inter-thread communication.

See http://dx.doi.org/10.1063/1.3679656 for further information.