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

Using objectives (properties) calculated by external codes, XtalOpt can perform multi-objective global optimization to find novel (meta)stable phases of functional materials.


XtalOpt is an open-source code, published under the "NEW" BSD License, designed to perform multi-objective evolutionary search for novel functional materials. Local optimizations can be performed using a variety of explicitly supported first-principles codes and classical force fields (e.g. VASP, Quantum-Espresso, Abinit, and GULP); while any desired total energy calculation tool (e.g., machine learning potentials) can be utilized through scripting.

Xtalopt is developed in Eva Zurek's group in University at Buffalo by (in alphabetical order):

With questions, bug reports, and collaboration proposals please contact Eva Zurek at ezurek-at-buffalo.edu.


❒ May 6, 2024: XtalOpt Version 13.0 Released

  • Added the multi-objective evolutionary search (MOES) functionality to search for novel functional materials through:
    (1) optimization of a desired set of user-specified objectives (including the AFLOW-ML hardness),
    (2) constrained evolutionary search.

  • xtalopt-moes-tab.png

    MOES tab in the graphical user interface of XtalOpt version 13.

  • Implemented the "localQueue" option to run XtalOpt locally on a computational cluster with local optimizations submitted to a queue.

    Setting the volume limits using the scaled volume option in the graphical user interface of XtalOpt version 13.

  • Added the "scaled volume" option to set the minimum and maximum volume limits for the search.
  • Added the "softExit" and "hardExit" options to command-line interface for terminating the XtalOpt run once desired number of structures are generated.
  • Added the support for the VASP machine learning OUTCAR output files.
  • Various bug fixes.

❒ Oct 21, 2018: XtalOpt Version r12.0 Released

  • Added a hardness calculation via AFLOW-ML (Automatic FLOW for Materials Discovery - Machine Learning).
  • Added a hardness fitness function, which allows for the prediction of hard structures.
  • Added a generic optimizer, which allows the user to employ many previously unsupported optimizers for minimizing the geometry of an extended system.

  • xtalopt-hardness-enthalpy-plot.png

    Example of a Hardness vs. Energy plot generated during a hardness search with XtalOpt.


    Example of a simulated XRD pattern generated with XtalOpt.

  • Added the ability to generate a simulated XRD (X-Ray Diffraction) pattern.
  • Added the ability to use different optimizers and queuing interfaces for each optimization step.
  • Implemented various bug fixes.

❒ Sep 11, 2017: XtalOpt Version r11.0 Released

  • Removed dependence on Avogadro and Open Babel, making XtalOpt a stand-alone program rather than an extension.
  • Changed the license from GPLv2 to a 3-Clause BSD license.
  • Added the optional use of Avogadro2 to render crystals through a remote procedure call (RPC) protocol.

  • avogadro2rpc.png

    Example of using Avogadro2 to render a crystal via RPC.


    Example of using the CLI mode of XtalOpt.

  • Added a command-line interface (CLI) to run the program and generate plots.
  • Added the ability for the user to define custom minimum inter-atomic distances (IAD) between pairs of atom types.
  • Implemented various bug fixes.

❒ Jun 14, 2017: XtalOpt Version r10.0 Released


  • Implementation of RandSpg, an algorithm that generates random crystals with specific spacegroups. This algorithm can optionally be used to create symmetric structures in the initial random generation.

  • randspg-dialog
  • Inclusion of variable formula units within XtalOpt enables the search for cells with multiple numbers of formula units within a single run.

  • formula units

  • A molecular-unit generator permits users to create single-center molecules in the unit cell during the initial generation step.

  • molUnit

❒ 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.

❒ Aug 11, 2016: XtalOpt Version r9.1 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.

  • mitosis.png

    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 bug fixes.


ub-logo.png nsf_seal_scaled.png
Back to Top ⇧