ReactionMechanismGenerator / RMG-Py

Python version of the amazing Reaction Mechanism Generator (RMG).
http://reactionmechanismgenerator.github.io/RMG-Py/
Other
396 stars 228 forks source link

Creation of surface species with charge separation more than one atom apart. #2716

Open kirkbadger18 opened 1 month ago

kirkbadger18 commented 1 month ago

Hello,

I have been starting to work with nitrogenous surface species and have been seeing something odd and unintentional happening. It seems that RMG is applying reaction templates that do not fit which results in charge separated species with the charges more than one atom apart.

If I work on the main branch of the database and rmg-py, and run RMG with the following script, I see it predict this reaction: input.zip

image

This reaction violates the reaction template of Surface_Monodentate_to_Bidentate. My thought is that somehow RMG is finding a resonant structure of the monodentate, where the O has a negative charge and the N has a positive charge, and is then applying the template to that species?

If this is the case, is there a way to turn this off? As I am starting to work with nitrogen species, I am building my own recipes that are able to create/remove charge separation for some species (NO2 --> NO + *O), but my recipes are clashing with these species where the charge separation exists over more than one atom.

If it is important to keep these resonant forms of adsorbates, then we will need to find a way to create recipes that can preform surface transformations on them. If we take the species the above reaction produces:

image

We would need a recipe that could dissociate the bidentate bond, or dissociate the oxygen, dissociate a hydrogen, or any number of operations. Each would need to be able to move loan pairs around to remove or create these charges.

I am curious what path we should go down. Should we remove this type of resonance for surface species, or keep it and figure out how to manipulate charge separated adsorbates more generally where the charges can be separated by more than one atom? At least for the meantime it would be useful for me to disable this type of resonance (assuming resonance is doing this). Would anyone have an idea of how to do this at least locally?

Thank you, Kirk

mjohnson541 commented 1 month ago

There's a lot of smaller issues here that probably warrant more discussion.

However, I think your more fundamental issue is that the Surface_Monodentate_to_Bidentate template allows the participating atoms to have any charge, which makes this a reaction. If you require the participating atoms to be uncharged in the template the charge separated resonance structure will not react with that template.

bjkreitz commented 1 month ago

I made a PR that fixes this issue.

https://github.com/ReactionMechanismGenerator/RMG-Py/pull/2717