Recent progresses in neutron scattering instrumentation, especially the advancement of high-resolution two-dimensional detectors, greatly enhance the power of diffuse neutron scattering. For many frustrated magnets, the quasielastic diffuse neutron scattering pattern contains rich information about the correlated states. Roughly speaking, diffuse neutron scattering fills the gap between the conventional neutron diffraction and inelastic neutron scattering techniques.

Here we introduce JuliaSCGA, a Julia implementation of the efficient self-consistent Gaussian approximation (SCGA) method to simulate the diffuse neutron scattering pattern for classical spin models. A pedagogical introduction to this method can be found in Peter H. Conlon’s thesis. When combined with optimization packages like Optim.jl, JuliaSCGA can be used to determine the spin Hamiltonian that was previously achieved only through inelastic neutron scattering. Recent applications of the SCGA method include the pyrochlore-lattice compounds MgCr2O4 and ZnCr2Se4, and the honeycomb-lattice compound FeCl3.

For single crystal calculations, the use of JuliaSCGA is straightforward as explained in the how-to page. For powder calculations, a random array of wavevectors with different lengths are firstly generated, then the calculated intensities at wavevectors of the same length are averaged for the final plot. Using the example diamond lattice code, a powder diffuse pattern as follows can be generated:

JuliaSCGA can also be utilized as the basis for more advanced calculations. One example is the nematic bond theory that incorporates higher order perturbations compared to the SCGA approximation. Following the original derivation and a more recent application, we present an example nematic bond theory code for the the square lattice model. The temperature evolution of spin correlations, including the development of a nematic phase near the phase transition, is presented in the following example plots: