GreenGroup/RMG-Py — pull request #322 by connie (2014-12-16 22:33:31+00:00)
Title: Aromatic form as a resonance isomer

Implement a getAromaticResonanceIsomers() function in the Molecule class to make the aromatic form as a resonance isomer in Species objects. This will have similar consequences as Java where the aromatic resonance isomer's thermo can take on Cb group additivity values and give a more stable thermo value, which ultimately gets used by the species.

I've taken out the aromaticity check in the calculateCyclicSymmetryNumber function in favor of making it a resonance isomer. We need the Cb bonds for thermo group addivitiy even more so than for symmetry number, and also now symmetry number will be calculated correctly ("more" correctly than before) for the aromatic resonance form and therefore produce the correct entropy.

Some notes:
- The aromaticity perception is done by converting to an rdkitmol and then changing the bond and atomtypes in the resonance form. Like in RMG-Java, we restrict converting to B bonds to 6-membered rings which are carbon-only. This means that no aromatics containing heteroatoms are converted. We simply do not have the right atomtypes to support this right now.
- Some compounds such as Benzyne are aromatic but cause problems because the pi bond is in fact a triple bond, and carbon cannot handle having both a B bond and triple bond present. Therefore, only 6-membered rings with all aromatic bonds can be converted. This means we are getting things wrong for benzyne... but it's ok for now.

Right now there aren't too many consequences for kinetics because there are very few 'Cb', 'Cbf' groups in the kinetic families. The reactions should still occur between the kekulized forms while the species uses aromatic thermo. However, now that we are storing an additional isomer this probably uses slightly more memory.