bss_ops.m
Bloch-Siegert response operators for the optimal control module. For each control channel, returns the operator whose coefficient in every time slice of a GRAPE optimisation is the square of the physical control amplitude on that channel. The operator collects the second-order Bloch-Siegert frequency shifts of every spin in the system:
B=sum_n (gamma_n/gamma_c)^2*[1/(2*(omega_n+omega_c))
+(foreign isotopes only) 1/(2*(omega_n-omega_c))]*Lz_n
where omega_n are signed laboratory frame Zeeman frequencies from spin_system.inter.basefrqs and omega_c is the signed carrier frequency of the channel. Spins belonging to the isotope that the channel addresses receive only the never-resonant term because their resonant term is the control operator itself, which GRAPE propagates exactly. Foreign isotopes receive both terms, which sum into the Ramsey shift omega_n*omega_1n^2/(omega_n^2-omega_c^2).
Non-spin particles, that is, those whose entry in spin_system.comp.types is not 'S', are skipped. The longitudinal operators are built with operator.m and accumulated into a preallocation from mprealloc.m; the result is stored without a clean_up.m call because the matrix elements scale as inverse Zeeman frequencies and are legitimately small. The consistency check rejects a zero carrier frequency and any channel for which an omega_n+omega_c or, for foreign isotopes, an omega_n-omega_c denominator is degenerate to within one part in a million of the carrier frequency.
Syntax
resp_ops=bss_ops(spin_system,channels,carrier_frq)
Parameters
channels - cell array of isotope strings, one per
control operator, e.g. {'1H','1H'} for
an X,Y control operator pair
carrier_frq - row vector of signed carrier frequencies
(rad/s), one per control operator; for a
transmitter on resonance this is the value
of inter.basefrqs for the channel isotope
Outputs
resp_ops - cell array of Bloch-Siegert response ope-
rators, one per control operator, in the
formalism of the spin system provided
See also
bloch_siegert.m, optimcon.m, operator.m, mprealloc.m, Optimal control module
Version 2.13, authors: Ilya Kuprov