-
Notifications
You must be signed in to change notification settings - Fork 150
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
Isotope information ignored for vibrational/thermodynamic quantities #1143
Comments
Confirmation/Reproduction of issueCan confirm this, as I observed the exact similar problem without having seen this issue before. Validation code call read_userdata(xcontrol, env, mol)
write(*,*) "atmass in main l. 428", atmass
! ------------------------------------------------------------------------
!> get some memory
allocate (cn(mol%n), sat(mol%n), g(3, mol%n), source=0.0_wp)
atmass = atomic_mass(mol%at) * autoamu ! from splitparam.f90
write(*,*) "atmass in main l. 433", atmass Validation output
As you can see from the output, for this also quite simple organic molecule, I was able to temporarily change the atomic masses (in agreement with the output @TyBalduf mentioned, i.e. this is formally working). However, it's changed back due to this line: I'll try to look a bit deeper into this. In the later part of the Symmetrization and mass-weighting of the hessian ! symmetrize
do i=1,n3
do j=1,n3
res%hess(j,i)=(h(i,j)+h(j,i))*0.5_wp
if(abs(h(i,j)-h(j,i)).gt.1.d-2) then
write(errStr,'(a,1x,i0,1x,i0,1x,a,1x,es14.6,1x,es14.6)') &
& 'Hessian element ',i,j,' is not symmetric:',h(i,j),h(j,i)
call env%warning(trim(errStr), source)
endif
enddo
enddo
! inverse mass array
do ia = 1, mol%n
write(*,*) "original atmass for index ",ia," is ",atmass(ia)
do ic = 1, 3
ii = (ia-1)*3+ic
isqm(ii)=1.0_wp/sqrt(atmass(ia))
amass(ii)=isqm(ii)/sqrt(amutoau)
enddo
enddo
|
The issue was probably introduced in commit fa45f80 in the PR #930. What was the reason for shifting the @Albkat, as you were responsible for the PR: We should look more closely into PRs which shift code within |
Thanks for sharing, we will definitely fix it in the upcoming release. |
I have no idea anymore, this was more than a year ago. It was probably necessary to allow automated activation of cma constraints for the sandwich potential. As this should not interact with Isotope masses, shifting the assignment up should probably do the trick. Maybe it would also be a good idea to add a test case for this. |
Thanks for your reply and your insights (while you're busy somewhere else)! 💯 |
Sure thing. I think the userdata currently needs to be read before this line to allow the automatic cma setup for the sandwich potential. Line 434 in c3cfd38
|
Describe the bug
Isotopic information seems to have no effect on vibrational/thermodynamic quantities. From this commit I had thought isotope information would be incorporated.
To Reproduce
Steps to reproduce the behaviour: (I'm including ethanol as an example, but this has been the case for any molecule I have tried.
xtb ethanol.sdf --hess -v >> eth_regular.txt
(vibrational calculation on regular ethanol)xtb ethanol.sdf --hess -v --input temp.txt >> eth_iso.txt
(vibrational calculation with all hydrogen mass set to 999.9 in the xcontrol) (isotope
xcontrol keyword fails in a similar way)xtb eth_iso.sdf --hess -v eth_iso_sdf.txt
(vibrational calculation with a specific hydrogen mass set to 999.9 in the sdfThe three calculations give identical output, despite calculation (2) saying that the hydrogen was converted 999.9
Expected behaviour
Some difference between vibrational calculations with isotope information set. I don't know if xTB is supposed to be able to read this information from an sdf, but it seems like it should be able to from the xcontrol input.
Inputs: (Converted sdf to txt to upload)
eth_iso.sdf.txt
ethanol.sdf.txt
temp.txt
Outputs:
eth_iso.txt
eth_iso_sdf.txt
eth_regular.txt
The text was updated successfully, but these errors were encountered: