Force Consistency?

Hi guys,

I’ve been using psi4 to generate data to train neural network force fields and I’ve run into some problems. I’m using CCSD(T) with the 6-311gdp basis set. I’m not getting good training, which likely indicates the data I’m generating isn’t force consistent. My question is: does anyone know if CCSD(T) is force consistent as implemented in psi4?

What does force-consistent mean, and what does a mean for a gradient to be “force-consistent” or not?

force consistency generally means that the forces are obtained from the same electronic structure as the energy. That is to say, the force is a straightforward derivative of the energy. The places where this might not be the case are if the energy is a projected zero-point energy, or if the derivatives or the energies are obtained from numerical methods like finite difference or numerical integration.

The consistency of the gradients is checked in this test case. If you’d like to test your molecules, you can request a gradient using

gradient('ccsd(t)', dertype=0)

This uses a 3 point stencil by default, but adding set findif points 5 before that line will request a more expensive, but precise, 5 point stencil.

Perhaps I’m misunderstanding you, @benmcomer. I would usually consider a finite difference gradient that didn’t match an analytic gradient to be a bug in the QC program. Thus finite difference grads should be “force consistent”. Unless we have such unrecognized bugs, p4 grads should be force consistent. You’ll get faster results with cc_type=df.

Sorry for the confusion on this. My problem was much simpler than this. I did not realize that psi4 rotates molecules by default, making the gradients it outputs be in the rotated frame. I solved this by passing in no_reorient when building the molecules.

I had thought it might be due to finite difference error, but based on the above posts it looks like finite difference forces are more accurate than I had realized.