Strange MP2 and CCSD forces when point charges included

Dear PSI4 developers and users,

Recently I’m testing and comparing MP2 analytical gradients among different quantum chemistry software packages. I find that when there are point charges included in a MP2 analytical gradient calculation using PSI4, the obtained MP2 gradients seem strange/odd.

Here I use the linear CO2 molecule to illustrate the problem. cc-pVTZ is used in all calculations. No RI/DF approximation is used. No core orbital is frozen (i.e. all-electron calculation). The Cartesian coordinates (in Angstrom) are

C   0.0   0.0   0.0
O   0.0   0.0   1.2584
O   0.0   0.0  -1.2584

and the point charges (in Bohr) are

pt_chg = [
[   0.100000,[      -5.66917837,       0.00000000,       0.00000000]],
[   0.100000,[       5.66917837,       0.00000000,       0.00000000]],
[   0.100000,[       0.00000000,      -5.66917837,       0.00000000]],
[   0.100000,[       0.00000000,       5.66917837,       0.00000000]]
]

The 1st column contains the charges, and the 2nd~4th columns contain their coordinates in Bohr (since PSI4 external_potentials requires the usage of unit Bohr). For convenience, positions of point charges in Angstrom are shown below

-3.0   0.0   0.0
 3.0   0.0   0.0
 0.0  -3.0   0.0
 0.0   3.0   0.0

The last few lines in the PSI4 input file are

...
set {
 guess read
 e_convergence 1e-8
 d_convergence 1e-6
}

set num_frozen_docc 0
set mp2_type conv
gradient('mp2',external_potentials=pt_chg)

Now comes to the results. This linear CO2 molecule only has non-zero gradients on the z-components of two O atoms. To see it more clearly, here is the result of PSI4

  -Total gradient:
     Atom            X                  Y                   Z
    ------   -----------------  -----------------  -----------------
       1       -0.000000000000    -0.000000000000    -0.000000000102
       2        0.000000000000     0.000000000000     0.135559687833
       3       -0.000000000000     0.000000000000    -0.135559687730

And here are results (in Hatree/Bohr) collected from various programs

program gradient
Gaussian ± 0.138602256
ORCA ± 0.138601671
PySCF ± 0.138602251
PSI4 ± 0.135559688

One can see that the PSI4 MP2 analytical gradient has 3e-3 Hatree/Bohr difference with results of other packages, which cannot be viewed as numerical error.

The RHF energy and MP2 energy of various programs are in excellent agreement (in Hartree)

program E_RHF E_MP2
Gaussian -187.64278870 -188.31236705
ORCA -187.64278870 -188.31236705
PySCF -187.64278870 -188.31236705
PSI4 -187.64278870 -188.31236705

This means that the unit of positions for atoms and point charges are correctly taken into considerations. Note that PSI4 HF and MP2 energies in the output file do not include the self-interaction of point charges 0.00675305 a.u. After adding this term, one can compare the PSI4 energy with that of Gaussian.

Here are some PSI4 input/output files in case that anyone wants to reproduce the calculation (please remove .txt suffix and open it as .zip package)
strage_psi4_mp2_force.zip.txt (79.5 KB)

This problem does not exist for the RI-MP2 analytical gradients (in Hatree/Bohr), e.g.

program gradient
ORCA ± 0.138515736
PSI4 ± 0.138475826

I only test PSI4 v1.8.2 and v1.9.1, and this problem occurs in both versions. Similar problems exist for CCSD gradients when point charges are included. Would you please be so kind as to figure it out? Thanks a lot.

Best,
Jingxiang

Thanks for the report. This is probably an honest bug. I was looking at the handling of point charges the other week and noticed myself that things didn’t quite look right.

…Unfortunately, I have a bit of an issue backlog, but if nobody else is willing to take this up, I certainly can. I have an idea of where to start looking.