RMG-Py icon indicating copy to clipboard operation
RMG-Py copied to clipboard

How to build silicon hydride (SixHy) reaction model by RMG ?

Open TaikiKato opened this issue 4 years ago • 48 comments

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

  • OS : Windows 10, WSL, Ubuntu 18.04
  • Installation method: Miniconda using & download from github files
  • RMG version information:
    • RMG-Py: 3.1.0-59-g74b176a77
    • RMG-database: 3.0.0-206-g833577ec

TaikiKato avatar May 28 '21 08:05 TaikiKato

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?

mjohnson541 avatar May 28 '21 12:05 mjohnson541

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.

rwest avatar May 28 '21 12:05 rwest

Can I use the SixHy merged RMG ? How to draw the integrated simulator data ?

TaikiKato avatar May 31 '21 02:05 TaikiKato

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

TaikiKato avatar May 31 '21 08:05 TaikiKato

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 ?

TaikiKato avatar Jun 03 '21 09:06 TaikiKato

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.

mjohnson541 avatar Jun 03 '21 14:06 mjohnson541

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

mjohnson541 avatar Jun 03 '21 14:06 mjohnson541

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 /


R_Addition_MultipleBond.zip

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 ?

TaikiKato avatar Jun 08 '21 08:06 TaikiKato

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

mjohnson541 avatar Jun 08 '21 13:06 mjohnson541

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


TaikiKato avatar Jun 09 '21 00:06 TaikiKato

I read these documents. There are groups, rules & template explanation. In SixHy case, groups.py & traning are important ?

TaikiKato avatar Jun 09 '21 09:06 TaikiKato

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.

mjohnson541 avatar Jun 09 '21 18:06 mjohnson541

I tried git branch download. git fetch & git checkout -b SiRadd origin/SiRadd. This command made SiRadd branch.

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

TaikiKato avatar Jun 10 '21 09:06 TaikiKato

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 ? )

TaikiKato avatar Jun 10 '21 13:06 TaikiKato

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.

mjohnson541 avatar Jun 10 '21 13:06 mjohnson541

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 ?

TaikiKato avatar Jun 11 '21 00:06 TaikiKato

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.

mjohnson541 avatar Jun 11 '21 13:06 mjohnson541

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 ?

TaikiKato avatar Jun 12 '21 10:06 TaikiKato

From your knowledge, which solver is the best for VTST calculation ?

TaikiKato avatar Jun 12 '21 10:06 TaikiKato

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.

mjohnson541 avatar Jun 12 '21 12:06 mjohnson541

Thank you very much. So, Polyrate may be good for learning from the Green group. And, MESMER may be easy to install.

TaikiKato avatar Jun 14 '21 02:06 TaikiKato

I found interesting literatures about SixHy thermo & kinetic data.

  1. SixHy thermo : https://pubs.acs.org/doi/10.1021/jp030727k -> Table 8 may be suitable for RMG GAVs.
  2. SixHy kinetics : https://pubs.acs.org/doi/abs/10.1021/jp049591w -> Table 1 may be suitable for RMG kinetic groups.
  3. SixHy thermo & kinetics : https://pubs.acs.org/doi/10.1021/jp983358e -> Table 1 is GAVs. Table 3 is kinetic groups.

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.

  1. 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.

  2. groups.py looks very, very difficult. Don't you know most simple groups.py or some groups.py building lecture by manual ?

  3. template.cdx & template.eps : What are these files ? How to make or use them ?

  4. 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 ?

  5. 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.

TaikiKato avatar Jun 14 '21 09:06 TaikiKato

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.

mjohnson541 avatar Jun 14 '21 20:06 mjohnson541

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.

  1. Adding training reactions.
  2. groups.py making ?
  3. running some script with training reactions ? ( What is the name of script ? ) -> building rules.py

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 ?

TaikiKato avatar Jun 15 '21 01:06 TaikiKato

I built SixHy thermo group.py & ring.py from this literature GAVs. ( https://pubs.acs.org/doi/10.1021/jp030727k : Table 8)

ring.txt group.txt

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 ?

TaikiKato avatar Jun 16 '21 10:06 TaikiKato

I validated newly built SixHy RMG thermo-DB with thermodynamic calculation results. Thank you very much for your advices.

RMG SixHy Thermo Result.xlsx

I'll try to build SixHy RMG kinetic-DB.

TaikiKato avatar Jun 17 '21 07:06 TaikiKato

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 ?

TaikiKato avatar Jun 17 '21 09:06 TaikiKato

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.

TaikiKato avatar Jul 02 '21 07:07 TaikiKato

That error means LOSE_BOND in the family you wrote is not a defined action. I think you want BREAK_BOND.

mjohnson541 avatar Jul 02 '21 11:07 mjohnson541

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 ?

TaikiKato avatar Jul 05 '21 02:07 TaikiKato