We use cookies to ensure that we give you the best experience on our website. You can change your cookie settings at any time. Otherwise, we'll assume you're OK to continue.

Solid-State NMR Group

pNMRsim: a general simulation program for large problems in solid-state NMR

pNMRsim is a SIMPSON-like general simulation program for solid-state NMR intended for large and complex problems.

pNMRproc uses the pNMRsim framework, but is restricted to data processing. It is useful for command-line / batch processing, particularly if non-standard processing is needed.


A selection of pre-compiled binaries. The archives contain three binaries (pNMRsim, pNMRproc and magres2pNMRsim) plus the extras and test directories of the source distribtion. Linux binaries are compiled with the ATLAS library and MINUIT (see below), but not MPI (required for parallel computation). The Windows binaries are currently experimental.

  • 64 bit Linux binaries (compiled on a Ubuntu 10.10 distribution): V15.08.13 [Previous version: V13.08.08] Note that portability of binaries between different Linux distributions can be problematic. Ask if you have problems.
  • Windows binaries: 32-bit V15.08.13 (without complex acceleration), 64-bit V15.08.13 (with complex acceleration).
  • Combined gsim and pNMRsim Windows package (experimental): gsim V22.0beta / pNMRsim V15.08.13. gsim_setup.exe runs an installer which asks for the destination of the binaries as well as "working directory" (which must be in user writeable space) for simulation inputs / outputs.



The source packages ought to compile on any Unix-like environment (including the Cygwin environment for Windows). Compiling from scratch is not easy and there are some subtle licencing issues associated with a fraction of the code. The source code is only updated irregularly; use the binaries to be sure of having the up-to-date version.

  • libcmatrix This "lite" version of the library does not include the code for periodic spin systems
  • pNMRsim
  • The Boost::Spirit library. pNMRsim uses the "Classic" version of the parser and some modification is required to compile with current Boost distributions. Instead, it is recommended to use this standalone version of "Spirit Classic", which has been patched to work with current compilers.

Optional external components

  • The Minuit library for optimisation. This is only required for functional optimisation and not for data fitting. Although the initial C++ API is supported, the current Minuit2 API is recommended.
  • The ATLAS optimised matrix library is highly recommended for problems involving multiple spins (matrix sizes of greater than 10 say).


Please acknowledge pNMRsim if it has made a contribution to your work. In the absence of a formal publication, provide a link to this page ( or, where pNMRsim results are key to the work, a full citation of the form:

P. Hodgkinson, "pNMRsim: a general simulation program for large problems in solid-state NMR", URL:

For simulations involving RF decoupling, please additionally include this reference (doi:10.1016/j.jmr.2008.02.012):

Insights into homonuclear decoupling from efficient numerical simulation: Techniques and examples, V. E. Zorin, M. Ernst, S. P. Brown, P. Hodgkinson, J. Magn. Reson. 192, 183 (2008)

Where use has been made of the code for periodic spin systems, this original reference also should be cited:

Simulation of Extended Periodic Systems of Nuclear Spins, P. Hodgkinson, D. Sakellariou and L. Emsley, Chem. Phys. Lett. 326, 515 (2000)

Reference for pulse180 (ideal inversion operation):

Towards homonuclear J solid-state NMR correlation experiments for half-integer quadrupolar nuclei: ..., N. S. Barrow, J. R. Yates, S. A. Feller, D. Holland, S. E. Ashbrook, P. Hodgkinson and S. P. Brown, Phys. Chem. Chem. Phys. 13, 5778 (2011)

Please check this page for updates when making an acknowledgement.


In addition to countless hours of "spare" time, pNMRsim was also developed as part of and for the following projects: EPSRC grants GR/S56993, EP/H023291 and a Royal Society International Joint Project with the ENS Lyon. Thanks are also due to Dr. Vadim Zorin who helped shape development and was the guinea pig for numerous half-baked versions during his postdoc in Durham.


pNMRsim update

This update (V15.08.13) adds various features / fixes, including the ability to switch ordering conventions for tensor axes. Note that the default nuclear spin properties are now standardised on "IUPAC" values (matching e.g. SIMPSON) which may differ very slighly from previous values. See documentation for details of changes.

(2 Mar 2016)

Modest pNMRsim update

This version (V13.08.08) involves minor updates (including a fix to a very edge case) to core functionality, plus experimental features such as detailed density matrix statistics. 

(17 Dec 2013)