Closed TaikiKato closed 1 year ago
So the R_Addition_MultipleBond radical templates aren't atomtyped for Si which is probably preventing typical radical polymerization in RMG involving radicals on Si. It's not that hard to just allow it, but we don't have any training reactions in that family that have Si in them so without adding data it could be very inaccurate.
It seems to me that almost none of the information in that paper got merged into RMG proper. I'm not finding any thermo group data for Si, the Si specific reaction families or the Si training reactions for H_Abstraction and R_Recombination from the paper. @rwest is there a reason it was never added?
Ummmm.... I don't recall an explicit roadblock. Other than @bslakman graduating 5 years ago. I think the work is still there, e.g. at https://github.com/ReactionMechanismGenerator/RMG-database/compare/master...bslakman:silicon-hydrides?expand=1 , if someone wants to try bringing it up to date. I had an MS student attempt to revive it a couple of years ago. I think they got something to run, but they didn't get it merged either.
Can I use the SixHy merged RMG ? How to draw the integrated simulator data ?
I've appended Dollet & Giunta SixHy chemistry sets into thermo-library & kinetic-library by importChemkinLibrary.py.
dict_Dollet.txt dict_Giunta.txt
chem_ann_Dollet.txt chem_ann_Giunta.txt
And, I tried to import Dollet & Giunta kinetic-library to kinetic-family by kinetic_library_to_train.ipynb. But, I encountered some errors.
In Dollet case, error occured in step 2a : AttributeError: 'rmgpy.kinetics.falloff.Troe' object has no attribute 'A'
In Giunta case, something wrong phenomena occured in step 2d : No reactions
Will you please tell me how to modify these errors ? Please teach me some advice.
kinetics_library_to_training_SixHyGiunta.txt kinetics_library_to_training_SixHyDollet.txt
I've got reasonable work on kinetics_library_to_training_SixHyDollet.ipynb. The error cause may be from Troe-type format processing. I modified kinetic_library_to_training_tools.py & got reasonable work.
kinetics_library_to_training_tools.txt kinetics_library_to_training_SixHyDollet.txt kinetics_library_to_training_SixHyGiunta.txt
I got 1 additional reaction family by kinetics_library_to_training_SixHyDollet.ipynb. And, I got 0 additional reaction family by kinetics_library_to_training_SixHyGiunta.ipynb. I considered that 0 additional reaction family is reasonable if the reaction set is not novel. Is this understanding O.K.
Will you please teach me some comments & advices ? And now, I hope to add other chemkin reaction model into library & family. Do you know the good literature about SixHy pyrolysis reaction system ?
So it should try to create a training reaction for every reaction with Arrhenius kinetics that can be generated by RMG's families (even if it has another copy) so what that probably means is that RMG currently isn't set to generate most of the reactions that are Arrhenius in the library. Some of RMG's families like R_Addition_MultipleBond that I mentioned above may need their groups modified to enable them to match reactions involving Si.
If you want to try doing this I'd recommend watching: https://www.youtube.com/watch?v=JMnJieSPOfE and https://www.youtube.com/watch?v=g3VToqUXovE
Thank you for your advices. I've watched your movies. But, I found it difficult to understand. I found that there are many files in kinetics families.
* the files *** / NIST folders / / training / / groups.py / / rules.py / / template.cdx / / template.eps /
Which file should I modify in this directory ? Will you please teach me how to add reaction template ? Do you know some easy to read documents ?
I've made an SiRadd branch of RMG-database that I think should make it possible for Si radicals to add across double bonds.
In general our documentation is here: http://reactionmechanismgenerator.github.io/RMG-Py/users/rmg/index.html
Particularly of interest probably: http://reactionmechanismgenerator.github.io/RMG-Py/reference/molecule/adjlist.html#rmgpy-molecule-adjlist http://reactionmechanismgenerator.github.io/RMG-Py/users/rmg/database/kinetics.html http://reactionmechanismgenerator.github.io/RMG-Py/users/rmg/database/modification.html
Thank you for your document links & SiRadd branch making. But, I don't know how to access SiRadd branch. Below commands are correct ?
git fetch git checkout -b SiRadd origin/SiRadd
I read these documents. There are groups, rules & template explanation. In SixHy case, groups.py & traning are important ?
Yes I think those commands should work.
Yes, so the top level groups and forbidden structures determine what reactions can happen and the lower level groups and training reactions determine how reactions are estimated.
I tried git branch download. git fetch & git checkout -b SiRadd origin/SiRadd. This command made SiRadd branch.
However, my own library JP-10 disappeared by this operation. How to download git branch & keep my own files ? I'm not good at github operation. It's difficult for me.
And, I tried kinetics_library_to_training.ipynb in SiRadd branch. But, it made little training reactions & made some error. Is this reasonable operation or not ? ('Not Arrhenius form' is O.K. for training reaction ? Must I operate group.py files ? )
kinetics_library_to_training_SixHyDollet.txt kinetics_library_to_training_SixHyGiunta.txt
And I have another question about pressure dependent rate calculation. I think that RMG-Py can generate pressure dependent reaction rate PLOG or Chebyshev. But, Arkane has pressure dependent reaction network solving function.
How are they different about pressure dependent rate calculation ? If I hope to derive pressure dependent rate in unimolecular reaction network, Which should I use RMG-Py or Arkane ? ( And how to use it ? )
If the JP-10 library exists on a different branch it will disappear when you change branches. It might be best to cherry-pick the commits on SiRadd to your own branch.
Training reactions need to be in Arrhenius form. You technically don't have to modify the groups.py files to add training reactions, but the new training reactions may not have new nodes to go to in the tree which limits their effectiveness (they may all end up at the same node and you just get an average of all the ones that have important Si atoms).
So RMG does pdep for the whole mechanism in an approximate fashion where k(E) barrier heights and frequencies are all estimated. Arkane's primary pdep functionality does one network at a time and requires quantum chemistry calculations for every species and reaction. Arkane's explorer tool fuses functionalities it automatically generates individual pdep networks and can freely mix quantum chemistry information with RMG estimates.
Thank you for your reply. In this SixHy case, I may be ought to add kinetic patterns to groups.py.
From your answer, I thought that RMG-Py gives rough Chebyshev form estimation from Arrhenius form and Arkane gives high precision Chebyshev form result from quantum chemistry results, right ? I have the question that RMG-Py can give Chebyshev form on complex unimolecular network ? How to get VTST form Arrhenius parameters from quantum chemistry or RMG related software ?
Broadly yes. The primary difference between Arkane and RMG-Py's pressure dependent network calculations is that the quantum chemistry results are approximated, RMG-Py networks will tend to be more complex than most people would formulate in Arkane because they are generated automatically by the flux algorithm rather than by hand.
We don't have any software that does VTST we would normally use Polyrate or MESS for VTST.
Thank you for your lecture. Arkane sounds more suitable to build Pdep network rate than RMG-Py does. In VTST calculation, which solver is most recommended in Polyrate, MESS or MESMER ?
From your knowledge, which solver is the best for VTST calculation ?
I don't have much experience with VTST. I think the only one actively used in the Green group at the moment for VTST is Polyrate, but I'm not really sure what the differences are between all of them. In the past I recall having difficulties installing Polyrate and MESS on our servers, but having comparatively little trouble installing MESMER.
Thank you very much. So, Polyrate may be good for learning from the Green group. And, MESMER may be easy to install.
I found interesting literatures about SixHy thermo & kinetic data.
I thought that thermo groups.py & ring.py modification may be easier than kinetic groups change and I may be able to add SixHy thermo GAVs in RMG database.
But, kinetic groups modification looks very difficult.
rules.py may be Evans-Polanyi relationship, right ? ( k = A exp [ -(E0 + alpha dH ) / RT ] ) I wonder Evans-Polanyi is so accurate for general chemical reaction rates.
groups.py looks very, very difficult. Don't you know most simple groups.py or some groups.py building lecture by manual ?
template.cdx & template.eps : What are these files ? How to make or use them ?
training directory : If rules.py was completely made by upper literature data. These training data look not essential. What do training data do in RMG-database ? Is this data used for rules.py parameter setting ?
NIST directory : I thought that this directory is similar to training directory. Is this used for rules.py rate data training ?
There are many questions in RMG-database building. If you are O.K., please give some advices about them.
template.cdx & template.eps are just image files showing a visual representation of the family.
So we're currently in the middle of moving from manually written kinetics groups to groups written automatically using machine learning.
In the old scheme training reactions become rules by descending the trees to the most specific node they match and becoming a rule there when the tree is loaded.
In general after experimenting with it we found NIST wasn't a sufficiently trustworthy source of training data to use normally using when training trees, but the data is still there in NIST directories in case anyone finds a use for it.
At least for the kinetics it may be most advisable to simply add the training reactions and let our algorithm automatically generate the kinetics groups and rules for you rather than trying to learn the system yourself. However, we aren't quite at the stage right now where a user can just run the script for any family and expect it to work properly. Some of the families should be there soon and I'm hoping to have most of them done in a few weeks, but at the moment it won't work for most families.
Thank you for your information. So, I'll ignore template.cdx, template.eps & NIST directory. I understood that you are trying to build the scheme of automated groups.py & rules.py making now. (Present status may be manual groups.py making.)
From your comments, I imagined that the present kinetic building flow is below.
Is this flow correct ? please let me know the details of script "3". ( Can I use it ? or not recommended ? )
And, I've got reaction template from the previous literatures. So, I think that I may build rule.py directory from literature information. And, I don't have the concrete training reaction set. Can I use kinetic template without training directory ? I suspect that below files may be enough to build kinetic rate template in my present status.
A. groups.py B. rules.py
Is my understanding correct ? Will you please give some advices ?
I built SixHy thermo group.py & ring.py from this literature GAVs. ( https://pubs.acs.org/doi/10.1021/jp030727k : Table 8)
I've checked thermodynamic output from thermoEstimator.py. Attached chem_annotated.inp & species_dictionary.txt are the output of python thermoEstimator.py input.py.
chem_annotated.txt input.txt species_dictionary.txt
I think that thermo-DB file setting may be O.K. I'll check the H, S, Cp value validation tomorrow. Thank you very much for your kind consultation.
By the way, I think that the literature GAVs are lucky finding. I should know how to get GAVs in any chemistry systems. Don't you have some good tools about GAVs derivation ?
And kinetic groups.py template may be built by Evans-Polanyi formula fitting. I hope to know how to get this fitting values. Do you have such tools ? And I hope to know that Evans-Polanyi formula are so chemically general or not. (Can we use this formula in transition metal complex or surface chemistry ?)
Could you please give me some advices about them or general DB building ?
I validated newly built SixHy RMG thermo-DB with thermodynamic calculation results. Thank you very much for your advices.
I'll try to build SixHy RMG kinetic-DB.
I found interesting references.
■https://pubs.acs.org/doi/10.1021/jp9062516 ■https://pubs.rsc.org/en/content/articlelanding/2010/cp/c0cp00666a#!divAbstract ■https://chemistry-europe.onlinelibrary.wiley.com/doi/10.1002/cphc.200900836
These references may be useful to add training reaction addition into RMG kinetic-DB. After building groups.py of kinetic-DB & adding training reaction to RMG kinetic family, Can I get kinetic-DB rules.py by rmg.py running ? (just running is O.K. ?)
Will you please let me know the rough workflow of kinetic-DB addition ?
I tried reaction kinetic family of SixHy "silylene ->silene" conversion like as the below reference. ■https://pubs.acs.org/doi/10.1021/jp9062516
I made new kinetic family & library. And, I added new kinetic libraries. ■ Kinetic Family ( just contains groups.py ) : SixHy_SiB_to_SiA ■ Kinetic Library : SixHy_Arrhenius1 ■ Thermo Libraries : SixHy_Dollet.py & SixHy_Giunta.py
groups.txt reactions.txt dictionary.txt SixHy_Dollet.txt SixHy_Giunta.txt
I used kinetic_library_to_training.ipynb. But, it gave some error in step 1.
kinetics_library_to_training_SixHy_Arrhenius1.txt kinetics_library_to_training_tools.txt
Do you know how to solve this error ? Please teach me the solution.
That error means LOSE_BOND in the family you wrote is not a defined action. I think you want BREAK_BOND.
Thank you very much for your reply. I improved groups.py of SixHy_SiB_to_SiA. groups.txt
And I also improved training reactions (a little debugging) reactions.txt dictionary.txt
But kinetics_library_to_training.ipynb gave some errors in step1. kinetics_library_to_training_SixHy_Arrhenius1.txt
Do you know how to solve the error messages ?
I think you may need to be more careful about electrons in those groups you've given 1 two single bonds and no unpaired or paired electrons and 3 one lone pair and one bond. Uncharged Si has 4 electrons so if both atoms are neutral 1 is missing two electrons and 3 is missing one electron.
Thank you very much for your advice. I tried to improve groups.py. It gave me a little different messages. But, it doesn't work properly yet.
kinetics_library_to_training_SixHy_Arrhenius1.txt groups.txt
Will you please teach me your solutions ?
I think you're missing commas in the actions list.
Thank you for your advice. I improved the kinetic files but some errors persist. groups.txt kinetics_library_to_training_SixHy_Arrhenius1.txt
By the way, I built thermo group.py which contains Sis & Sid. Do these Sis & Sid affect kinetic groups errors ? group.txt
Some tuning of kinetic groups & thermo group are necessary ?
There are errors the thermo groups could cause that would show up when handling the kinetics, but they're mostly independent and not responsible for the errors you've been seeing.
Here the issue seems to be atomtype definition. The atomtypes seem to think there isn't an appropriate atomtype for Si to become after the lone pair is removed. It seems to be a failsafe for something, but I'm not sure what. @alongd do you know the appropriate way to handle this in the atomtypes file? Do we need a new atomtype for Si with two single bonds and a lone pair and then send decrement_lone_pair for that atomtype to Sis and Sid etc.?
We're trying to write family:
name = "SixHy_SiB_to_SiA/groups"
shortDesc = u""
longDesc = u"""
This family describes reactions of the sort:
H-Si-Si: <=> H-Si=Si-H
(H3Si-HSi: <=> H2Si=SiH2)
atom labels:
H-Si-Si: <=> H2Si=SiH2
H(*2)-Si(*1)-Si(*3): <=> Si(*1)=Si(*3)-H(*2)
"""
template(reactants=["SiB"], products=["SiA"], ownReverse=False)
reverse = "SixHy_SiA_to_SiB"
reversible = True
reactantNum = 1
productNum = 1
autoGenerated = True
recipe(actions=[
['BREAK_BOND', '*1', 1, '*2'],
['FORM_BOND', '*2', 1, '*3'],
['CHANGE_BOND', '*1', 1, '*3'],
['LOSE_PAIR', '*3', 1],
])
entry(
index = 0,
label = "SiB",
group =
"""
1 *1 Si u0 p0 c0 {2,S} {3,S} {4,S} {5,S}
2 *2 H u0 p0 c0 {1,S}
3 *3 Si u0 p1 c0 {1,S} {6,S}
4 R u0 p0 c0 {1,S}
5 R u0 p0 c0 {1,S}
6 R u0 p0 c0 {3,S}
""",
kinetics = None,
)
tree(
"""
L1: SiB
"""
)
But we're getting errors when reacting: ~/RMG/RMG-Py/rmgpy/molecule/group.cpython-37m-x86_64-linux-gnu.so in rmgpy.molecule.group.GroupAtom.apply_action()
~/RMG/RMG-Py/rmgpy/molecule/group.cpython-37m-x86_64-linux-gnu.so in rmgpy.molecule.group.GroupAtom.apply_action()
~/RMG/RMG-Py/rmgpy/molecule/group.cpython-37m-x86_64-linux-gnu.so in rmgpy.molecule.group.GroupAtom._lose_pair()
ActionError: Unable to update GroupAtom due to LOSE_PAIR action: Unknown atom type produced from set "[<AtomType "Si">]".
Looking at the Si AtomTypes, my first (superficial?) observation is that not all attributes are defined per atom type. I expect single
to always have a value, even if it's [0]
.
This family converts an Si atom with a lone pair to an Si atom with no lone pairs and with a double bond. But I didn't see a lone pair on any of the Si atom types defined in RMG (on master).
Yes, as @mjohnson541 suggested, we need to define the missing atom type Si:
, and the respective action. I suggest looking at the respective C2s
atom type.
So, Can I define SixHy reaction template by my effort or not ? ( Where or what file should I improve ?) Or, should I wait your RMG version-up ?
Thank you for your information. I added Si: to atomtype.py. atomtype.txt
But, kinetics_library_to_training.py doesn't work yet. kinetics_library_to_training_SixHy_Arrhenius1.txt
Kinetic family's group.py is here. groups.txt
SixHy kinetic library data are here. reactions.txt dictionary.txt
I couldn't understand how to improve these formats. Is C-compiling not good ?
Will you please teach me how to improve the situation ?
I succeeded kinetics_library_to_training.ipynb after C-compiling. Thank you for your kind & patient lecture. ■ kinetics_library_to_training_SixHy_Arrhenius1.txt
■ RMG-Py atomtype.py : atomtype.txt
■ Kinetic family's groups.py : groups.txt ■ Kinetic family's rule.py : rules.txt
■ Kinetic library's reactions.py : reactions.txt ■ Kinetic library's dictionary.txt : dictionary.txt
And I tried SiH4 pyrolysis reaction mechanism generation with this file. ■ RMG input file SixHy.py : SixHy.txt
But, I got this error messages. ■ error messages : error messages.txt
Added 1 new core species SiH2Si(8) Created 0 new edge species Moved 1 reactions from edge to core H3SiSiH(2) <=> H2(7) + SiH2Si(8) Added 0 new core reactions Created 0 new edge reactions
After model enlargement: The model core has 13 species and 11 reactions The model edge has 20 species and 41 reactions
For reaction generation 1 process is used.
Generating thermo for new species...
Traceback (most recent call last):
File "/home/taiki-kato/miniconda3/envs/rmg_env/bin/rmg.py", line 7, in
Will you please teach me how to improve the situation ? ( I suspect that thermo GAVs files have some troubles ) ■ thermo GAVs file group.py : group.txt
And I don't know how to improve kinetics families' rule.py semi-automatically. Will you please give me some advices ? rules.txt
Hello, Dr. @bslakman. I'm trying to build SixHy CVD chemistry like your research. ■https://pubs.acs.org/doi/10.1021/acs.iecr.6b02402
But, I'm struggling about HBI GAVs building (thermo-group) & kinetic family making (Hydrogen abstraction & Radical recombination).
If you have these database files, Will you please share me your models ?
Sincerely.
Sorry, I've been on vacation the past two weeks. Thermo generation for that species works on the website so the error should be related to a change you made most likely making a Si group more specific.
Thank you for your reply. How were your vacation ? I hope that you had a lot of fun.
And thank you for your advice. I improved thermo group.py & ring.py. group.txt ring.txt
And I tried this input file. SixHy.txt
These thermo improvement may improve the situation but it gave some errors. (Different from previous errors) RMG.txt
Error: Debugging why no reaction was found... Error: Checking whether the family's forbidden species have affected reaction generation... Error: Still experiencing error: Expecting one matching reverse reaction, not 0 in reaction family H_Abstraction for forward reaction [SiH3] + [SiH3] <=> [SiH4] + [SiH2].
I considered that this error means the lack of kinetics family "H-abstraction" & "Recombination" training sets And some radical thermodynamic group HBI related radical.py.
I'm trying to build SixHy model from below reference, but this reference doesn't show the details of radical.py and "H-abstraction" & "Recombination" training sets. Therefore, I inquired to Dr. @bslakman about these data. ■https://pubs.acs.org/doi/10.1021/acs.iecr.6b02402
I'll keep trying to build SixHy model on RMG.
By the way, how do you think about this error's cause ? Will you please give me some advice, Dr. @mjohnson541 ?
I think this is occurring because that reaction doesn't match H_Abstraction in the reverse direction because the birad abstractions are controlled by this radical group in H_Abstraction that doesn't have Si: entry( index = 285, label = "Y_1centerbirad", group = """ 1 *3 [Cs,Cd,CO,CS,O,S,N] u2 """, kinetics = None, )
I believe adding Si to the atomtype list in this group should make the reverse reaction match H_Abstraction.
Hello, Dr. @bslakman. I'm trying to build SixHy CVD chemistry like your research. ■https://pubs.acs.org/doi/10.1021/acs.iecr.6b02402
But, I'm struggling about HBI GAVs building (thermo-group) & kinetic family making (Hydrogen abstraction & Radical recombination).
If you have these database files, Will you please share me your models ?
Sincerely.
I'm sorry that I haven't been helping much in this thread - I am following it, but have too much else going on right now to participate and help at the moment. As mentioned earlier, I think that all of @bslakman's work is still on github, eg. at https://github.com/ReactionMechanismGenerator/RMG-database/compare/master...bslakman:silicon-hydrides?expand=1 and/or in the supplementary material at https://pubs.acs.org/doi/abs/10.1021/acs.iecr.6b02402
Thank you for your kind reply, Dr. @mjohnson541. I'll check H_Abstraction family. I thought that H_Abstraction is not important for SiH4 thermal decomposition. But, it looks necessary for building RMG SixHy model. H_Abstraction looks very complicated, but I'll try the improvement of this family.
Thank you for your kind reply , AP @rwest . I looked this link but I couldn't understand how to operate this site buttons. I'm sorry. I'm not good at git & github.
I arrived this site from randomly operation at the link. ( I forgot how to arrive this site. if you know, please teach me. ) ■ https://github.com/bslakman/RMG-database/tree/3cd89b58ab4cc1d3ce85ce265aea6aeb83fe99c0 It looked the latest version of SixHy chemistry. Is this correct ? I tried pull from this RMG-database by git clone https://github.com/bslakman/RMG-database.git, but it looks no silane chemistry in it.
Will you please how to download these files & keep my local files status ? I hope to download these files for RMG SixHy running with below input files. ■ https://github.com/bslakman/silane
Stale. Closing.
Topic
Building SixHy polymerization reaction model by RMG
Context
I found this reference & tried to build SixHy polymerization model by RMG. But, I couldn't achieve the model building. it was too difficult for me to build the model.
*** https://pubs.acs.org/doi/10.1021/acs.iecr.6b02402
Question
Does it need kinetic library & family addition ? Does it also need thermo data addition ? Is a beginner able to build SixHy reaction model ?
Installation Information