StructOpt: A modular materials structure optimization suite incorporating experimental data and simulated energies
StructOpt, an open-source structure optimization suite, applies genetic algorithm and particle swarm methods to obtain atomic structures that minimize an objective function. The objective function typically consists of the energy and the error between simulated and experimental data, which is typically applied to determine structures that minimize energy to the extent possible while also being fully consistent with available experimental data. We present example use cases including the structure of a metastable Pt nanoparticle determined from energetic and scanning transmission electron microscopy data, and the structure of an amorphous-nanocrystal composite determined from energetic and fluctuation electron microscopy data. StructOpt is modular in its construction and therefore is naturally extensible to include new materials simulation modules or new optimization methods, either written by the user or existing in other code packages. It uses the Message Passing Interface's (MPI) dynamic process management functionality to allocate resources to computationally expensive codes on the fly, enabling StructOpt to take full advantage of the parallelization tools available in many scientific packages.