Difference between revisions of "State.m"

From Spinach Documentation Wiki
Jump to: navigation, search
(Examples)
(Examples)
Line 34: Line 34:
  
 
==Examples==
 
==Examples==
===1. L+ state on spin number three===
+
'''1. L+ state on spin 3'''
  
 
     rho=state(spin_system,{'L+'},{3});
 
     rho=state(spin_system,{'L+'},{3});
  
===2. A sum of Lx states on all 15N spins in the system===
+
'''2. A sum of Lx states on all 15N spins in the system'''
  
 
     rho=(state(spin_system,'L+','15N')+state(spin_system,'L+','15N'))/2;
 
     rho=(state(spin_system,'L+','15N')+state(spin_system,'L+','15N'))/2;
  
===3. AxBx state between spin 2 and spin 5===
+
'''3. AxBx state between spin 2 and spin 5'''
 
Both components are Cartesian and must therefore be translated into the convention above:
 
Both components are Cartesian and must therefore be translated into the convention above:
  

Revision as of 12:04, 8 January 2017

Generates states from their human-readable descriptions. In Liouville space formalisms, a state vector is produced. In Hilbert space formalisms, a density matrix is produced. Syntax:

    rho=state(spin_system,states,spins,method)

The function supports two types of calls:

1. If the state description is given as a character string and spins are named by a character string, for example

    rho=state(spin_system,'Lz','13C');

then the function returns the sum of the corresponding single-spin states on all spins with that name. In the example above, the sum of Lz states on all carbons in the system will be returned:

\(\hat{\rho }=\hat{L}_{\text{Z}}^{\left( 1 \right)}+\hat{L}_{\text{Z}}^{\left( 2 \right)}+\hat{L}_{\text{Z}}^{\left( 3 \right)}+...\)

Valid labels for states in this type of call are

    'E', 'Lz', 'L+', 'L-', 'Tl,m'

the latter case specifies an irreducible spherical tensor operator \({{{\hat{T}}}_{l,m}}\). Valid labels for spins are standard isotope names as well as

    'nuclei', 'electrons', 'all'

2. If the state description is given as a cell array of strings and spins are named by a cell array of numbers, for example

    rho=state(spin_system,{'Lz','L+'},{1,2});

then a product state is is returned. In the example above, the function would return the followinsg state:

\(\hat{\rho }=\hat{L}_{\text{Z}}^{\left( 1 \right)}\otimes \hat{L}_{+}^{\left( 2 \right)}\)

Valid labels for states in the cell array are the same as in the previous case.

In situations where the norm of the requested state vector is inconsequential, the method parameter may be specified. Setting method to 'cheap' triggers a very fast state vector generation procedure with the caveat that the norm of the resulting state vector is not guaranteed to be consistent with other state vectors. This switch is only applicable to the spherical tensor basis set.

Examples

1. L+ state on spin 3

    rho=state(spin_system,{'L+'},{3});

2. A sum of Lx states on all 15N spins in the system

    rho=(state(spin_system,'L+','15N')+state(spin_system,'L+','15N'))/2;

3. AxBx state between spin 2 and spin 5 Both components are Cartesian and must therefore be translated into the convention above:

\(\begin{matrix} {{{\hat{A}}}_{\text{X}}}=\frac{{{{\hat{A}}}_{+}}+{{{\hat{A}}}_{-}}}{2};\text{ }{{{\hat{B}}}_{\text{X}}}=\frac{{{{\hat{B}}}_{+}}+{{{\hat{B}}}_{-}}}{2} \\ {{{\hat{A}}}_{\text{X}}}{{{\hat{B}}}_{\text{X}}}=\frac{1}{4}\left( {{{\hat{A}}}_{\text{+}}}{{{\hat{B}}}_{+}}+{{{\hat{A}}}_{+}}{{{\hat{B}}}_{-}}+{{{\hat{A}}}_{-}}{{{\hat{B}}}_{+}}+{{{\hat{A}}}_{-}}{{{\hat{B}}}_{-}} \right) \\ \end{matrix}\)

The Spinach code would therefore be:

    AxBx=(state(spin_system,{'L+','L+'},{2,5})+...
          state(spin_system,{'L+','L-'},{2,5})+...
          state(spin_system,{'L-','L+'},{2,5})+...
          state(spin_system,{'L-','L-'},{2,5}))/4;


Revision 3180, authors: Ilya Kuprov, Luke Edwards, Dmitry Savostyanov