# Relaxation theory parameters

## Relaxation theories

Relaxation theory specification is a cell array if strings listing all relaxation theories that are active in the system, for example:

    inter.relaxation={'redfield','SRFK','SRSK'};


requests Bloch-Redfield-Wangsness relaxation theory, scalar relaxation of the first kind and scalar relaxation of the second kind. Below is the list of relaxation theories that are currently implemented. If your favourite theory is not on the list, send us an email with a link to its general description and we would try to implement it for you. Alternatively, edit relaxation.m function as appropriate.

## Empty relaxation superoperator

This corresponds to running a unitary dynamics simulation without any dissipation present. This option is available in all simulation formalisms. Example:

    inter.relaxation={'none'};


If relaxation superoperator is requested at any time in the simulation, a sparse zero matrix is returned. Note that this option is not recommended for any simulations that use frequency domain detection (for example overtone_a.m) and any simulations involving steady states (for example, dnp_freq_scan.m) because the presence of relaxation in the system in those cases is a mathematical requirement.

## Non-selective isotropic damping

A damping rate (in Hz) should be supplied. This option is available in all simulation formalisms. Example:

    inter.relaxation={'damp'};
inter.damp_rate=100.0;


The resulting relaxation superoperator is a negative definite diagonal matrix with the damping rate on the diagonal for all states except the unit state. In Hilbert space simulations the matrix is divided by 2 because propagation is two-sided and the relaxation operator in Hilbert space formalism is effectively acting twice per time step.

## Non-selective anisotropic damping

Damping rates (in Hz) in the three principal directions should be supplied. This option is available in all simulation formalisms. Example:

    inter.relaxation={'hstrain'};
inter.hstrain_rates=[100.08  38.89  107.40]*1e6;


The principal directions refer to the laboratory frame of reference. When the relaxation superoperator is requested manually, the Euler angles specifying the system orientation should be supplied (powder.m and crystal.m kernel context functions would do that automatically):

    R=relaxation(spin_system,euler_angles);


The resulting relaxation superoperator is a negative definite diagonal matrix with the damping rate on the diagonal for all states except the unit state. In Hilbert space simulations the matrix is divided by 2 because propagation is two-sided and the relaxation operator in Hilbert space formalism is effectively acting twice per time step.

## Extended T1/T2 approximation

Longitudinal and transverse relaxation rates (not times) in Hz should be provided for each spin. This option is only available for Liouville space spherical tensor formalisms. Example:

    inter.relaxation={'t1_t2'};
inter.r1_rates=[1.0 2.0 5.0];
inter.r2_rates=[5.0 7.0 9.0];


This would make all longitudinal states of each spin relax with rates R1, and all transverse states states of each spin with rates R2. Strictly speaking, the T1/T2 relaxation model makes no mention of what happens to multi-spin orders. We have therefore taken the liberty of making multi-spin orders relax at the sum of the relaxation rates of their constituent operators. This is a reasonable approximation in most cases.

## Bloch-Redfield-Wangsness relaxation theory

BRW theory is the most popular choice for liquid state NMR and EPR spectroscopy. In order to use it, you must supply anisotropic parts for all relevant interactions at the spin system specification stage and set the following option:

    inter.relaxation={'redfield'};


You must also supply one, two or three rotational correlation times for each of the chemical species present in the system as a cell array of vectors or numbers. The call with one rotational correlation time per chemical subsystem, for example:

    inter.tau_c={1e-9};

or

inter.tau_c={1e-9,1e-8};


would make Spinach assume isotropic rotational diffusion of what would be assumed to be a spherical molecule. A call with two rotational correlation times per chemical system, for example:

    inter.tau_c=[1e-9 2e-9];

or

inter.tau_c={[1e-9 2e-9],[1e-9 2e-9]};


corresponds to axial rotational diffusion of what would be assumed to be an axially symmatric ellipsoid. The two-element vectors above gives the rotational correlation time around the symmetry axis of the axially symmetric ellipsoid (first element) and the correlation time of rotation around an axis perpendicular to the symmetry axis (second element). The Z axis of the reference frame used to specify the interactions at the spin system specification stage must coincide with the symmetry axis of the rotatinal diffusion tensor. A call with three rotatinoal correlation times per chemical subsystem, for example:

    inter.tau_c=[1e-9 2e-9 3e-9];

or

inter.tau_c={[1e-9 2e-9 3e-9],[1e-9 2e-9 3e-9]};


