Dipole moment better then with MP2


I would like to calculate dipole moments more accurately than with MP2.
And especially, to calculate the electrostatic potential on the grid.
Could you advise me how to do this?

The first step is to figure out what method you want to use, and that depends on the system you’re studying.

You can always improve the accuracy of your property computation by going to higher orders of coupled cluster, assuming that coupled cluster is computationally affordable. If it is not affordable and you’re using density functional theory, you need a paper benchmarking the performance of functionals for a problem similar to yours to determine which would be the best suited.

I’m interested in organic substances containing several nitrogen atoms. For example diazomethane, methyl azide. For such substances, both DFT and MP2 show large errors in dipole moments.

I’ve heard that for CC, implementing accurate calculations of electrostatics is not an easy task.
For which CC methods is it accurately implemented in the Psi4? In particular, neat electrostatic potentials on the grid around the molecule.

Psi has it implemented for CCSD but no other truncation levels. The full list of methods Psi has properties for is: scf, cc2, ccsd, cisd, ci, fci. Example file with CCSD properties:

molecule h2o {
    O            0.250254404867     0.126248114412     0.000000000000
    H            0.428893090449     1.055731838795     0.000000000000
    H            1.104987458381    -0.280303532167     0.000000000000

set basis cc-pvdz

# Make a regular grid to evaluate properties on
with open('grid.dat', 'w') as fp:
    for x in range(3):
        xval = (x-1.0)*2.0
        for y in range(3):
            yval = (y-1.0)*2.0
            fp.write("%16.10f%16.10f%16.10f\n" % (xval, yval, 1.0))

E, wfn = prop('scf', properties=["DIPOLE", "GRID_ESP"], return_wfn=True)
E, wfn = prop('ccsd', properties=["DIPOLE", "GRID_ESP"], return_wfn=True)

Thank you very much.