Difference between revisions of "Powder.m"

From Spinach Documentation Wiki
Jump to: navigation, search
(Update function See also links and function index membership)
 
(20 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{DISPLAYTITLE:powder.m}}
+
{{DISPLAYTITLE:powder.m}} __NOTOC__
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.
+
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==
 
==Syntax==
  
    answer=powder(spin_system,pulse_sequence,parameters,assumptions)
 
  
==Arguments==
+
    [answer,sph_grid]=powder(spin_system,pulse_sequence,...
   pulse_sequence       - pulse sequence function handle. See the
+
                                parameters,assumptions)
                          experiments directory for the list of
+
 
                          pulse sequences that ship with Spinach.
+
==Parameters==
 
+
 
   parameters.spins     - a cell array giving the spins that the
+
   pulse_sequence     - pulse sequence function handle. See the
                          pulse sequence works on, in the order
+
                      experiments directory for the list of
                          of channels, e.g. {'1H','13C'}
+
                      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    - name of the [[Appendix I: powder grids|spherical averaging grid]]
 +
                      file (see the grids directory in the
 +
                      kernel).
 +
 +
  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.offset    - a cell array giving transmitter offsets
+
   parameters.needs  - a cell array of strings specifying ad-
                          in Hz on each of the spins listed in
+
                      ditional information required by the
                          parameters.spins
+
                      sequence:
 
   
 
   
  parameters.grid      - name of the spherical averaging grid
+
                      'zeeman_op' - Zeeman part of the Hami-
                          file (see the grids directory in the
+
                      ltonian in the laboratory frame, to be
                          kernel).
+
                      placed into parameters.hzeeman and sent
 +
                      to the pulse sequence
 
   
 
   
  parameters.rframes  - rotating frame specification, e.g.
+
                      'aniso_eq' - thermal equilibrium is re-
                        {{'13C',2},{'14N,3}} requests second
+
                      computed using the full anisotropic Ha-
                        order rotating frame transformation
+
                      miltonian at each orientation, and sent
                        with respect to carbon-13 and third
+
                      to pulse sequence via parameters.rho0
                        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
+
  parameters.rho0   - initial state; may be a function handle
                       information required by the sequence:
+
                       that depends on the three Euler angles
 +
                      in ZYZ active convention
 
   
 
   
                      'zeeman_op' - Zeeman part of the Hamiltonian
+
  parameters.serial - if set to true, disables automatic pa-
                      in the laboratory frame, to be placed into
+
                       rallelisation
                       parameters.hseeman and sent to pulse sequence
 
 
   
 
   
                      'aniso_eq' - thermal equilibrium is recomputed
+
  parameters.sum_up - if set to false, causes the pulse sequ-
                       using the full anisotropic Hamiltonian at the
+
                       ence output at each orientation to be
                      current orientation, and sent to the pulse
+
                       returned instead of the powder average
                       sequence in parameters.aniso_eq subfield
 
 
   
 
   
  parameters.sum_up  - when set to 1 (default), returns the
+
   parameters.*     - additional subfields may be required by
                        powder average. When set to 0, returns
+
                      the pulse sequence - check its documen-
                        individual answers for each point in
+
                      tation page  
                        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',
+
  assumptions       - context-specific assumptions ('nmr', 'epr',
 
                       'labframe', etc.) - see the pulse sequence
 
                       'labframe', etc.) - see the pulse sequence
 
                       header for information on this setting.
 
                       header for information on this setting.
 +
 
==Outputs==
 
==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
+
answer  - powder average of whatever the pulse sequence returns; if
 +
          parameters.sum_up is set to false, a cell array of outputs
 +
          at each orientation is returned
  
'''giant_spin/triple_dy_eqmag_temp.m''' - temperature dependence of equilibrium magnetisation in a dysprosium cluster
+
sph_grid - powder averaging grid data structure with three Euler angles
 
+
          and weights for each point
'''nmr_solids/cp_powder_match_3.m''' - Hartmann-Hahn matching condition under MAS
 
  
 
==Notes==
 
==Notes==
 +
# THIS IS FOR STATIC POWDERS - use [[singlerot.m]] for MAS simulations.
 
# Arbitrary order rotating frame transformation is supported, including infinite order. See the header of [[rotframe.m]] for further information.
 
# Arbitrary order rotating frame transformation is supported, including infinite order. See the header of [[rotframe.m]] for further information.
 
# The function supports parallel processing via Matlab's Distributed Computing Toolbox - different system orientations are evaluated on different labs.
 
# The function supports parallel processing via Matlab's Distributed Computing Toolbox - different system orientations are evaluated on different labs.
  
 
==See also==
 
==See also==
[[crystal.m]], [[liquid.m]], [[roadmap.m]], [[singlerot.m]], [[doublerot.m]], [[imaging.m]], [[gridfree.m]], [[floquet.m]]
+
[[singlerot.m]], [[rotframe.m]], [[crystal.m]], [[doublerot.m]], [[floquet.m]], [[gridfree.m]], [[imaging.m]], [[liquid.m]], [[meshflow.m]], [[Kernel contexts]], [[Built-in_experiments]]
 
 
  
''Version 2.2, authors: [[Ilya Kuprov]], [[Luke Edwards]]''
+
''Version 2.8, authors: [[Ilya Kuprov]], [[Luke Edwards]]''

Latest revision as of 19:40, 6 June 2026

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,sph_grid]=powder(spin_system,pulse_sequence,...
                               parameters,assumptions)

Parameters

 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    - name of the spherical averaging grid
                      file (see the grids directory in the
                      kernel).

 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 ad-
                      ditional information required by the
                      sequence:

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

                      'aniso_eq' - thermal equilibrium is re-
                      computed using the full anisotropic Ha-
                      miltonian at each orientation, and sent
                      to pulse sequence via parameters.rho0

  parameters.rho0   - initial state; may be a function handle
                      that depends on the three Euler angles
                      in ZYZ active convention

  parameters.serial - if set to true, disables automatic pa-
                      rallelisation

  parameters.sum_up - if set to false, causes the pulse sequ-
                      ence output at each orientation to be
                      returned instead of the powder average

  parameters.*      - additional subfields may be required by
                      the pulse sequence - check its documen-
                      tation page 

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

Outputs

answer - powder average of whatever the pulse sequence returns; if

          parameters.sum_up is set to false, a cell array of outputs
          at each orientation is returned

sph_grid - powder averaging grid data structure with three Euler angles

          and weights for each point

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.

See also

singlerot.m, rotframe.m, crystal.m, doublerot.m, floquet.m, gridfree.m, imaging.m, liquid.m, meshflow.m, Kernel contexts, Built-in_experiments

Version 2.8, authors: Ilya Kuprov, Luke Edwards