is assumed to give the three rotational correlation times of an arbitrary ellipsoid, corresponding to rotations around X, Y and Z principal axes (in that order) of its rotational diffusion tensor. The reference frame used to specify the interactions at the spin system specification stage must coincide with the eigenframe of the diffusion tensor.

BRW theory in Spinach is implemented in a diagonalization-free formulation, which can handle relaxation superoperators for state space dimensions in excess of a million. This relaxation theory is only available for Liouville space formalisms.

A basic Lindblad relaxation superoperator is implemented, based on the equations reported in the paper by Tim Havel. R1 and R2 relaxation rates (not times) in Hz should be supplied for each spin. Example:

    inter.relaxation={'lindblad'};
inter.lind_r1_rates=[1.0 2.0 5.0];
inter.lind_r2_rates=[5.0 7.0 9.0];


This option is only available for Liouville space formalisms. If a custom-built Lindbladian is necessary, use lindbladian.m function in the kernel. Lindblad superoperator in general is poor man's relaxation theory - if you vaguely know which interaction is responsible for your relaxation and you know the corresponsing rate, lindbladian.m would return you a relaxation superoperator that you can use without blushing too much.

## Nottingham DNP relaxation theory

Alexander Karabanov, Greg Kwiatkowski and Walter Kockenberger have published a relaxation theory that is designed specifically for cross effect DNP simulations using Liouville space formalisms. The theory is restricted to systems with only one type of nuclei. All of the nuclei are assumed to have the same relaxation properties. Longitudinal and transverse relaxation rates (not times) in Hz for the electrons and the nuclei must be supplied. Example:

    inter.relaxation={'nottingham'};
inter.nott_r1e=1/0.3e-3;
inter.nott_r1n=1/4.0;
inter.nott_r2e=1/1.0e-6;
inter.nott_r2n=1/0.2e-3;


Note that the spin system must have exactly two electrons and all nuclei must be of the same type for this theory to be applicable. It can probably be extended to other cases, but some work will be necessary - please get in touch if you need this functionality.

## Weizmann DNP relaxation theory

Yonatan Hovav, Akiva Feintuch and Shimon Vega have published a relaxation theory that is designed specifically for DNP experiment simulation in Liouville space. The theory is restricted to systems with only one type of nuclei. All of the nuclei are assumed to have the same relaxation properties. Longitudinal and transverse relaxation rates (not times) in Hz for the electrons and the nuclei must be supplied. Because the dipolar cross-relaxation terms are empirical, Spinach requires that matrices are supplied, giving those rates for each pair of spins. Example:

    inter.relaxation={'weizmann'};
inter.weiz_r1e=1e2;
inter.weiz_r1n=0.1;
inter.weiz_r2e=1e5;
inter.weiz_r2n=1e3;
inter.weiz_r1d=zeros(4,4);
inter.weiz_r2d=zeros(4,4);
for n=2:3
inter.weiz_r1d(n,n+1)=0.1;
inter.weiz_r1d(n+1,n)=0.1;
inter.weiz_r2d(n,n+1)=0.1;
inter.weiz_r2d(n+1,n)=0.1;
end


Note that all nuclei must be of the same type for this theory to be applicable. It can probably be extended to other cases, but some work will be necessary - please get in touch if you need this functionality.

## Rotating frame transformations

Spinach calculates relaxation superoperators in the laboratory frame. Rotating frame simulations must therefore take care to drop non-secular terms, either analytically or numerically. The following options are available for doing that at the relaxation superoperator construction stage. To keep the relaxation superoperator intact (for example for singlet state analysis or laboratory frame simulations), specify:

    inter.rlx_keep='labframe';


If you are running in the rotating frame with respect to every spin in the system, and would like to keep all longitudinal cross-relaxation terms, and also zero-quantum cross-relaxation terms between spins of the same type, specify:

    inter.rlx_keep='secular';


If you are running in the rotating frame with respect to every spin in the system, and would like to only keep the longitudinal cross-relaxation terms ("Redfield kite"), specify:

    inter.rlx_keep='kite';


If you would like to ignore all cross-relaxation processes and only keep self-relaxation terms in the superoperator, specify:

    inter.rlx_keep='diagonal';


If your rotating frame layout is complicated (some spins are in the rotating frame, but others are not), you should use the laboratory frame option here and then call rotframe.m, which performs arbitrary rotating frame transformations numerically. Kernel context functions may be instructed to apply numerical rotating frame transformations by setting the corresponding option - see their manual pages for more information.

## Thermal equilibrium

The state to which the relaxation superoperator should be driving the system must be specified by setting:

    inter.equilibrium='zero';      - relaxation to the zero state, produces a symmetric matrix

or

inter.equilibrium='levante';   - Levante-Ernst thermalisation (http://dx.doi.org/10.1016/0009-2614(95)00578-R)

or

inter.equilibrium='dibari';    - DiBari-Levitt thermalisation (http://dx.doi.org/10.1103/PhysRevLett.69.3124)


You are encouraged to consult the above mentioned papers to see what the two thermalisation methods do to the relaxation superoperators and why. Importantly, if 'levante' is specified, then the unit state population of the initial condition must be manually set to 1. If the state is obtained from equilibrium.m function, this happens automatically.

A particular relaxation superoperator that has been generated by relaxation.m with the option to relax the states to zero may modified manually to generate relaxation to a given destination state manually by calling thermalize.m function, which uses the Levante-Ernst formalism.

If appropriate, the spin temperature in the equilibrium state should also be specified. Example:

    inter.temperature=298;


Not specifying a temperature, or passing an empty valued here causes Spinach to use the high-temperature approximation. Be careful with very low (sub-Kelvin) temperatures - the thermalisation methods listed above are ill equipped to deal with those. Absolute zero spin temperature is not supported.

## Dynamic frequency shifts

Dynamic frequency shifts are ignored by default. To instruct Spinach to keep them in the relaxation superoperator, use:

    inter.rlx_dfs='keep';


If you are simulating nuclear magnetic resonance experiments on paramagnetic systems, consider using this option.

## Custom rotational correlation functions

Specifying one, two, or three rotational correlation times (as described in the Redfield theory section above) automatically selects the right rotational correlation function for each case. It may, however, be occasionally necessary to venture beyond those standard approximations and supply your own correlation functions. Spinach assumes the following general expansion for the rotational correlation function between a pair of second rank Wigner D-functions with user-specified projection indices:

$\left\langle D_{km}^{\left( 2 \right)}\left( t \right)D_{pq}^{\left( 2 \right)\dagger }\left( t+\tau \right) \right\rangle =\sum\limits_{k}{{{w}_{k}}{{e}^{{{r}_{k}}\tau }}}$

The weights and rates (they are negative) are returned by corrfun.m:

    [weights,rates]=corrfun(spin_system,k,m,p,q)


A user-specified correlation function may be supplied to the relaxation theory module by editing corrfun.m file in the kernel/utils directory. This is a very advanced option – please examine the Redfield theory code in relaxation.m before using it.

## Scalar relaxation of the first kind

SRFK is a mechanism arising from the stochastic modulation of scalar interactions (J-coupling, isotropic hyperfine coupling, etc.) by conformational transitions, molecular vibrations and other sources of noise. It is processed using a Redfield-like formalism described in detail in our paper (http://dx.doi.org/10.1002/ange.201410271). It may be requested by adding 'SRFK' to the list of relaxation formalisms, for example:

    inter.relaxation={'redfield','SRFK'};


and specifying the modulation depth and the correlation time of the stochastic noise in the couplings. Example:

    inter.srfk_assume='nmr';                - assumptions for the stochastic Hamiltonian
inter.srfk_tau_c=5e-3;                  - correlation time for the stochastic process
inter.srfk_mdepth=cell(28);           |
inter.srfk_mdepth{4,6}=15.0;          | - nspins x nspins cell array of scalar coupling
inter.srfk_mdepth{1,6}=15.0;          |   modulation depths between each pair of spins
inter.srfk_mdepth{4+14,6+14}=15.0;    |   for which the modulation is significant
inter.srfk_mdepth{1+14,6+14}=15.0;    |


Rotating frame calculation of this contribution to the relaxation matrix is recommended because typical scalar relaxation correlation times (milliseconds to microseconds) are much longer than the time scale of the laboratory frame dynamics.

## Scalar relaxation of the second kind

SRSK is typically a significant relaxation mechanism in quadrupolar systems, where the rapidly relaxing (and therefore reorienting) quadrupolar nucleus acts as a source of "noise" on all the couplings that it is involved in. A common example is the broadening of the proton signals in the amino groups. Processing of this mechanism may be requested by adding 'SRSK' to the list of relaxation formalisms, for example:

    inter.relaxation={'redfield','SRSK'};


Spinach uses Equations 121 and 122 in Abragam's "Principles of Nuclear Magnetism" to update the diagonal elements of the relaxation superoperator. Off-diagonal contributions are not computed. Scalar relaxation of the second kind has no adjustable parameters.

Version 1.10, authors: Ilya Kuprov