Testing and Debugging Your Crystal Genome Test Driver
When your Test Driver is integrated into the OpenKIM Processing Pipeline, the auxiliary files supplied with your
Test Driver will be used to pass inputs and parse outputs from the calculation you have implemented in test_driver.py.
This functionality is also available for testing in the KIM Developer Platform. More information about this is avalable
here: Metadata and KIM Processing Pipeline Integration, however it is likely that you will first wish to test your Driver by invoking it directly.
Examples for how to do that are found in the script run.py from https://github.com/openkim-hackathons/CrystalGenomeASEExample__TD_000000654321_000. Use this as a starting point for running your
own Test Driver, changing the passed arguments and the properties printed out. To see a rendered version of that file explaining its functionality,
follow the link in the Example Script for Running a Crystal Genome Test Driver section below.
A practical guide for testing your Driver on a variety of crystal structures is found at the bottom of the page in the section 'Curated Set of Test Cases'.
Everything you need to run the example script is containerized in the KIM Developer Platform,
or alternatively will be installed if you follow the Standalone Installation, except for the kimvv package, which can be installed using
pip install kimvv.
If you have not requested your new properties to be added to OpenKIM, remember that kim-tools will automatically look for property definitions in the local-props and local_props subdirectories of the current working directory. If you wish to put them somewhere else,
you can point the environment variable KIM_PROPERTY_PATH to their location. kim-tools will expand any globs, including recursive **. Conversely, if the properties
you are using are already in OpenKIM, do not use local property definition files.
Example Script for Running a Crystal Genome Test Driver
Curated Set of Test Cases
Because your Test Driver will run on a wide variety of crystals and interatomic potentials, it is important to test it on a diverse selection of both. Below is a curated table of test cases that you can query for. These are arranged in increasing symmetry order (from triclinic to cubic). Here are some important considerations when choosing test cases for your Driver:
Make sure your driver runs with both Simulator Models and Portable Models. If your Test Driver uses LAMMPS, make sure it runs with models that use both
atom_style atomicandatom_style charge. A good way to do this is to test with any Portable Model, and a Buckingham or ReaxFF Simulator Model. Note that both of these are idiosyncratic -- ReaxFF are very slow and not great at reaching a low tolerance in static minimizaton, while Buckingham are much faster, but are even worse at static relaxation.Try to test on a variety of symmetries. If your Test Driver only computes scalar properties, it is less important to test on every crystal family, while for tensor properties, you should test robustness across symmetries more thoroughly.
You can explore more prototypes at http://aflow.org/prototype-encyclopedia/, but it is not guaranteed that OpenKIM will have results or a compatible interatomic potential (https://openkim.org/browse/models/by-species).
All models must be istalled before being used. Note that in a script using multiple models, you will need to re-instantiate
your TestDriver class with a new model each time.
Stoichiometric Species |
Prototype Label |
Potentials to Test With |
Structure and Potential Notes |
|---|---|---|---|
['Ca', 'O', 'Si'] |
AB3C_aP30_2_3i_9i_3i |
Sim_LAMMPS_Buckingham_FreitasSantosColaco_2015_SiCaOAl__SM_154093256665_000 |
OpenKIM has two relaxed structures for this row, one corresponding to Wollastonite, and one to some other structure. Buckingham potentials have short-range interactions with sharp cutoffs, combined with long-range electrostatics, which can cause a rough energy landscape. |
['Ni', 'Ti'] |
AB_mP4_11_e_e |
This is the B19' phase of NiTi. Many potentials incorrectly relax/equilibrate this structure to the higher-symmetry B33 structure, even some specifically designed to model B19'. This potential appears to correctly stay in the B19' phase, tested at 0K and 300K. |
|
['U'] |
A_oC4_63_c |
Follow the link to the OpenKIM model and find the original model paper under "How to Cite" for information about this alpha-uranium structure. |
|
['Mo', 'Ni'] |
AB4_tI10_87_a_h |
See https://aflow.org/p/AB4_tI10_87_a_h-001/ and the references within for information about this structure. |
|
['O', 'Ti'] |
A2B_tP6_136_f_a |
Sim_LAMMPS_Buckingham_MatsuiAkaogi_1991_TiO__SM_690504433912_000 |
https://en.wikipedia.org/wiki/Rutile. See note above regarding Buckingham potentials. |
['Al', 'Pd'] |
AB_hR26_148_a2f_b2f |
See https://aflow.org/p/AB_hR26_148_a2f_b2f-001/ and the references within for information about this structure. |
|
['O', 'Si'] |
A2B_hP9_154_c_a |
Sim_LAMMPS_Vashishta_BroughtonMeliVashishta_1997_SiO__SM_422553794879_000 |
This is alpha-quartz, the ground state of quartz: https://en.wikipedia.org/wiki/Quartz |
['As', 'Ga'] |
AB_cP16_205_c_c |
Sim_LAMMPS_BOP_MurdickZhouWadley_2006_GaAs__SM_104202807866_001 |
Follow the link to the OpenKIM model and find the original model paper under "How to Cite" for information about this "sc16" structure of gallium arsenide. |
['Ce', 'O'] |
AB2_cF12_225_a_c |
Sim_LAMMPS_ReaxFF_BrugnoliMiyataniAkaji_SiCeNaClHO_2023__SM_282799919035_000 |
This is ceria: https://en.wikipedia.org/wiki/Cerium(IV)_oxide. ReaxFF potentials are slow and sometimes not particularly well-behaved because they equilibrate the charge on each atom at each simulation step. |
['Al'] |
A_cF4_225_a |
This is FCC aluminum. |