pyscf / pyscf

Python module for quantum chemistry
Apache License 2.0
1.23k stars 571 forks source link

Difference in cc-pvdz from Basis Set Exchange vs pyscf #2221

Closed lukas-weber closed 5 months ago

lukas-weber commented 5 months ago

Hi, I’m not an expert in computational quantum chemistry, but I noticed that in pyscf’s version of cc-pvdz, the 1s orbital of Hydrogen only contains 3 Gaussians, whereas the current basis set file from basissetexchange.org has 4.

  1. pyscf/gto/basis/cc-pvdz.dat

    BASIS "ao basis" PRINT
    #BASIS SET: (4s,1p) -> [2s,1p]
    H    S
     13.0100000              0.0196850        
      1.9620000              0.1379770        
      0.4446000              0.4781480        
    H    S
      0.1220000              1.0000000        
    H    P
      0.7270000              1.0000000 
  2. Basis Set Exchange

    BASIS "ao basis" SPHERICAL PRINT
    #BASIS SET: (4s,1p) -> [2s,1p]
    H    S
      1.301000E+01           1.968500E-02           0.000000E+00
      1.962000E+00           1.379770E-01           0.000000E+00
      4.446000E-01           4.781480E-01           0.000000E+00
      1.220000E-01           5.012400E-01           1.000000E+00
    H    P
      7.270000E-01           1.0000000

If I understand the format correctly, the 0.122 Gaussian is supposed to be shared across 1s and 2s, but in pyscf, it only contributes to 2s.

susilehtola commented 5 months ago

The two forms are mathematically equivalent: if you have a free function, you can delete it from the contraction; see Hashimoto et al in https://doi.org/10.1016/0009-2614(95)00807-G

In Basis Set Exchange, this is called "optimized general contractions"

lukas-weber commented 5 months ago

Ohh, that makes sense! Thanks for clarifying!