XtalOpt is a free and truly open source evolutionary algorithm designed for a priori crystal structure prediction.

Download today

What is new?

Learn more

Space Group Generator

RandSpg is an algorithm developed by Patrick Avery. RandSpg generates random crystals of specific spacegroups and allows the user to specify a lot of information such as minimum interatomic distances, volume constraints, etc.

The source code is available under the "New" BSD open source license and may be viewed at its Github repository.


If you encounter any bugs, please email psavery@buffalo.edu


Avogadro2 Updates

Our Ph.D. student, Patrick Avery, was accepted to the Google Summer of Code 2016!!!

He has been working on Avogadro2.

You can read about his most recent work on his blog.

XtalOpt Version r9.0 Released!

  • Customizable polling interval for updating remote queue information.
  • Automatic removal of remote working files optional.
  • xtalopt-queue.png
  • Optional removal of unnecessary files for VASP calculations.
  • Added a new "mitosis" function used to generate higher local order for initial structures.


    Options for the "mitosis" function found in the "Structure Limits" tab.

  • Option to rank all current structures and export structures to a new subdirectory as .cml, CONTCAR, or .got.
  • Limit the total number of structures created during a run.
  • New option to replace a failing structure with a new offspring.
  • Ability to “inject” (seed) a structure mid-run
  • Minimum atomic separation now specified as a fraction of the sum of atomic radii, with a hard minimum.
  • Submission of remote calculations is throttled to ease DRMS load.
  • More server-friendly method of fetching queue data.
  • Support for GULP shell/core calculations added.
  • Incorporated the XtalComp library for duplicate structure removal (niching).

  • xtalopt-dup.png

  • Fix compilation against Qt 4.6.3 and 4.8.0.
  • Updated space-group detection library to spglib 1.0.8.
  • Bundled libssh library removed, now an optional dependency.
  • Added option to use command-line ssh/scp interfaces when libssh is unavailable or Kerberos authentication is needed.
  • Implemented an extension for an automated stochastic docking program (RandomDock) that supports MOPAC, ADF, GAMESS and Gaussian as back-end molecular quantum chemistry engines.
  • Numerous misc bugfixes.


XtalOpt is implemented as an extension to the Avogadro molecular editor.

avogadro-logo.png + xtalopt-logo.png

Check out a few of the features:

User Interface Mutation Operators


Screenshot of Avogadro visualizing a 16 x TiO2 cell.

User Interface

Structure Limits


The "Structure Limits" tab

  • This tab is where the user defines the parameters of the each cell generated during the search.
  • The user can specify the stoichiometry for each cell (e.g., 16 x Ti and 32 x O).
  • A range can be set for the length of each cell vector (a, b, and c) and the corresponding angles (α, β, and γ).
  • The combination of the cell vector lengths determines the cell volume, but the user can set a limited range for the volume, or even a fixed volume.
  • Limiting the interatomic distances ensures the program is not generating nonsensical structures.

Optimization Settings

  • Choose from several queueing systems and optimizer combinations.
  • Queue systems supported include: SLURM, PBS, LSF, etc.
  • Optimizers include: VASP, GULP, CASTEP, etc.

The "Optimization Settings" tab

Search Settings


The "Search Settings" tab

  • "Search Settings" is where the user can alter how the search will procede.
  • The number of randomly generated initial structures and number of concurrently running structures are controlled in this tab.
  • The termination criteria of final number of structures can be set here, as well.
  • Users can adjust the percentage of occurence of each operator type.
  • Furthermore, the individual parameters of each opertaor can be fine tuned (number of exchanges in a "permustrain" or minimum contribution from a parent during a "crossover").
  • Duplicate matching parameters are also found here.



The "Progress" tab



The "Plot" tab showing optimized (blue) structures


The "Plot" tab showing optimized (blue) and duplicate (green) structures

Mutation Operators










ub-logo.png nsf_seal_scaled.png