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

Invoking a Crystal Genome Test Driver Directly

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 atomic and atom_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

MEAM_LAMMPS_KimKimJung_2017_NiAlTi__MO_478967255435_002

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

MEAM_LAMMPS_FernandezPascuet_2014_U__MO_399431830125_002

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

SNAP_LiHuChen_2018_NiMo__MO_468686727341_000

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

MEAM_LAMMPS_JeongParkDo_2018_PdAl__MO_616482358807_002

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

EAM_Dynamo_ErcolessiAdams_1994_Al__MO_123629422045_006

This is FCC aluminum.