  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.
