# ensemble.m

A parallel wrapper around GRAPE that enables ensemble optimal control optimisations.

## Syntax

    [fidelity,gradient,hessian]=ensemble(waveform,spin_system)


## Description

This function handles systems with multiple control power levels, multiple resonance offsets, multistate transfers, and ensembles of drift Liouvillians.

## Arguments

  waveform  - control coefficients for each control operator, rad/s


## Returns

  fidelity      - figure of merit for the overlap of the current state
of the system and the desired state(s). When penalty
methods are specified, fidelity is returned as an ar-
ray separating the penalties from the simulation
fidelity.

sequence. When penalty methods are specified, gradi-
ent is returned as an array separating penalty gra-

hessian       - Hessian of the fidelity with respect to the control
sequence. When penalty methods are specified, gradi-
ent is returned as an array separating penalty Hes-
sians from the fidelity Hessian.


## Notes

This is a low level function that is not designed to be called directly. Use grape_xy.m and grape_phase.m instead.