Antiprism Up Next

bravais - Bravais lattices

Usage    |    Examples    |    Notes


Usage: bravais [options] crystal_system [centering]

Generate Bravais lattices in OFF format. lattice may be specified by its index
number or (start of the) crystal_system name and centering

Crystal System   Centering   Vector Constraints  Angle Constraints
Triclinic        P           no constraints      any not of higher symmetries
Monoclinic       P,C         no constraints      alpha = gamma = 90 <> beta
Orthorhombic     P,C,F,I     a <> b <> c         alpha = beta = gamma = 90
Tetragonal       P,I         a = b <> c          alpha = beta = gamma = 90
Trigonal         P           a = b = c           alpha = beta = gamma <> 90
Hexagonal        P           a = b, c            alpha = beta = 90, gamma = 120
Cubic            P,F,I       a = b = c           alpha = beta = gamma = 90

Centering Types: P - Primitive (Simple) centering on corners (default: P)
                 C - Base (also A or B)  F - Face centering  I - Body centering

Synonyms: Rhombohedral = Trigonal  sc = Cubic P  fcc = Cubic F  bcc = Cubic I

  -h,--help this help message (run 'off_util -H help' for general help)
  --version version information
  -H        additional help
  -I        verbose output
  -l <lim>  minimum distance for unique vertex locations as negative exponent
               (default: 12 giving 1e-12)
  -o <file> write output to file (default: write to standard output)

Lattice Options
  -v <v,n>  vector lengths, non-zero, in form "a,b,c" (default: calculated)
               optional fourth number, vectors taken to root n
  -a <angs> angles in the form "alpha,beta,gamma". Ignored for Orthorhombic,
               Tetragonal, and Cubic. For Hexagonal, any non-90 position may be
               120. Otherwise, if not supplied then random angles are chosen.
               Angles cannot be zero or 180. Angles may be negative values.
               alpha + beta + gamma must be less than 360. Each angle must be
               less than or equal to the sum of the other two angles
  -g <grid> cell grid array. one or three positive integers separated by commas
               a - automatic, of sufficient size for radius (-G required)
               one integer, NxNxN grid. (default: calculated)
               three integers, IxJxK grid. Combinations for grid center:
               even,even,even - on cell corner    odd,odd,odd - in cell body
               even,odd,even - on cell mid-edge   odd,even,odd - on face center
  -G <type> automatic grid center type (type 8 invalid for cell centering = P):
               p - corner, i - body, f - face, e - mid-edge, 8 - eighth cell
  -d <vrts> output dual of lattice based on primitive vectors
               c - use primitive vectors base on centering type
               four integers - primitive vectors are determined by four vertex
                 numbers given by non negative integers. The first vertex
                 number is the radial point and the next three vertices are the
                 primitive vectors
  -u        add cell struts. Added to cubic grid before transformation
  -s <s,n>  create struts. s is strut length taken to optional root n
               use multiple -s parameters for multiple struts
  -D <opt>  Voronoi (a.k.a Dirichlet) cells (Brillouin zones for duals)
               c - cells only, i - cell(s) touching center only
  -A        append the original lattice to the final product

Container Options
  -c <type> container, c - cube (default), s - sphere (uses radius)
  -k <file> container, convex hull of off file or built in model (uses radius)
  -r <c,n>  radius. c is radius taken to optional root n. n = 2 is sqrt
               or  l - max insphere radius, s - min insphere radius (default)
               or  k - take radius from container specified by -k
  -p <xyz>  radius to lattice point "x_val,y_val,z_val"
  -q <vecs> center offset, in form "a_val,b_val,c_val" (default: none)
  -C <opt>  c - convex hull only, i - keep interior

Coloring Options (run 'off_util -H color' for help on color formats)
  -V <col>  vertex color, (optional) elements, (optional) transparency
               elements to color are l - lattice, c - convex hull, v - voronoi
                                     h - hex relation (default elements: lcvh)
               transparency. valid range from 0 (invisible) to 255 (opaque)
  -E <col>  edge color (same format as for vertices)
  -F <col>  face color (same format as for vertices)
               lower case outputs map indexes. upper case outputs color values
               key word: s,S color by symmetry using face normals
               key word: c,C color by symmetry using face normals (chiral)
  -T <tran> face transparency for color by symmetry. valid range from 0 to 255

Scene Options
  -R <opt>  hexagonal/cubic relation (Cubic P or Trigonal only)
               o - hex overlay, f - hex fill, O - cube overlay, F - cube fill
  -O        translate centroid of final product to origin
  -Z <col>  add centroid vertex to final product in color col
  -K        append cage of container of -k to final product

Listing Options
  -B        display the list of Bravais lattices
  -Q <vecs> center for radius calculations in -L (default: centroid)
               c - original center, o - original center + offset in -q
  -L <opt>  list unique radial distances of points (to standard output)
               f - full report, v - values only
  -S <opt>  list every possible strut value (to standard output)
               f - full report, v - values only


