XDM fails with user defined basis set in $basis

Dear all!

I am using QChem 5.2.1, where i am trying to run the XDM module on CH3COO-Li+ system.

1.The reference input with
$rem
basis aug-cc-pvtz
$end
runs well and the XDM module produces results.

2.However, if i define my own basis (in this test case it is the same, although explicit, aug-cc-pvtz for Li taken from the basis set exchange webpage), XDM module fails with the error “Unrecognized standard basis set in BasisType::Translate”.

3.The same error happens when a short basis name is used:
$basis
O 0
aug-cc-pVTZ


C 0
aug-cc-pVTZ


H 0
aug-cc-pVTZ


Li 0
aug-cc-pVTZ


$end

For the calculations (2) and (3) i used
$rem
basis gen
purecart 11
$end

(In each input you can see two calculations, the first one to converge the orbitals and the second one to read the orbitals and run XDM. The first job is always successful.)

Could anyone explain what is happening in (2) and (3) and how to fix it?
I will need the explicit basis set later, as QChem does not have a built-in basis i want to use for my actual cation K+.

I would be grateful for the help.
Yevhen

PS: I realized i could not attach any txt files here is my input for (3) and the error message from the output:
$molecule
-2 1
O 0.1557631766 -0.6014863832 1.1210836524
O 0.1557631764 -0.6014863831 -1.1210836521
C -0.3295479973 -0.1987332477 -0.0000000001
C -1.4808710910 0.7960946717 -0.0000000001
H -1.0551533516 1.8165232195 -0.0000000001
H -2.0915713540 0.6730772290 -0.9089159646
H -2.0915713543 0.6730772290 0.9089159647
Li 14.803638342 -13.274920430 -0.000000001
$end

$rem
method wb97m-v
basis gen
purecart 11
jobtype sp
sym_ignore true
no_reorient true
mem_total 14000
$end

$basis
O 0
aug-cc-pVTZ


C 0
aug-cc-pVTZ


H 0
aug-cc-pVTZ


Li 0
aug-cc-pVTZ


$end

@@@

$molecule
0 1
O 0.1557631766 -0.6014863832 1.1210836524
O 0.1557631764 -0.6014863831 -1.1210836521
C -0.3295479973 -0.1987332477 -0.0000000001
C -1.4808710910 0.7960946717 -0.0000000001
H -1.0551533516 1.8165232195 -0.0000000001
H -2.0915713540 0.6730772290 -0.9089159646
H -2.0915713543 0.6730772290 0.9089159647
Li 14.803638342 -13.274920430 -0.000000001
$end

$rem
method wb97m-v
basis gen
purecart 11
scf_guess read
scf_algorithm gdm
unrestricted false
jobtype sp
sym_ignore true
no_reorient true
!CM5 true
mem_total 14000
!XDM module
DFTVDW_JOBNUMBER 1
DFTVDW_METHOD 1
DFTVDW_PRINT 2
$end

$basis
O 0
aug-cc-pVTZ


C 0
aug-cc-pVTZ


H 0
aug-cc-pVTZ


Li 0
aug-cc-pVTZ


$end

The error is
8 -235.8304062748 2.46E-05 Normal BFGS step
Inaccurate integrated density:
Number of electrons = 34
Numerical integral = 33.995354239436
Relative error = -0.0136640017 %
9 -235.8304062730 3.75E-06 Convergence criterion met

ex ec : -20.951067 -0.976463

Starting XDM module in DFT

Basis set code = 0

Q-Chem fatal error occurred in module forms1/BasisType.C, line 1853:

Unrecognized standard basis set in BasisType::Translate

Please submit a crash report at Q-Chem Crash Reporter

Hi Yevhen,
I have a science comment and a software comment. Also note that you can use the preformatted text but </> to avoid weird format issues when you copy/paste text into this GUI, which tends to gobble up some special characters and reinterpret others.

Science comment is that I’m not sure it makes sense to add XDM to a functional such as wB97M-V that already includes dispersion interactions. Erin Johnson seems to agree with me,

With regard to using XDM in Q-Chem, I think perhaps your input is missing the DFTVDW_MOL1NATOMS variable in $rem, which tells it where monomer #1 ends and #2 beings. See here:

https://manual.q-chem.com/latest/sect_XDM.html

The usage for XDM changed starting in v. 6.1.1, I implemented updated damping parameters and changed the job control. I don’t have older versions compiled so I can’t test your input directly, however in v. 6.1.1 I can do what you want: GEN basis set to generate the guess, then read it into a XDM job.

By way of self-promotion, updated damping parameters are discussed (with refs) in the Acknowledgements section of this paper, which also discusses the theory behind why XDM shouldn’t be added to a dispersion-inclusive functional.

Dear John Herbert:

Thank you so much for your answer and thank you for sharing these two important papers.
This is true, it is like we are counting dispersion twice.

Let me recall and let you know later the reason we started to use XDM with a func. that already has disp. correction. (Probably, one of our collaborators observed that if used together to obtain C6, the forcefield fit to these C6 provides more realistic description of our system.)

As for DFTVDW_MOL1NATOMS, unfortunately it did not work.
For the XDM job my $rem was

$rem
method wb97m-v
basis gen
purecart 11
scf_guess read
scf_algorithm gdm
unrestricted false
jobtype sp
sym_ignore true
no_reorient true
!CM5 true
mem_total 14000
!XDM module
DFTVDW_JOBNUMBER 1
DFTVDW_METHOD 1
DFTVDW_MOL1NATOMS 7
DFTVDW_PRINT 2
$end

I still have exactly the same error :frowning:

It is interesting that v 6.1 can do it, but 5.2 cannot (unless i still have a mistake that i do not see in my input).

Kind regards,
Yevhen

The new changes to XDM are only in 6.1.1. For help with your older version of Q-Chem, please contact Q-Chem support, let them know what version you are running and perhaps they can supply a workaround.

One workaround for GEN basis sets that is not very well known is that the user can create up to two user-defined basis sets (BASIS = USER1 or USER2). To do this, you need to create a basis file in Q-Chem format and place it in $QCAUX/basis/user1.bas (or user2.bas). You won’t have the SAD guess in the library but you can use SCF_GUESS = AUTOSAD to generate it on-the-fly.

Dear John Herbert:

Thank you for letting me know this tip/workaround with Q-Chem.

Before i contact the support team, let me ask you a question about the ‘basis gen’ use to be sure i have done it in a correct way, as i am new to Q-Chem:

As i understood from the manual, Is it correct that if i use ‘basis gen’ then in my $basis there have to be basis sets for DIFFERENT ATOM TYPES and zero’s after atomic symbols, e.g.,

$basis
O 0
aug-cc-pVTZ
****
C 0
aug-cc-pVTZ
****
H 0
aug-cc-pVTZ
****
Li 0
aug-cc-pVTZ
****
$end

whereas, if i use ‘basis mixed’, then in my $basis there have to be basis sets for ALL ATOMS and numbers representing atomic order (?) after atomic symbols, e.g.,

$basis
O 1
aug-cc-pVTZ
****
O 2
aug-cc-pVTZ
****
C 3
aug-cc-pVTZ
****
C 4
aug-cc-pVTZ
****
H 5
aug-cc-pVTZ
****

$end

That’s correct
[extra characters inserted to reach minimum requirement]