Skip to content

Next Generation RMG Ideas

Max Liu edited this page Oct 30, 2017 · 6 revisions

Introduction

The purpose of this page is to document ideas for the next generation of RMG software. These include ideas that could potentially be implemented into the current version of RMG as well as innovative ideas that would be hard to implement without a complete rewrite. The ideas on this page could be useful for new students trying to figure out how they can improve RMG or the next jwallen who wants to rewrite RMG from scratch.

Ideas

Input/Output

Custom RMG mechanism format

Design a custom file format for inputting/outputting mechanisms, in replacement of reaction/thermo libraries, Chemkin files, and Cantera files. The requirements and goals of such a new format would include the following:

  • Move away from using Python syntax and loading via an exec type command.
  • Maintain reasonable human readability
  • Include RMG generated metadata in a way that can be easily read by RMG
  • Fulfill the following roles:
    • Reaction and thermo libraries
    • Seed mechanisms
    • Restart files
    • Input for RMG based post-processing including
      • Uncertainty/sensitivity analysis
      • Mechanism reduction
      • Conversion to other file formats such as Chemkin or Cantera

Robust metadata storage would be a key feature of the new format, which is extremely fragile in all of the current formats which rely on comment writing and parsing.

Database organization

Reaction generation

Thermo estimation

Kinetics estimation

Chemical structure representation

Semi-implicit electrons

Electron tracking is currently an important part of representation via resonance structures recipes for reaction generation, but it also creates unnecessary difficulties. This idea would try to make RMG behave more like quantum chemistry software, in that electrons are not explicitly part of the molecular structure. The benefit of this would be reducing each chemical species to a single, unique representation, and the challenge would be to teach RMG more about how electrons work.

Potential implementation:

  • Eliminate bond orders. Molecular graph would only indicate basic connectivity of atoms.
  • Introduce more detailed atom electron attributes, which would indicate electrons in pi bonds, electrons not in bonds (radicals), and lone pairs.
  • For reaction recipes, bond formation would entail decrementing one of the electron attributes, followed by updating the electron status of the other atoms in the molecule if necessary.
  • Aromaticity would then be handled as a separate flag for both atoms and bonds, based on whatever perception algorithm is used.
  • This representation could be converted to a standard representation by perceiving bonds based on the number of bonding electrons in adjacent atoms.