## The Software

**SpinEvolution** is a highly efficient computer program for the numerical simulation of NMR experiments and general 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 and functionality**

**User-friendly no-programming interface**: All algorithms required to perform the simulation in the optimal manner are already pre-programmed. Therefore, no programming is necessary to perform the simulation – i.e., to define the pulse sequence, set up data fitting, set up the simulation for multiprocessing, etc. All of this is done by specifying variuos parameters, options, and internal variables, or fully automatically.

**Sophisticated Internal Variables interface**: to access and manipulate internal and user-defined variables and matrices, and drive complex simulations with parameter scans and averages, user-defined input/output, shell commands, macros of several different types, math functions, and MATLAB-like matrix manipulation syntax. SpinEvolution derives its unique combination of simplicity and flexibility mostly from this interface.

**Wide variety of highly efficient methods** for performing NMR computations, including a number of unpublished techniques, are available for the program to choose from to perform the simulations. Most of the time, this choice is automatic, or semi-automatic. Numeric integration of the spin dynamics can be performed with either fixed step-size or automatically controlled step-size methods. Both Hilbert-space and Liouville-space (including reduced Liouville space) methods are available.

**Pulse sequence**: virtually any pulse sequence with up to 2 dimensions and phase cycling.

**Spin systems**: arbitrary, with up to 16 nuclei and 5 channels.

**Solid-state (MAS or static)** and **liquid-state** experiments, including MRS/imaging, DNP, EPR, and variable angle spinnig.

**Interactions**: isotropic and anisotropic chemical shifts, g-tensors, j-couplings/spin-spin coupling, dipolar interactions, quadrupolar interactions, zero-field coupling, RF field, pulsed field gradients.

**Molecular geometry** can be used to specify or parameterize anisotropic interactions via several mechanisms: atomic coordinates of the whole molecule containing the spin system, local coordinate systems (aligned with the local chemical structure), internal coordinates (bond lengths and angles), z-matrix.

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

**Chemical exchange/dynamics** – both finite rate and infinitely fast.

**Relaxation:** various models of relaxation are implemented; both finite spin temperature and infinite temperature approximation can be used.

**Proton-Driven Spin Diffusion (PDSD)**: A special functionality is available for performing simulations of PDSD-like spin diffusion experiments under MAS.

**Explicit coherence selection** (by filtering the density matrix)

**Arbitrary initial density matrices and observables**

**Powder averaging:** 3-, 2-, or 1-angle averaging using built-in or user-provided sets; types of available built-in sets: REPULSION, Lebedev, 3-angle-ZCW, ZCW, ASG, SOPHE, alpha-beta-step, and beta-step. The step, ZCW, ASG, SOPHE sets of arbitrary size are generated on-the-fly. Interpolative powder averaging schemes for diagonal Hamiltonians. Single-crystallite simulations.

**Analytic mode:** to quantitatively explore various terms of the Hamiltonian and to provide numerical support for the Average Hamiltonian theory calculations.

**Data fitting and optimization methods:** NL2SOL, Levenberg-Marquardt, batch data fits for faster computations, special methods to escape local minima, automatic grid search methods.

**Spectral fitting** of experimental 1D proton NMR spectra of small molecules to extract the chemical shifts and J-couplings.

**Simulation results can be interactively visualized** with the help of a powerfull Python graphics library, or saved to interactive SVG-based graphics HTML files, or regular PDF or SVG files. Python scripts supplied with the software can be used to create publication-quality 1D and 2D data plots.

**Simulations are run from a command line** and are driven by the plain-text SpinEvolution input files.

**Command-line options & macros**can be used to customize the simulation without modifying the input files.

**External scripts** (e.g., Perl, Matlab, or shell) can be easily used to drive complex simulations through manipulation of the command-line options and macros.

**Platforms:** Windows, macOS, Linux; only 64-bit versions of operating systems are supported.

**Multiprocessing:** computations can be run in parallel on multi-core/multi-CPU systems, computer clusters, or, in general, any combination of computers available on a network.

**A large set of examples** is supplied together with the program.

**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). Interpolative powder averaging is implemented only for diagonal Hamiltonians.