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

Adapting kinetics for with multiple transition states #323

Closed
wants to merge 5 commits into from

Conversation

connie
Copy link
Member

@connie connie commented Jan 5, 2015

Putting up this pull request so that we don't forget about this issue: #142

In certain families, there are multiple reaction paths that can occur, sometimes with different kinetics. The example found in the issue is that of isobutyl radical + tertbutyl radical reacting to form isobutane and isobutene. There are two possible paths in the Disproportionation family: (C_rad/H2/Cs,Cmethyl_Csrad) or (C_rad/Cs3,C/H/NdNd_Csrad). What is currently found in Java is a randomly chosen version of the kinetics (Sometimes the first template appears, other times the 2nd template appears).

What these commits attempt to do is to calculate degeneracy by allowing identical reactions IF their reaction templates are different (3aea3e5). Then degeneracy is calculated separately for each 'transition state' based on bookkeeping of the reaction pairs.

Remaining issues:

  • Is matching reaction pairs sufficient? It works in the case of bimolecular reactions, but unimolecular reactions or recombination reactions (these probably don't have multiple TS's to begin with) won't really be distinguished (see Degeneracy on asymmetrical groups (1+2_Cycloaddition) #140).
  • If kinetics are identical, they should probably be combined through degeneracy for simplicity's sake in the chemkin file and then have their diff templates written as comments. In this commit they remain as duplicates.

…templates.

Preliminary fix for #142

Instead of calculating degeneracies first, find reaction templates after
generating reactions, then combine degenerate reactions only if reaction
templates match. These isomorphic reactions remain separate
(unlike in RMG-Java) in case someday we want to calculate the separate
transition states.  The reactions are added to the core and printed
to chemkin as duplicates.

Issues still remaining:
- How to identify the correct reverse reaction when having multiple TS's.
 My solution is to match the correct reaction pairs- but this only works in
the case of a bimolecular A+B=C+D reaction.  If the reaction is unimolecular,
the reaction pairs will be the same and the correct path cannot be distinguished.
- If kinetics are identical, they should be combined through degeneracy, in this
commit they remain as duplicates.
If forward reaction has the same template, then do not include it; if not, then
we have found an additional transition state and the reaction should be included.
Do not include any reverse reactions if the family has its own reverse otherwise
we are including kinetics for more than one direction.
…to figure out

which reverse reaction (if there are multiple transition states) matches the forward reaction.

This is the best I can do for now.  Maybe if there is a way to look at the mappings
of the labeled atoms this can be done better.  Already we are accounting for multiple TS's
in the forward direction, so that is already better than before.
@connie
Copy link
Member Author

connie commented Feb 5, 2015

Updated so that RMG uses the template of the reaction to determine whether the rxn has a different TS. However, it is difficult to determine which reaction to pick for families that are their own reverse. When there are two reverse reactions, which one should be picked? Probably need to use some mapping of the atomlabels with hardcoding for those families..

The specific case that might be looked into is the reaction between these two species reacting in Intra_H_migration. This is for future reference.

species(
label='A',
reactive=True,
structure=SMILES("[O]c1c[c]oc1"),
)

species(
label='B',
reactive=True,
structure = SMILES("[O]c1[c]coc1"),
)

@goldmanm
Copy link
Contributor

This is on hold likely till #1055 gets merged

@goldmanm goldmanm closed this Jun 23, 2017
@goldmanm goldmanm reopened this Jun 23, 2017
@mliu49
Copy link
Contributor

mliu49 commented Jun 23, 2017

Replaced by #1055.

@mliu49 mliu49 closed this Jun 23, 2017
@goldmanm goldmanm deleted the multipleTS branch June 23, 2017 20:54
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.

3 participants