Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RMG-Cat!! #309

Merged
merged 154 commits into from
Apr 25, 2019
Merged

RMG-Cat!! #309

merged 154 commits into from
Apr 25, 2019

Conversation

rwest
Copy link
Member

@rwest rwest commented Jan 18, 2019

This goes with ReactionMechanismGenerator/RMG-Py#1536
and brings in the changes for RMG-Cat for heterogeneous catalysis.

May be updated and rebased etc., but I think this allows the current version of that branch to function.

@rwest
Copy link
Member Author

rwest commented Jan 18, 2019

Not sure how to configure travis to use the correct version of the database for testing.

@mliu49
Copy link
Contributor

mliu49 commented Jan 18, 2019

There are some instructions here: https://github.com/ReactionMechanismGenerator/RMG-Py/wiki/Simultaneous-Update-of-RMG-Py-and-RMG-database

You might need to add a similar commit to RMG-database to use the correct RMG-Py branch, which doesn't seem to be mentioned in the wiki page.

rwest and others added 24 commits March 31, 2019 13:56
For monoradicals forming a single bond to a surface site.

fixup! Made a Surface_Adsorption_Single family.
fixup! Added a surface thermo library
Now that we have vacant site and occupied site
atom types, this gets a lot easier.
Now have van der Waals bonds and quadruple bonds.

The data came from C.F. Goldsmith's paper in
Topics in Catalysis
June 2012, Volume 55, Issue 5, pp 366-375
http://link.springer.com/article/10.1007/s11244-012-9805-3

Transcribed by Franklin
* Update surfaceThermo.py

* Update surfaceThermo.py
Replacing with the original NASA polynomials
…mo.py

Converted the thermo entries for surface species into NASA form (instead of ThermoData form). This will prevent them being translated via Wilhoits (not quite sure the asymptotes are correct for surface species? we should check this)  and should make it more obvious where they came from.
I have created three new reaction families for adsorption kinetics:
 van der Waals (vdW),
 adsorption of a triplet to create a double bond, and
 adsorption of an unsaturated species on two sites to form two single bonds (bidentate, or di-sigma).
This file contains the data we will need to estimate the thermochemistry of adsorbates from the
gas-phase precursor. Basically, Richard's commit bb6f7e71286d9fa65f153620de9ff2364c31379c
plucks the adsorbate from the surface and estimates the gas-phase thermo; this commit is the
complement, which adds back a correction to DeltaH298, DeltaS298, and Cp(T). These corrections
are based upon functional groups, R.
Created a new kinetics library for surface reactions and added dissociative adsorption of O2.
The Arrhenius numbers come from Deutschmann, converted from sticking coefficient.
Surface reaction library was updated.
I switched from Arrhenius to sticking coefficients, and I added dissociative adsorption of methane
I added a new reaction to stop non-dissociative adsorption of O2:

O2 + Ni <=> O2X
I set the pre-exponential sticking coefficient to zero:
A = 0
Otherwise, Surface_Adsorption_Single creates:
 O*
 |
 O
 |
~X~
which is not helpful.
The idea is intended for H-atom transfer between two surface adsorbates, but I have left it more general, so that any functional group R can be transferred.

X=R1 + X-R2-R3 <=> X-R1-R3 + X=R2

Note: ownReverse = true
(at the moment, it doesn't work well. It breaks because of X=O + X-CH3:
"rmgpy.data.kinetics.family.ReactionPairsError: Unable to determine reaction pairs for Surface_Abstraction reaction <Molecule "C[Ni]"> + <Molecule "O=[Ni]"> <=> <Molecule "O[Ni]"> + <Molecule "C=[Ni]">."
I added several reactions to the Surface library.
Mostly these included dissociative adsorption, or some hack to get vdW desorption working.
No major changes, except the product names in the template
are now the same as the reactant names, so that it should be
able to find its own reverse.

I also renamed them "Abstracting" and (for want of a better word)
"Donating"
If we allow triple bonds in the donating, then we need to 
allow quadruple bonds in the abstracting, so that we can find
the same reaction in both directions (needed to find kinetics).

Unfortunately this doesn't actually work and crashes for 
Carbon quadruple-bonded to the surface.
Stepping through the debugger, either
R is not matching the C, and/or Xo is not matching the surface site.
The reactant.findSubgraphIsomorphisms(struct) is in cythonized code
so I can't inspect inside it, but it seems the surface site has 
atomType 'Xv' and the C has atomType 'Cs'. Probably the atom typing
code doesn't have Q bonds.
We need to teach RMG-Py/rmgpy/molecule/atomtype.py about quadruple 
bonds first for this to work.
Things adsorbed to the surface through a quadruple bond are 
now allowed, since RMG now has quadruple bonds.
rwest and others added 26 commits April 25, 2019 17:32
Previously, (OROR)* couldn't get past the (OR2)* node
in the tree because it specified zero lone pairs.

I wonder if there are other examples in the tree where
our lone pair declarations are too specific?
We currently can't figure out the atom type for a surface site 
with two bonds (one to another surface site). And the bidentate
adsorption recipe was not joining the sites together anyway,
so any adsorbates made this way would not have the bond.

This commit removes it from the thermo adsorption energy group
estimate definitions (as these are group templates, they should 
match molecules in which the sites *are* bonded to each other,
eg. in reaction libraries, although we should work to remove those).
There are probably yet more cases of this over-specificity.
These are ones that were revealed so far by running database tests.
This doesn't have a place in the tree,
and it leads to an AtomTypeError on the O- atom
This represents X=C=C
Because the carbon bonded to the surface only has 
one ligand not two, it is not a child of the C=*R2 
node.

I also renamed it.
As I thought, there are more of these.
Going to put all the surface libraries in Surface/
(on this branch, there is only Deutschmann2006, no Vlachos2007)
Changed to vdW bond in adjacency lists of surfacethermoPt and adsorptionPt file.
Fixed a slight difference that makes in the thermo and adsorption corrections for adsorbed NN.
Fixed linear scaling comments.
Commented out NN entry in adsorptionPt file, since it is not needed, and removed N-*N-* node in tree.
Added entries for for CH2O-h in surfacethermoPt and adsorptionPt files (includes adding C-*R2O-* node in tree).
More specifically, index 62 was commented out since it should be analogous to index 51.
Fixed LSR comments due to corrected reference adatom binding energies for H, O and N.
Corrected thermo for updated heats of formation (reference values for calculating heats of formation updated to ATcT version 1.122d and thermo fixed accordingly).
Changed partition function approximation from 2D gas model to harmonic oscillator model for ten non-physisorbed adsorbates, and fixed thermo accordingly.
Fixed LSR comments due to corrected reference adatom binding energies for H, O and N.
Corrected thermo for updated heats of formation (reference values for calculating heats of formation updated to ATcT version 1.122d and thermo fixed accordingly).
Changed partition function approximation from 2D gas model to harmonic oscillator model for ten non-physisorbed adsorbates, and fixed thermo accordingly.
Fixed Cp adsorption corrections after correcting typo in unit conversion from kJ to cal and recomputing thermo.
…h_ads partition function.

Modified NO-h entries accordingly in surfacethermoPt and adsorptionPt files.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants