krylov.m
Krylov propagation function. Avoids matrix exponentiation, but can be slow. Should be used when Liouvillian exponential does not fit into memory, but Liouvillian itself does. This function only supports Liouville space formalisms.
Syntax
answer=krylov(spin_system,L,coil,rho,time_step,nsteps,output)
Parameters
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.
Outputs
answer - a vector or a matrix, depending on the options set during
the call.
Notes
GPUs are supported, add 'gpu' to sys.enable array during calculation setup.
See also
evolution.m, step.m, propagator.m, isergen.m, iserstep.m, steady.m, Kernel_functions
Version 2.2, authors: Ilya Kuprov