The Software

SpinEvolution is a highly efficient computer program for the numerical simulation of NMR experiments and spin dynamics. The original version of the software was described in the paper M.Veshtort, R.G.Griffin, SPINEVOLUTION: A powerful tool for the simulation of solid and liquid state NMR experiments, J. Magn. Reson., 178 (2006) 248-282. This paper, together with the SpinEvolution Reference Manual presently serve as the two parts of the manual for the software. The Reference Manual describes all of the program features, including all new developments since the time the JMR paper was published. The Hamiltonian, the Canonical Representation of NMR experiments, and the examples are discussed only the paper at this time.


Summary of the program features

Pulse sequence: virtually arbitrary pulse sequence with up to 2 dimensions and phase cycling

Spin systems: arbitrary, with up to 14 nuclei and 5 channels

Interactions: chemical shifts (isotropic and anisotropic), j-couplings (isotropic and anisotropic), dipolar interactions, quadrupolar interactions, RF field (ideal pulses are possible), pulsed field gradients (PFGs). RF pulses can be applied to individual spins. Chemical shift and dipolar interactions can be switched on/off or scaled in the course of the experiment. Dipolar, CSA, and quadrupolar interactions can be specified via local coordinates (bond angles, torsion angles, internuclear distances, local coordinate frames, z-matrix, extended molecule).

Solid-state (MAS or static) and liquid-state experiments, including MRS/imaging; DNP simulations; variable angle spinnig (VAS)

Non-secular terms of the Hamiltonian can be included for the simulations of DNP and any other experiments requiring these terms

Chemical exchange/dynamics in fast and intermediate regimes

Relaxation: T2- and T1-relaxation can be specified for any coherence orders or for arbitrary operator components of the density matrix

Explicit coherence selection (by filtering the density matrix)

Arbitrary initial density matrices and observables; several density matrices and/or observables can be defined in one experiment

Powder averaging: 3-, 2-, or 1-angle averaging using built-in or user-provided sets; available built-in set classes: REPULSION, Lebedev, ZCW, ASG, SOPHE, alpha-beta-step, and beta-step; interpolative powder averaging schemes for diagonal Hamiltonians; single-crystallite simulations

Analytic mode: mostly to provide numerical support for simple Average Hamiltonian theory calculations

Data fitting and optimization methods: NL2SOL, Levenberg-Marquardt, batch data fits for faster computations, fit parameter randomization to overcome local minima, grid search

Highly evolved interface for accessing and manipulating internal and user-defined variables: scan, average-over, and fit parameters, matrices, user-defined input/output via files and shell commands, macros of three different types, math functions, matlab-like syntax. SpinEvolution derives its unique combination of flexibility and simplicity mostly from this under-the-hood interface.

Options to customize the computation and input/output of the program.

Input and output is in the form of text files. The simulation is run from a command line. External tools (such as Grace, Matlab, Gnuplot, GSim, etc) should be used for visualization of the results.

Scripts (e.g., Perl, Matlab, or shell) can be used to drive the simulations

Platforms: Windows, Mac OS X, Linux; only 64-bit versions of operating systems are supported

Multiprocessing: computations can be run in parallel on multi-procesor systems, computer clusters, or, in general, any combination of computers available on a network via ssh (as soon as they can run SpinEvolution).


Current limitations of the program

Non-secular terms can be included in the Hamiltonian only at the times when RF power is off for the spins in question

Multiple sampling points per RF cycle are currently allowed only in the observe-each-step mode and for continuosly RF phase-incremented sequences (like the CN symmetry based sequences).

Some types of spin-operators for quadrupolar nuclei can be specified only via bra-ket notation (for use in initial density matrices and observables)

Interpolative powder averaging is implemented only for diagonal Hamiltonians