# EquilibriumCrystalStructure_Unconstrained_TypeLabels__TD_495406822220_000 KIM test driver that performs an unconstrained relaxation of a crystal described by a LAMMPS data file with type labels (https://docs.lammps.org/Howto_type_labels.html). It writes instances of the `binding-energy-crystal` (https://openkim.org/properties/show/2023-02-21/staff@noreply.openkim.org/binding-energy-crystal) and `crystal-structure-npt` (https://openkim.org/properties/show/2023-02-21/staff@noreply.openkim.org/crystal-structure-npt) OpenKIM properties, which use AFLOW prototype labels to characterize crystal structures. This test driver intended to be used for models whose inputs cannot be described as an ASE `atoms` object, for example bonded force fields or models that use special particle types that are not chemical symbols. Standard models that are compatible with ASE are tested using the following test driver: https://openkim.org/id/EquilibriumCrystalStructure__TD_457028483760_001 Package contents: * `runner` -- the test driver Python script * `in.lammps` -- the LAMMPS script used to perform the minimization * `bonded_util` -- module containing helper functions for running the tests, as well as scripts and source data for generating tests. See `bonded_util/README.md` for more info on generating tests * `test_generator.json` -- input for generating tests * `Tests` -- directory containing data files to be copied into tests during generation * `test_template` -- template directory used for generating tests ## Operational details Tests have the option of passing an AFLOW prototype label to the test driver, in which case the symmetry is required to persist through the relaxation. If the AFLOW prototype label at the end of the relaxation is different from the initial prototype label, the test will return an error. If no label is given, no such check is made. The pair interactions used in bonded force fields often have a discontinuity at the cut-off, causing minimization difficulties. To better find an equilibrium, this test driver uses a loop with three minimizations at each step: 1) A coarse energy scan under uniform expansion and compression up to 0.5%. The atomic positions and the (possibly non-orthogonal) shape of the unit cell are held fixed, while all unit cell side lengths are scaled by an equal amount. This mitigates the issue of gradient minimizations of the unit cell getting stuck at high absolute values of pressure due to discontinuities in the energy from Lennard-Jones interactions abruptly turning off at the cut-off. 2) A conjugate gradient minimization of all unit cell degrees of freedom with the atoms held fixed, starting at the point of smallest absolute pressure found during the energy scan. 3) A `fire` damped dynamics minimization of the atomic positions. Because bonded force fields (especially "core-shell" models) can have very light virtual particles attached by strong bonds leading to high natural frequencies, a small timestep is used (0.25 fs) and `fire` is only allowed to scale it by a maximum factor of 2.0. This procedure reliably relaxes bonded structures to the fairly generous tolerances of 1 kb for stress and 10 meV/Angstrom for force. More information can be found in the docstrings in `runner` and `bonded_util/bonded_util.py`