-
Notifications
You must be signed in to change notification settings - Fork 232
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
Projecting out rotors in Arkane leads to zero frequency #2757
Comments
Some possibilities: a) The "flat" motion exists in the original Hessian => lowest frequency in gaussian file is 62 cm^-1 so no b) The "flat" motion observed here is actually a projected out motion that hasn't been full removed yet in the code (either a bug or a result of the debugging point) => 42 freq before - 5 rotors = 37 freq after so no c) Something in the input rotor information is messing up rotor projection...I don't see anything obvious to me, but I would double check your pivots and top indexing against an example you know is right, before digging into the code d) Bug in rotor projection...I feel like there have been a couple times we thought there was a bug here before and it turned out we were wrong...I would very carefully check the inputs to the |
Thanks @mjohnson541 for these possibilities! I don't think the atom numbering is a problem. I tried to break it down into a smaller example, including just a single free rotor for the OH at the end. The numbering for the tops/pivots is about as simple an example as I could come up with (you can see the atom numbering in the screenshot) and it's not even reading the Gaussian rotor scan file. This leads to three zero frequencies after projecting out the single free rotor, which makes me wonder if the project_rotors function is capable of doing only a subset of the full number of rotors. My experiments so far have shown that including any one of the rotors for this species leads to at least one zero frequency after projecting the rotors out.
Output:
|
If the issue is with every rotor, I would check the Hessian, particularly what Hessian is being fed into |
I've spent some time in the statmech code.... I haven't solved anything yet, but did find that when I replaced the previous Gram-Schmidt orthonormalization with a QR decomposition from numpy, I found column 47 of the QR decomposition is nearly zero, so we could lose a basis. This is in the project_rotors function, so only gets called when doing rotors, but happens before we actually reach the rotors: at that point it is just projecting out the translation and external rotation. Could those be wrong somehow? Or something weird about the hessian in the gaussian log file? |
Yeah, that should imply a near zero frequency/eigenvalue. Gram-Schmidt is an odd algorithm choice for orthonomalization since its numerically unstable, so it would probably not be a bad thing to change it. Could it be related to this old issue? or something similar? #981 : |
If the inputted Cartesians and Hessians are inconsistent, I think the projected frequencies should disagree with the ones found in the Gaussian output file even when no internal rotors are included. Is this the case here? As an aside, MESMER has a similar projection method implemented as Arkane, and to ensure I'm using consistent Cartesians and Hessians (obtained with Gaussian), I take them from an .fchk file. |
Per one of @rwest 's suggestions, I reran the optimization with IOP(2/9=2000), | Do print the Cartesian coordinates in the input orientation. -- | --This produces the correct matchup in frequencies after projecting out with no rotors |
Don't want to celebrate too early, but it looks like it's the cartesians being inconsistent with the Hessian. Thank you @mjohnson541 Timo and @rwest for all your help debugging this! |
The default in Gaussian is to print the Cartesian coordinates in the input orientation only for small cases, which explains why it was working for many species and then failing on bigger molecules. I will add a warning to Arkane's statmech.py either as a comment or in code to check for iop(2/9=2000) for larger molecules (or in general). |
Bug Description
I am trying to compute the thermodynamics for a species (smiles='CCCCOO') by running an Arkane statmech + thermo job, but there is a very large difference between my entropy and the reference data I'm using from the AramcoMech3.0, leading to a 27 kcal/mol error in Gibbs free energy at 1000K.
![Image](https://private-user-images.githubusercontent.com/30695172/410189685-97e864b0-5fbc-432b-abad-f2d45e09598d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1MDU1OTgsIm5iZiI6MTczOTUwNTI5OCwicGF0aCI6Ii8zMDY5NTE3Mi80MTAxODk2ODUtOTdlODY0YjAtNWZiYy00MzJiLWFiYWQtZjJkNDVlMDk1OThkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDAzNTQ1OFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWE2ZGY3NWQ4ODc3NGYzZmNlZGNhZTlhNGQyNDY5ODBmYzZmNmVhOWI3OThlNjk5YzQzZWI1NWQ4MjY4ZmFkZmYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.YlVd7ulfJp2a14clQ8O6JXynuSvGPhCj5EmfHXTY3CM)
This led me to look at the rotors. I ran 1-D hindered rotor scans (at 20 degree increments) for the molecule and they looked reasonable in Gaussview, but @rwest noticed that after Arkane projects out the rotors, one of the vibrational frequencies is approximately zero (1e-5).
You can see all the statmech modes in the full output.py
I'm trying to figure out whether 1. I've messed up my input to Arkane, 2. Arkane is projecting the rotors out incorrectly, or 3. the rotation and vibrational modes are too tightly coupled for this kind of calculation to work. This is known to be a problem for OOQOOH radicals but my species is a little simpler. I have successfully calculated dozens of species thermodynamics with my current workflow, but I also see this rotors/zero-frequency issue with a handful of other species: (smiles='CC(CC=O)OO', 'CC(CCOO)O[O]', 'CC(CCO[O])OO', and 'O=CCCCOO').
I would appreciate any and all hints for how to tackle debugging this issue.
How To Reproduce
These are the files I'm using (.py extensions changed to .txt). For simplicity, I have excluded my single point energy calculation (used to generate the plots above), and energy, frequencies and geometry are all taken from the conformer_0002.log file.
Arkane Input Files:
input.py
conformer_0002.py
Gaussian Log Files
conformer_0002.log
rotor_0000.log
rotor_0001.log
rotor_0002.log
rotor_0003.log
rotor_0004.log
Expected Behavior
I would expect the lowest frequency to be about 100 cm^-1 or larger after projecting out the hindered rotors, instead of zero.
Installation Information
I'm on my experimental my_bacs branch of RMG-database and the latest RMG-Py.
The text was updated successfully, but these errors were encountered: