Difference between revisions of "State.m"
(→Examples) |
(Document Spinach 2.12 bosonic mode functionality (PR 195)) |
||
| (15 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
| − | Generates | + | {{DISPLAYTITLE:state.m}} __NOTOC__ |
| + | Generates Hilbert space density matrices and Liouville space state vectors from their human-readable descriptions. | ||
| + | |||
| + | ==Syntax== | ||
rho=state(spin_system,states,spins,method) | rho=state(spin_system,states,spins,method) | ||
| − | + | ==Parameters== | |
| + | This function supports three types of calls: | ||
| + | |||
| + | '''1. If states is a string and spins is a string''' | ||
| + | |||
| + | states='Lz'; spins='13C'; | ||
| + | |||
| + | the function returns the sum of the corresponding single-spin density matrices (Hilbert space) or state vectors (Liouville space) on all spins of that type. Valid labels for states in this type of call are 'E' (identity), 'Lz', 'Lx', 'Ly', 'L+', 'L-', and 'Tl,m' (irreducible spherical tensor, l and m are integers). Valid labels for spins are standard isotope names as well as 'electrons', 'nuclei', and 'all'. | ||
| − | ''' | + | '''2. If states is a string and spins is a vector''' |
| − | + | states='Lz'; spins=[1 2 4]; | |
| − | + | the function returns the sum of all single-spin density matrices (Hilbert space) or state vectors (Liouville space) for all spins with the specified numbers. Valid labels for states are the same as in Item 1 above. | |
| − | + | '''3. If states is a cell array of strings and spins is a cell array of numbers:''' | |
| − | + | states={'Lz','L+'}; spins={1,2}; | |
| − | + | then a product state density matrix (Hilbert space) or state vector (Liouville space) is produced. In the case above, Spinach will generate LzS+ density matrix in Hilbert space or its state vector in Liouville space. Valid labels for operators are the same as in Item 1 above. | |
| − | the | + | Bosonic modes have their own state labels: 'E' (identity), 'C' (creation), 'A' (annihilation), 'N' (population number), and 'BL#' for the projector onto the #-th Fock level, counted from 1, so that 'BL1' is the vacuum; spin energy level projectors use the parallel 'ZL#' notation. Coherent states of a mode are built by [[coherent.m]]. |
| − | + | Method argument has the following effect in sphten-liouv formalism: | |
| − | '' | + | 'cheap' - the state vector is generated without |
| + | normalisation. For very large spin sys- | ||
| + | tens this is much faster | ||
| − | + | 'exact' - exact state vector with correct normalisation | |
| − | + | ||
| − | + | 'chem' - the exact state vector weighted with the | |
| + | concentrations specified in [[inter]].chem.concs | ||
| + | field under [[chemical kinetics parameters]] | ||
| − | + | This option is ignored in zeeman-hilb and zeeman-liouv formalisms because there are no cheap shortcuts and kinetics is not available. | |
| − | + | ==Outputs== | |
| − | + | rho - a Hilbert space density matrix or a Liouville | |
| + | space state vector | ||
==Examples== | ==Examples== | ||
| Line 40: | Line 55: | ||
'''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= | + | rho=state(spin_system,'Lx','15N'); |
'''3. AxBx state between spin 2 and spin 5''' | '''3. AxBx state between spin 2 and spin 5''' | ||
| − | |||
| − | + | rho=state(spin_system,{'Lx','Lx'},{2,5}); | |
| − | |||
| − | |||
| − | |||
| − | + | Density matrices will be generated in Hilbert space and a state vectors in Liouville space. | |
| − | + | ==See also== | |
| − | |||
| − | |||
| − | |||
| + | [[unit_state.m]], [[unit_oper.m]], [[mprealloc.m]], [[singlet.m]], [[equilibrium.m]], [[operator.m]], [[human2opspec.m]], [[deut_pair.m]], [[four_spin_states.m]], [[partner_state.m]], [[triplet.m]], [[zftrip.m]], [[Kernel_functions]] | ||
| − | '' | + | ''Version 2.8, authors: [[Ilya Kuprov]], [[Luke Edwards]], [[Dmitry Savostyanov]]'' |
Latest revision as of 05:40, 6 August 2026
Generates Hilbert space density matrices and Liouville space state vectors from their human-readable descriptions.
Syntax
rho=state(spin_system,states,spins,method)
Parameters
This function supports three types of calls:
1. If states is a string and spins is a string
states='Lz'; spins='13C';
the function returns the sum of the corresponding single-spin density matrices (Hilbert space) or state vectors (Liouville space) on all spins of that type. Valid labels for states in this type of call are 'E' (identity), 'Lz', 'Lx', 'Ly', 'L+', 'L-', and 'Tl,m' (irreducible spherical tensor, l and m are integers). Valid labels for spins are standard isotope names as well as 'electrons', 'nuclei', and 'all'.
2. If states is a string and spins is a vector
states='Lz'; spins=[1 2 4];
the function returns the sum of all single-spin density matrices (Hilbert space) or state vectors (Liouville space) for all spins with the specified numbers. Valid labels for states are the same as in Item 1 above.
3. If states is a cell array of strings and spins is a cell array of numbers:
states={'Lz','L+'}; spins={1,2};
then a product state density matrix (Hilbert space) or state vector (Liouville space) is produced. In the case above, Spinach will generate LzS+ density matrix in Hilbert space or its state vector in Liouville space. Valid labels for operators are the same as in Item 1 above.
Bosonic modes have their own state labels: 'E' (identity), 'C' (creation), 'A' (annihilation), 'N' (population number), and 'BL#' for the projector onto the #-th Fock level, counted from 1, so that 'BL1' is the vacuum; spin energy level projectors use the parallel 'ZL#' notation. Coherent states of a mode are built by coherent.m.
Method argument has the following effect in sphten-liouv formalism:
'cheap' - the state vector is generated without
normalisation. For very large spin sys-
tens this is much faster
'exact' - exact state vector with correct normalisation
'chem' - the exact state vector weighted with the
concentrations specified in inter.chem.concs
field under chemical kinetics parameters
This option is ignored in zeeman-hilb and zeeman-liouv formalisms because there are no cheap shortcuts and kinetics is not available.
Outputs
rho - a Hilbert space density matrix or a Liouville
space state vector
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,'Lx','15N');
3. AxBx state between spin 2 and spin 5
rho=state(spin_system,{'Lx','Lx'},{2,5});
Density matrices will be generated in Hilbert space and a state vectors in Liouville space.
See also
unit_state.m, unit_oper.m, mprealloc.m, singlet.m, equilibrium.m, operator.m, human2opspec.m, deut_pair.m, four_spin_states.m, partner_state.m, triplet.m, zftrip.m, Kernel_functions
Version 2.8, authors: Ilya Kuprov, Luke Edwards, Dmitry Savostyanov