# powder.m

Static powder interface to pulse sequences. Generates a Liouvillian superoperator, the initial state and the coil state, then passes them on to the pulse sequence function.

## Syntax

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


## Arguments

 pulse_sequence       -  pulse sequence function handle. See the
experiments directory for the list of
pulse sequences that ship with Spinach.

parameters.spins     -  a cell array giving the spins that the
pulse sequence works on, in the order
of channels, e.g. {'1H','13C'}

parameters.offset    -  a cell array giving transmitter offsets
in Hz on each of the spins listed in
parameters.spins

parameters.grid      - powder averaging grid

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. When
this option is used, the assumptions
on the respective spins should be
laboratory frame.

parameters.needs   - a cell array of strings specifying additional
information required by the sequence:

'zeeman_op' - Zeeman part of the Hamiltonian
in the laboratory frame, to be placed into
parameters.hseeman and sent to pulse sequence

'aniso_eq' - thermal equilibrium is recomputed
using the full anisotropic Hamiltonian at the
current orientation, and sent to the pulse
sequence in parameters.rho0 subfield

parameters.sum_up   - when set to 1 (default), returns the
powder average. When set to 0, returns
individual answers for each point in
the powder as a cell array.

parameters.*       - additional subfields may be required by your
pulse sequence - check its documentation page

assumptions     -  context-specific assumptions ('nmr', 'epr',
'labframe', etc.) - see the pulse sequence
header for information on this setting.


## Outputs

This function returns a powder average of whatever it is that the pulse sequence returns. If a structure is returned by the pulse sequence, the structures are powder averaged field-by-field.

## Examples

There are over 100 examples using this context in the example set. The following cases are representative:

dnp_solids/crosspol_powder_static_1.m - electron-nuclear cross-polarisation DNP

esr_solids/hyscore_nitroxide_powder.m - HYSCORE spectrum of a nitroxide radical

giant_spin/triple_dy_eqmag_temp.m - temperature dependence of equilibrium magnetisation in a dysprosium cluster

nmr_solids/cp_powder_match_3.m - Hartmann-Hahn matching condition under MAS

## Notes

1. THIS IS FOR STATIC POWDERS - use singlerot.m for MAS simulations.
2. Arbitrary order rotating frame transformation is supported, including infinite order. See the header of rotframe.m for further information.
3. The function supports parallel processing via Matlab's Distributed Computing Toolbox - different system orientations are evaluated on different labs.