Evolution.m

From Spinach Documentation Wiki
Jump to: navigation, search

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.