Dct calculation using python failed DF_BASIS_DCT

I just installed the latest psi4 (1.4rc2.dev102) with python bindings (anconda3, python 3.6). I wanted to perform a dct calculation on a simple molecule but get the following error after the first scf:


  import psi4
  R = 0.7414
  h2 = psi4.geometry("""
        0 1
        H 1 {0}

  psi4.set_options({"SCF_TYPE": "DF",
                      "BASIS": "cc-pvdz" ,
                      "DF_BASIS_DCT": "cc-pvdz"})

truncated output:

@DF-RHF iter SAD:    -0.84989757634121   -8.49898e-01   0.00000e+00 
@DF-RHF iter   1:    -1.12605731624506   -2.76160e-01   1.03557e-02 DIIS
@DF-RHF iter   2:    -1.12862892066166   -2.57160e-03   1.86792e-03 DIIS
@DF-RHF iter   3:    -1.12871581850380   -8.68978e-05   7.88416e-05 DIIS
@DF-RHF iter   4:    -1.12871589352432   -7.50205e-08   1.52376e-06 DIIS
@DF-RHF iter   5:    -1.12871589358190   -5.75804e-11   2.89212e-09 DIIS
Energy and wave function converged.
.  ........
*                             Density Cumulant Theory                             *
*                by Alexander Sokolov, Andy Simmonett, and Xiao Wang              *

                  *         Density Fitting Module in DCT        *
                  *                by Xiao Wang                  *

Could not find requested basisset (DF_BASIS_DCT).E

Hi, I’m the lead DCT developer in Psi4 nowadays, and thanks for the report.

Your input file also needs to set the option "DCT_TYPE": "DF" to signal that you want to perform a density-fitted DCT computation. When I add that to your computation, it runs as expected. The current error message is, at the very least, not helpful, so I’ll look deeper into this. While I can’t guarantee anything, I’m optimistic I can get Psi to give a more user-friendly response for the official 1.4 release.

One other comment: setting "DF_BASIS_DCT": "cc-pvdz" will not do what you probably think it does. Density-fitted methods require special auxiliary basis sets. That keyword requests that you use the standard cc-pvdz basis set as your normal auxiliary basis. Even for this simple system, that’s 4 mH absolute error. Either set "DF_BASIS_DCT": "cc-pvdz-ri" to request the basis set you want, or don’t even specify "DF_BASIS_DCT" - Psi will automatically use the one to match your standard basis.


I can confirm that these changes work for me. Incidentally how do you request the different methods, i.e. ODC-06, ODC-12, etc…?

Thanks so much!

dct_functional is the keyword you want, see example. In general, the samples and keywords page are the first place to check when you have a “how do I do X” question. That way, you don’t have to wait for me to get notified about a post.

I’ll warn you that ODC-12 is recommended over ODC-06 for any applications studies: benchmarks say ODC-06 is harder to converge, and less accurate when it does converge. But if your interests are in method development or benchmarking, go right ahead.