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. This page is currently a place-holder in advance of any formal public release; at the moment, the full program (and support for it) is only available to researchers eligible for EPSRC funding or via explicit academic collaboration.
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. Binaries are compiled with the ATLAS library and MINUIT (see below), but not MPI (required for parallel computation)
- 64 bit Linux binaries (compiled on a Ubuntu distribution): V12.08.02 [Previous version: V12.03.27]
- Windows binaries*: on request
* pNMRsim can be compiled to run under Cygwin, but C++ exception handling as implemented by g++ has a large overhead and the Cygwin version tends to run slowly. This pure Windows binary should run with comparable efficiency to the Linux binary but the run-time error reporting is rather primitive.
- pNMRsim documentation
- Getting started with numerical simulations (using pNMRsim). PDF document
- Library documentation (internal use)
The following source packages ought to compile on any Unix-like environment (including the Cygwin environment for Windows). Compiling from scratch is not easy, however, so is only recommended if the binaries above are unsuitable. 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
- 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 (www.dur.ac.uk/paul.hodgkinson/pNMRsim) 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: http://www.dur.ac.uk/paul.hodgkinson/pNMRsim
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.
Modest pNMRsim update
This version (V12.08.02) is an incremental release, fixing some bugs and refining features, particularly concerning optimisation (see -news and documentation). The initialproc block, removed for efficiency of multi-core computations, has been restored.
(12 Oct 2012)
Modest pNMRsim update
This version (V12.03.27) fixes bugs in the largely untested "generalised quadrupole" treatment. This should still be used with some caution, particularly with RF and/or multiple spins. Various minor problems fixed. Experimental support for spin-order filtering and looping in pulseq.
(13 Apr 2012)