McStas logo McStas - A neutron ray-trace simulation package ILL; PSI; ESS Niels Bohr Institute DTU Physics NEXMAP


About McStas
 Conditions of use
 Project funding

 Other Downloads (share)

Mailing list

Search web/mailinglist

 Wiki (GitHub)
 McStas manual


Report bugs (GitHub)

Code-repository (GitHub)

McStas: Single_crystal Component

[ Identification | Description | Input parameters | Output parameters | Links ]

The Single_crystal Component

Mosaic single crystal with multiple scattering vectors, optimised for speed with large crystals and many reflections.


  • Author: Kristian Nielsen
  • Origin: Risoe
  • Date: December 1999
  • Version:(Unknown)
  • Modification history:
    • EF, 22nd Apr 2003 : now uses Read_Table library
    • M. Schulz, March 2012 : allow to curve the crystal planes
    • EF, PW, May 2014: code efficiency improvement when SPLIT is used
    • EF, PW, 2015: powder/PG and texture mode
    • PW, May 2017: Remove statement about being under validation
    • PW, June 2017: Doc updates
    • PW, Feb 2018: GPU edits


Single crystal with mosaic. Delta-D/D option for finite-size effects.
Rectangular geometry. Multiple scattering and secondary extinction included.
The mosaic may EITHER be specified isotropic by setting the mosaic input
parameter, OR anisotropic by setting the mosaic_a, mosaic_b, and mosaic_c
The crystal lattice can be bent locally, keeping the external geometry unchanged.
Curvature is spherical along vertical and horizontal axes.

Speed/stat optimisation using SPLIT
In order to dramatically improve the simulation efficiency, we recommend to
use a SPLIT keyword on this component (or prior to it), as well as to disable
the multiple scattering handling by setting order=1. This is especially powerful
for large reflection lists such as with macromolecular proteins. When an incoming
particle is identical to the preceeding, reciprocal space initialisation is 
skipped, and a Monte Carlo choice is done on available reflections from the last
repciprocal space calculation! To assist the user in choosing a "relevant" value
of the SPLIT, a rolling average of the number of available reflections is
calculated and presented in the component output.

Mosacitiy modes:
The component features three independent ways of parametrising mosaicity:
 a) The original algorithm where mosaicity is implemented by extending each 
    reflection by a Gaussian "cigar" in reciprocal space, characterised by
    the parameters mosaic and delta_d_d. 
    (Also known as "isotropic mosaicity".)
 b) A similar mode where mosaicities can be non-isotropic and given as the
    parameters mosaic_a, mosaic_b and mosaic_c, around the unit cell axes.
    (Also known as "anisotropic mosaicity".)
 c) Given two "macroscopically"/experimentally measured width/mosaicities 
    of two independent reflections, parametrised by the list 
    mosaic_AB = {mos_a, mos_b, a_h, a_k, a_l, b_h, b_k, b_l}, a set of 
    microscopic mosaicities as in b) are estimated (internally) and applied.
    (Also known as "phenomenological mosaicity".)
Powder- and PG-mode
When these two modes are used (powder=1 or PG=1), a randomised transformation
of the particle direction is made before and after scattering, thereby letting 
the single crystal behave as a crystallite of either a powder (crystallite
orientation fully randomised) or pyrolytic graphite (crystallite randomised around
the c-axis).

Curved crystal mode
The component features a method to curve the lattice planes slightly with respect
to the outer geometry of the crystal. The method is implemented as a transformation
on the particle direction vector, and should be used only in cases where
 a) The reflection lattice vector is ~ orthogonal to the crystal surface
 b) The modelled curvarture is "small" with respect to the crystal surface

Sample shape:
Sample shape may be a cylinder, a sphere, a box or any other shape
  box/plate:       xwidth x yheight x zdepth
  cylinder:        radius x yheight
  sphere:          radius (yheight=0)
  any shape:       geometry=OFF file

  The complex geometry option handles any closed non-convex polyhedra.
  It computes the intersection points of the neutron ray with the object
  transparently, so that it can be used like a regular sample object.
  It supports the PLY, OFF and NOFF file format but not COFF (colored faces).
  Such files may be generated from XYZ data using:
    qhull < Qx Qv Tv o >
  and viewed with geomview or java -jar jroff.jar (see below).
  The default size of the object depends on the OFF file data, but its
  bounding box may be resized using xwidth,yheight and zdepth.

Crystal definition file format
Crystal structure is specified with an ascii data file. Each line contains
4 or more numbers, separated by white spaces:

      h k l ... F2

The first three numbers are the (h,k,l) indices of the reciprocal lattice
point, and the 7-th number is the value of the structure factor |F|**2, in
barns. The rest of the numbers are not used; the file is in the format
output by the Crystallographica program.
The reflection list should be ordered by decreasing d-spacing values.
Lines begining by '#' are read as comments (ignored). Most sample parameters
may be defined from the data file header, following the same mechanism as

Current data file header keywords include, for data format specification:
and for material specification:

See the Component Manual for more defails.

Example: Single_crystal(xwidth=0.01, yheight=0.01, zdepth=0.01, mosaic = 5, reflections="YBaCuO.lau")

A PG graphite crystal plate, cut for (002) reflections
  Single_crystal(xwidth = 0.002, yheight = 0.1, zdepth = 0.1,
    mosaic = 30, reflections = "C_graphite.lau",
    ax=0,      ay=2.14,   az=-1.24,
    bx = 0,    by = 0,    bz =  2.47,
    cx = 6.71, cy = 0,    cz =  0)

A leucine protein, without multiple scattering
  Single_crystal(xwidth=0.005, yheight=0.005, zdepth=0.005,
    mosaic = 5, reflections="leucine.lau", order=1)

A Vanadium incoherent elastic scattering with multiple scattering
  Single_crystal(xwidth=0.01, yheight=0.01, zdepth=0.01,
          reflections="", sigma_abs=5.08, sigma_inc=4.935,
          ax=3.0282, by=3.0282, cz=3.0282/2)

Also, always use a non-zero value of delta_d_d.

This component has been validated.

Input parameters



[ Identification | Description | Input parameters | Output parameters | Links ]

Generated automatically by McDoc, Peter Willendrup <> / Wed Jan 12 15:13:20 2022

Last Modified: Wednesday, 12-Jan-2022 16:13:20 CET
Search website mailinglist archive GitHub repos