Make a cubic section of CCP
bravais fcc | antiview -v b

Make a spherical section of BCC with struts from centre to vertex
bravais bcc -c s -r 4 -s 3,2 | antiview

Make the Voronoi cells of a lattice
bravais bcc -g 3 -D c | antiview

Add the Voronoi cells to a lattice
bravais bcc -g 3 -D c -A | antiview -v 0.1

Make the dual of a lattice
bravais bcc -d c | antiview -v b

Make a triclinic lattice, include the cell grid
bravais triclinic -a 60,70,80 -v 1,1.5,2 -u | antiview


bravais was written by Roger Kaufman.

The following extended help for the program may be displayed with bravais -H

Definition: (partly from
In geometry and crystallography, a Bravais lattice, named after Auguste
Bravais, is an infinite set of points generated by a set of discrete
translation operations. A crystal is made up of one or more atoms (the basis)
which is repeated at each lattice point. The crystal then looks the same when
viewed from any of the lattice points. In all, there are 14 possible Bravais
lattices that fill three-dimensional space.

August Bravais (1811-1863), a French naval officer, adventurer, and physicist
taught a course in applied mathematics for astronomy in the faculty of sciences
in Lyon from 1840. He served as the Chair of Physics, Ecole Polytechnique
between 1845 and 1856. He is best remembered for pointing out in 1845, that
there are 14 unique Bravais lattices in three dimensional crystalline systems,
adjusting the previously result (15 lattices) by Moritz Ludwig Frankenheim
obtained three years before.

A German Crystallographer, Frankenheim (1801-1869) is noted as the first to
enumerate the 32 crystal classes. And he also solved the symmetry systems of
the 7 crystal systems but this work went completely unnoticed at the time.

There is a bit of mystery surrounding what Frankenheim had as the 15th lattice.
Even today, in some texts the Hexagonal lattice with two interior points is
shown in the Trigonal class. But these two lattices use the same set of points
and it is thought that it was this duplication that was eliminated by Bravais.
However, in Bravais' paper, there is no mention of Frankenheim or the
enumeration of lattices he presented.

In this program, the Hexagonal cells and Trigonal cells can be seen together
by using the -R parameter.

Note that End Centered Cubic (would be Cubic C) does not exist but can be
produced by Tetragonal P that has cells of dimensions a,b,c = 1,1,sqrt(2)

Face Centered Cubic (Cubic F or FCC) is duplicated in Body Centered Tetragonal
(Tetragonal I) of dimensions a,b,c = 1,1,sqrt(2). However, the FCC embodied
would be of higher symmetry than the Tetragonal crystal system is allowed.

Similarly, Trigonal at 90 degrees (improper) is SC. Trigonal at 60 degrees is
FCC and Trigonal at acos(-1/3) or 109.47122063449... degrees is BCC.

Also there is no provision for Face Centered Tetragonal (would be Tetragonal F)
or Base Centered Tetragonal (would be Tetragonal C). These would be embodied in
Body Centered Tetragonal (Tetragonal I) and Simple Tetragonal (Tetragonal P)
respectively. This is true at any proportion other than a,b,c = 1,1,sqrt(2)

In Hexagonal, Orthorhombic C can be seen to occur. When Hexagonal of a=b=c is
produced, then Base Centered Tetragonal (would be Tetragonal C) occurs.

Hexagonal is sensitive to which unequal vector corresponds to the non-90 degree
angle. These must be in the same position or a Monoclinic lattice is produced.

Bravais lattices will fall into the following symmetries

Crystal System   Possible Symmetries (32 possible - note no 5 fold symmetries)
Triclinic        C1 Ci
Monoclinic       C2 Cs C2h
Orthorhombic     D2 C2v D2h
Tetragonal       C4 S4 C4h D4 C4v D2d D4h
Trigonal         C3 S6 D3 C3v D3d
Hexagonal        C6 C3h C6h D6 C6v D3h D6h
Cubic            T Th O Td Oh

Of the symbols used for cell centering:

P - stands for Primitive. It is a cube depicted by a vertex at eight corners
C - stands for having a point filled in on the "C" side of the primitive cell
    this is described in some texts as Base Centering. C is most commonly used
    A or B means use the "A" or "B" sides instead. Just a rotation of C
F - stands for Face Centering and fills all three, "A", "B" and "C" sides
I - (from German: innenzentriert, meaning Body Centered) is the primitive cell
    with one point filled in the center of the cell

The term Isometric is sometimes used for Cubic. Also allowable in this program.

Monoclinic is defined in this program with angles alpha = gamma = 90 <> beta
as is found in the first volume of International Tables for Crystallography.

Vectors a, b and c correspond to axes x, y and z (before transformations).

     Next: lat_util - lattice utilities
     Up: Programs and Documentation

Home   |   Programs   |   Examples   |   Album   |   Download   |   Development   |   Forum   |   About

Contact:      -      Modified 12.9.2016