Compute pulse propagators.
U = propint(H0,H1,tp,freq) U = propint(H0,H1,tp,freq,phase) U = propint(H0,H1,tp,freq,phase,n) [U,SaveU] = propint(...) U = propint(SaveU,tp,freq) U = propint(SaveU,tp,freq,phase)
propint
computes a pulse propagator by numerically integrating
t=tp(1)
to t=tp(2)
using steps of dt = 1/freq/n
.
H0
is the static Hamiltonian, H1
the time-dependent one.
They should both be in units of MHz.
tp
is a 2-element vector with the start and end time of the pulse in μs, freq
is the irradiation frequency ν in MHz.
phase
gives the initial phase φ in radians (default is 0).
n
gives the number of intervals in which one period of the propagation is
divided, its default is 256.
The resulting propagator is returned in U
. If propagators of more than one pulse,
but the same H0
and H1
are wanted, then one should retrieve SaveU
from the first call to propint
.
[Ua,SaveU] = propint(myH0,myH1,tpa,freq);
It contains intermediate integration results which can be reused in the next call.
In that case use the calling form where SaveU
is passed as argument instead
of H0
and H1
.
Ub = propint(SaveU,tpb,freq);
The savings in computation time are enormous. While the first call might take some time, the second call finishes in an instant.
A resonant π/2 pulse for a spin-1 would be represented by the propagator
Sz = sop(1,'z'); Sy = sop(1,'y'); % S=1 system mwFreq = 10e3; tp = 0.010; % 10 GHz, 10 ns U = propint(mwFreq*Sz,1/2/tp*Sy,tp,mwFreq)
U = 0.5000 + 0.0006i -0.7071 - 0.0004i 0.5000 + 0.0000i 0.7071 + 0.0004i 0.0000 - 0.0000i -0.7071 + 0.0004i 0.5000 + 0.0000i 0.7071 - 0.0004i 0.5000 - 0.0006i
A resonant π pulse on an two-spin system gives a propagator
spins = [1/2 1/2]; Sz = sop(spins,'ze'); Sy = sop(spins,'ye'); mwFreq = 10e3; tp = 0.010; % 10 GHz, 10 ns U = propint(mwFreq*Sz,1/tp*Sy,tp,mwFreq)
U = 0.0000 + 0.0012i 0 -1.0000 + 0.0000i 0 0 0.0000 + 0.0012i 0 -1.0000 + 0.0000i 1.0000 - 0.0000i 0 0.0000 - 0.0012i 0 0 1.0000 - 0.0000i 0 0.0000 - 0.0012i
This propagator inverts populations in the density matrix.
Density0 = -Sz; NewDensity = U*Density0*U'
NewDensity = 0.5000 + 0.0000i 0 -0.0000 - 0.0012i 0 0 0.5000 + 0.0000i 0 -0.0000 - 0.0012i -0.0000 + 0.0012i 0 -0.5000 0 0 -0.0000 + 0.0012i 0 -0.5000