xtb
xtb copied to clipboard
linear water calculated to have no imaginary frequencies
Describe the bug I constructed a linear water molecule as
3
H 0.0 0.0 1.0
O 0.0 0.0 0.0
H 0.0 0.0 -1.0
and used xtb 6.5.1 to optimize it. I played around with some parameters as with or without gbsa, --acc and other parameters; I also looked if --ohess versus separate --opt and --hess calculations have an influence. They don't.
It results in a linear water molecule as expected but it calculates all positive frequencies, which surprised me.
To Reproduce Steps to reproduce the behaviour:
- create water molecule input
h2o.xyz
as above - load xtb 6.5.1 module
module show xtb/6.5.1
-------------------------------------------------------------------
/data/software/modules/xtb/6.5.1:
setenv XTBHOME /scratch/software/xtb-6.5.1
setenv XTBPATH /scratch/software/xtb-6.5.1/share/xtb
prepend-path MANPATH /scratch/software/xtb-6.5.1/share/man
prepend-path PATH /scratch/software/xtb-6.5.1/bin
append-path PKG_CONFIG_PATH /scratch/software/xtb-6.5.1/lib64/pkgconfig
setenv OMP_NUM_THREADS 9,1
setenv OMP_MAX_ACTIVE_LEVELS 1
setenv MKL_NUM_THREADS 9
setenv OMP_STACKSIZE 100G
-------------------------------------------------------------------
- run
xtb
with your options and the--verbose
flagxtb h2o.xyz --acc 0.000001 --ohess extreme --alpb water --verbose &> xtb_opt.log
- output showing the error xtb_opt.log
Expected behaviour Linear water is supposed to have two imaginary/negative frequencies.
This seems to be a specific problem for linear molecules with the way we calculate the numerical hessian.
I don't think it is related to the numerical Hessian. I can recreate this calculation in my own code pysisyphus, that just reads in the numerical Hessian produced by XTB and I obtain the two imaginary modes. So the issue is probably somewhere else. Maybe in the part where the translation/rotations is projected out.