Numerical Simulation of Solid-State NMR Experiments

Paul Hodgkinson1 and Lyndon Emsley2,

1Department of Chemistry, University of Durham,
South Road, Durham DH1 3LE, United Kingdom

2Laboratoire de Stéréochimie et des Interactions Moléculaires,
UMR-117 CNRS/ENS, Ecole Normale Supérieure de Lyon, 69364 Lyon, France

Progress in Nuclear Magnetic Resonance Spectroscopy, volume 36, page 201 (2000)

Numerical simulation is essential to the development and application of new techniques in Nuclear Magnetic Resonance. This is particularly true for solid-state NMR. However, the number of interactions, coupled with their time dependence due to sample spinning and/or multiple-pulse sequences, means that developing simulations can be daunting. This article is a practical guide to developing simulation programs, with the emphasis on magic angle spinning (MAS) experiments. Most of the principles apply equally well to static solid-state experiments, including those involving multiple-pulse irradiation, and even to liquid-state NMR simulations. Although computationally demanding simulations, such as those used as part of a model fit, require the use of such compiled languages, we give code examples as fragments of Matlab programs (see below). These are easy to "read" and do not require reference to additional library routines.

There has been considerable progress in the methodology of numerical simulations of MAS experiments in recent years, and a second goal of this article is to present the variety of these propagation techniques within a consistent framework, in order to be able to make practical comparisons (see tables below). Time-domain analogues of existing frequency-domain methods are presented which are generally both more efficient and more easily generalised. It is clearly impossible for any one article to address all possible NMR simulations, even within solid-state NMR. Our attention is thus restricted to experiments where the only time dependencies included explicitly are due to sample rotation and/or RF irradiation. The ways that the simulations presented can be extended to include effects such as chemical exchange and non-trivial relaxation are outlined briefly. We show how the relatively complex NMR experiments can be built up from the basic simulation element, with the emphasis is on retaining generality i.e. making it straightforward to change the number of the spins in the system, to use non-delta RF pulses rather than idealised pulses, etc.
 
 

Comparison of propagation techniques for homogeneous Hamiltonians.
Timings are in ms for C++ implementations running on a Sun Ultra 5.
Method
1 spin
2 spins
Basic
227.0
553.0
With periodicity (Example 3)
32.5
79.0
Stored propagators (Example 4)
3.5
11.7
In basis (Example 5)
1.6
4.6
gamma-COMPUTE (Example 6)
1.9
6.0

 
Comparison of propagation techniques for inhomogeneous Hamiltonians.
Timings are in us for C++ implementations running on a Sun Ultra 5.
Method
1 spin
2 spins
Basic
22400
62500
Time domain (Example 8) 
54
91
Frequency domain (Example 9)
78
148

We also discuss the orientational averaging that is required in the simulation of NMR in microcrystalline powder samples. The necessity for such "powder averaging" is a major handicap in the design of efficient simulations, and significant effort has been directed at the problem of reducing the time taken by this step. As well as discussing alternative schemes for powder averaging that have been proposed, the use of parallel computation is shown to be a practical solution to this problem.

Code examples

The code fragments given in the article have been gathered into three Matlab files appropriate to:
  • Static experiments (Example 1)
  • Homogeneous (non self-commuting) Hamiltonians under MAS (Examples 3-6)
  • Inhomogeneous MAS Hamiltonians (Examples 7-9)
  • Errata

    There were a couple of typographical errors in Table 2:

    \begin{displaymath}
\renewedcommand {arraystretch}{2}\begin{array}{\vert l\vert ...
...\pm i (R_{xy}+R_{\boldsymbol{yx}})\right] \\ \hline
\end{array}\end{displaymath}


    The time-ordering in Eq. (31) is incorrect, the final line should read

    \begin{displaymath}
U(t+{\gamma/\omega_r},0;0)U({\gamma/\omega_r},0;0)^\dagger
\end{displaymath}

    The denominator in the expressions for the dipole coupling constants in Table 1 should involve 8 pi2 rather than 2 pi... (Results in Hz).