# Doublerot.m

Fokker-Planck double angle spinning context. Generates a Liouvillian superoperator and passes it on to the pulse sequence function, which should be supplied as a handle. Syntax:

answer=doublerot(spin_system,pulse_sequence,parameters,assumptions)

where pulse sequence is a function handle to one of the pulse sequences located in the experiments directory, assumptions is a string that would be passed to assume.m when the Hamiltonian is built and parameters is a structure with the following subfields:

parameters.rate_outer - outer rotor spinning rate in Hz

parameters.rate_inner - inner rotor spinning rate in Hz

parameters.axis_outer - spinning axis of the outer rotor, given as a normalized 3-element vector

parameters.axis_inner - spinning axis of the inner rotor, given as a normalized 3-element vector

parameters.rank_outer - maximum harmonic rank to retain in the solution (increase till conver- gence is achieved, approximately equal to the number of spinning si- debands in the spectrum) for the outer rotor

parameters.rank_inner - maximum harmonic rank to retain in the solution (increase till conver- gence is achieved, approximately equal to the number of spinning si- debands in the spectrum) for the inner rotor

parameters.rframes - rotating frame specification, e.g. {{'13C',2},{'14N,3}} requests second order rotating frame transformation with respect to carbon-13 and third order rotating frame transformation with respect to nitrogen-14

Additional subfields may be required by the pulse sequence. The parameters structure is passed to the pulse sequence with the following additional parameters set:

parameters.spc_dim - matrix dimension for the spatial dynamics subspace

parameters.spn_dim - matrix dimension for the spin dynamics subspace

This function returns the powder average of whatever it is that the pulse sequence returns.

Note: arbitrary order rotating frame transformation is supported, inc- luding infinite order. See the header of rotframe.m for further information.

Note: the state projector assumes a powder -- single crystal DOR is not currently supported.