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

A detailed user guide for the XtalOpt setup and usage:

User Guide

Full description of the implemented methodology:


A quick overview of the XtalOpt code features:

Graphical User Interface Multi-Objective Search Evolutionary Operations

Graphical 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., 4 x Ti and 8 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.
  • Choosing the scaled volume sets the volume range based on total volume of van der Waals spheres of atoms in the cell.

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 proceed.
  • 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 occurrence of each operator type.
  • Furthermore, the individual parameters of each operator 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.

Multiobjective Search

  • To utilize the multi-objective search functionality of XtalOpt, the user can add desired "objectives", i.e., any property that can be calculated for a structure, for simultaneous optimization with total enthalpy.
  • The "Multiobjective Search" tab allows the user to specify for each objective:
    • the optimization type,
    • corresponding weight,
    • path to the (potentially) external code or script that calculates that objective,
    • the output file name of the external code for reading the corresponding calculated value.

The "Multiobjective Search" tab



The "Progress" tab



The "Plot" tab showing optimized (blue) structures


The "Plot" tab showing optimized (triangles) and duplicate and supercell (squares) structures

Multi-Objective Search

User-specified objectives

Generalized fitness function

Evolutionary Operations








Back to Top ⇧