With the new Q-Chem, how can I avoid calculating the full Hessian and only calculate the diagonals during a TS optimization ? I have a system consisting of 71 atoms at 6-311G* basis set.
Hi Sourav, can you post the REM section you are using? Are you referring to the GEOM_OPT_HESSIAN REM setting for the initial hessian, which defaults to the diagonal hessian? Consider Example 9.3 in the manual (9.2.4 OptimizeJob Examples‣ 9.2 Geometry Optimization Job Controls ‣ Chapter 9 Exploring Potential Energy Surfaces: Searches for Critical Points and Molecular Dynamics ‣ Q-Chem 6.2 User’s Manual), which computes the exact hessian and then reads it during the TS search. If you want to avoid calculating the exact hessian, you can skip the first calculation in Example 9.3 and comment out the REM settings of SCF_GUESS and GEOM_OPT_HESSIAN in the REM of the second calculation. Is this what you want?
Depending on your use case, you may also consider the Hessian-Free Transition-State Search (9.3.3 Hessian-Free Transition-State Search‣ 9.3 Improved Algorithms for Transition-Structure Optimization ‣ Chapter 9 Exploring Potential Energy Surfaces: Searches for Critical Points and Molecular Dynamics ‣ Q-Chem 6.2 User’s Manual).
Thanks for answering.
My $rem section is attached.
$rem
BASIS = 6-311G*
JOB_TYPE = TS
METHOD = WB97X-D
SCF_CONVERGENCE = 8
SCF_MAX_CYCLES = 250
GEOM_OPT_MAX_CYCLES = 250
GEOM_OPT_DMAX = 50
MEM_TOTAL = 50000
$end
The problem is it still starts CPSCF calculation to calculate the exact Hessian.
Calculating MO derivatives via CPSCF
Running CPSCF using 18 segments, with a maximum of 4 atoms in each segement.
1 0 12 0.0045371
2 0 12 0.0008703
3 0 12 0.0001494
4 0 12 0.0000750
5 0 12 0.0000285
6 0 12 0.0000119
7 0 12 0.0000052
8 6 6 0.0000027
9 11 1 0.0000015
10 12 0 0.0000008 Converged
1 0 12 0.0047250
2 0 12 0.0008682
:
:
In Q-Chem 5.4, the default was calculating the diagonals. A snippet is given below.
Attempting to generate delocalized internal coordinates
Initial Hessian constructed with Jon Baker’s OPTIMIZE code
207 Hessian modes will be used to form the next step
Hessian Eigenvalues:
0.002000 0.002000 0.002000 0.002444 0.003743 0.004894
0.007517 0.007962 0.008385 0.008838 0.008852 0.014906
0.017894 0.018253 0.018479 0.019405 0.019493 0.019941
0.020023 0.020091 0.020228 0.021266 0.021312 0.021954
0.022066 0.022324 0.022352 0.022864 0.023066 0.023106
I tried setting GEOM_OPT_HESSIAN = DIAGONAL as given in the manual but the Q-Chem crashed.
Thanks
You can revert back to the old OPTIMIZE geometry optimization driver by setting “GEOM_OPT_DRIVER = optimize”. Then, you will see that the diagonal hessian is set as the initial hessian and that should address your question. You are right about the crash with “GEOM_OPT_HESSIAN = DIAGONAL”, which is a known bug in v6.2.1.
Thanks for the help.
You can also do this without switching back to old optimizer. Basically, what you need to do is to specify the INITIAL_HESSIAN
keyword under $geom_opt
. For example, you can set
$geom_opt
INITIAL_HESSIAN Model
$end
which will probably resemble the default behavior of the old optimizer. If you are reading in a hessian from a previous job, then it should be set to “READ”. You are right that the current default TS optimizer uses “Exact” as the default.