[MAP Logo]

Materials Algorithms Project
Program Library


  1. Provenance of code.
  2. Purpose of code.
  3. Specification.
  4. Description of subroutine's operation.
  5. References.
  6. Parameter descriptions.
  7. Error indicators.
  8. Accuracy estimate.
  9. Any additional information.
  10. Example of code
  11. Auxiliary subroutines required.
  12. Keywords.
  13. Download source code.
  14. Links.

Provenance of Source Code

H.K.D.H. Bhadeshia,
Phase Transformations Group,
Department of Materials Science and Metallurgy,
University of Cambridge,
Cambridge, U.K.

Top | Next


An interactive program for the analysis of crystal structures. crystal.f will require subroutines available in this library to be added. crystal.for is the complete program, ready for compilation.

Top | Next | Prev


Product form:Source code

This is a self-contained program.

Top | Next | Prev


The program gives guidance to the user when choices have to be made. The initial choice is selecting which of the following are to be performed:-

1. Analysis of Electron Diffraction

The camera constant may be known, in which case the program needs an input of two d-spacings from a pair of reciprocal lattice vectors and the angle between the two vectors concerned. The crystal system and lattice type must also be specified.

It is often the case that the camera constant is unknown. The program then operates without d-spacings, using instead an input of the ratio of the lengths of two reciprocal lattice vectors, as measured from the diffraction pattern. If the crystal type is unknown then it can be assumed to be primitive in the first instance. Crystallographically equivalent solutions can be avoided, but this may increase the computing time required.

2. Calculation of Metric Tensor

This calculates the metric tensor, which is a coordinate transformation relating the real and reciprocal axes.

3. Interplanar Spacings

This calculates the spacing of planes in crystals of arbitrary system, taking account of absences due to lattice types.

4. Angles between Vectors

This calculates the angles between two vectors in an arbitrary crystal system, whether the vectors are plane normals (i.e. reciprocal vectors) or directions (i.e. real vectors). Any combination of these two kinds of vectors may be used as the input.

5. Convert between Real and Reciprocal Space

This converts the components of a vector from real to reciprocal space, or vice versa, for any crystal system. It can be used to identify a plane normal which is parallel to a specified direction, or a direction which is parallel to a specified plane normal.

6. Axis-Angle Pairs

This calculates axis-angle pairs relating crystals belonging to the cubic system. It also calculates rotation matrices and symmetry-related descriptions.

7. Orientation Relations

This calculates the orientation relationship between two crystals, each of which may belong to any crystal system, from a knowledge of a pair of vectors (in any combination of real or reciprocal) from each crystal. For example,
(1 1 0)A | | (1 1 1)B and [1 0 0]A | | [-1 0 1]B.

It calculates coordinate transformation matrices, generates lists of planes (and directions) which are parallel in the two crystals, and allows chosen vectors to be examined in detail.

8. Documentation

Gives information on the calculations performed by the program.

9. Four Index Notation

This converts four index notation to three index notation, and vice versa. Miller-Bravais notation is used for plane normals and Weber notation for directions, allowing correct use of the Weiss zone law.

10. Vector Size

This calculates the vector magnitude in Ångstroms.

11. Exit Program

Top | Next | Prev


  1. H.K.D.H. Bhadeshia, The Geometry of Crystals, Institute of Metals, London, 1987.
  2. H.K.D.H. Bhadeshia, Chapter on crystallography in Microstructural Characterisation of High Temperature Materials, ed. E. Metcalfe, Institute of Metals, London, 1988.

Top | Next | Prev


Input parameters

N/A - complete program

Output parameters

All output is to STDOUT

Top | Next | Prev

Error Indicators


Top | Next | Prev


No information supplied

Top | Next | Prev

Further Comments


Top | Next | Prev


1. Program text

       Complete program

2. Program data

None supplied.

3. Program results

None supplied.

Top | Next | Prev

Auxiliary Routines

The subroutines called by this program correspond to non-interactive routines described elsewhere in the documentation :-


Top | Next | Prev


electron diffraction, metric tensor, angle, real and reciprocal space, axis-angle pair, four index notation

Top | Next | Prev


Download source code

Download Book

Top | Prev

MAP originated from a joint project of the National Physical Laboratory and the University of Cambridge.

MAP Website administration / map@msm.cam.ac.uk

Top | Index | MAP Homepage Valid HTML 3.2!