Difference between revisions of "Step.m"
(Update function See also links and function index membership) |
(sync with Spinach main f053e432: manual Liouvillian assembly L=H+1i*R+1i*K, author list from head header) |
||
| Line 7: | Line 7: | ||
==Parameters== | ==Parameters== | ||
| − | |||
| − | |||
L - Liouvillian or Hamiltonian to be used for propagation; | L - Liouvillian or Hamiltonian to be used for propagation; | ||
| Line 15: | Line 13: | ||
right} are supplied, and piecewise-quadratic rule if | right} are supplied, and piecewise-quadratic rule if | ||
three matrices {left, midpoint, right} are supplied. | three matrices {left, midpoint, right} are supplied. | ||
| + | If L is assembled manually from Hamiltonian commutation | ||
| + | superoperator H, relaxation superoperator R, and kinetics | ||
| + | superoperator K, use L=H+1i*R+1i*K. | ||
State-dependent evolution generators are also supported: | State-dependent evolution generators are also supported: | ||
if L{1} is a function handle, L{2} is current time, and | if L{1} is a function handle, L{2} is current time, and | ||
| Line 46: | Line 47: | ||
==Notes== | ==Notes== | ||
| − | |||
This function originally used a faithful Krylov process, but testing found it inferior to the reordered Taylor process now used in the implementation. The current algebraic operation order is designed to minimise memory footprint in large cases. | This function originally used a faithful Krylov process, but testing found it inferior to the reordered Taylor process now used in the implementation. The current algebraic operation order is designed to minimise memory footprint in large cases. | ||
| Line 53: | Line 53: | ||
[[evolution.m]], [[krylov.m]], [[propagator.m]], [[shaped_pulse_xy.m]], [[shaped_pulse_af.m]], [[cosy.m]], [[hsqc.m]], [[isergen.m]], [[iserstep.m]], [[steady.m]], [[Kernel_functions]] | [[evolution.m]], [[krylov.m]], [[propagator.m]], [[shaped_pulse_xy.m]], [[shaped_pulse_af.m]], [[cosy.m]], [[hsqc.m]], [[isergen.m]], [[iserstep.m]], [[steady.m]], [[Kernel_functions]] | ||
| − | ''Version 2.8, authors: [[Ilya Kuprov]], [[Luke Edwards]], [[Anupama Acharya]]'' | + | ''Version 2.8, authors: [[Ilya Kuprov]], [[Luke Edwards]], [[Anupama Acharya]], C Musselwhite'' |
Latest revision as of 08:39, 30 August 2026
Propagation step function. Computes the action by a matrix exponential without computing that exponential. Supports one-, two-, and three-point product quadratures.
Syntax
rho=step(spin_system,L,rho,time_step)
Parameters
L - Liouvillian or Hamiltonian to be used for propagation;
centre point piecewise-constant rule if one matrix is
supplied, piecewise-linear rule if two matrices {left,
right} are supplied, and piecewise-quadratic rule if
three matrices {left, midpoint, right} are supplied.
If L is assembled manually from Hamiltonian commutation
superoperator H, relaxation superoperator R, and kinetics
superoperator K, use L=H+1i*R+1i*K.
State-dependent evolution generators are also supported:
if L{1} is a function handle, L{2} is current time, and
L{3} is the method, the problem is routed to iserstep.m
rho - state vector or density matrix
time_step - length of the time step to take
Outputs
rho - state vector or density matrix
Examples
A 90-degree pulse in X phase on protons:
Lx=operator(spin_system,'Lx','1H'); rho=step(spin_system,Lx,rho,pi/2);
A 1 millisecond evolution period under a Hamiltonian H:
rho=step(spin_system,H,rho,1e-3);
A 45-degree pulse with a 60-degree phase on carbon:
Lx=operator(spin_system,'Lx','13C'); Ly=operator(spin_system,'Ly','13C'); rho=step(spin_system,cosd(60)*Lx+sind(60)*Ly,rho,pi/4);
See also the source code of shaped_pulse_xy.m and most NMR pulse sequences (cosy.m, hsqc.m, and others) for examples of this function being used.
Notes
This function originally used a faithful Krylov process, but testing found it inferior to the reordered Taylor process now used in the implementation. The current algebraic operation order is designed to minimise memory footprint in large cases.
See also
evolution.m, krylov.m, propagator.m, shaped_pulse_xy.m, shaped_pulse_af.m, cosy.m, hsqc.m, isergen.m, iserstep.m, steady.m, Kernel_functions
Version 2.8, authors: Ilya Kuprov, Luke Edwards, Anupama Acharya, C Musselwhite