About JK basis and orbital rotation

Dear all,

  1. I want to switch off the RI acceleration since there is no corresponding JK sets for the element. I tried to disable it by “set DF_SCF_GUESS false” as the manual suggests, but the calculation still comes out with an error message:
    “Unable to find a basis set for atom 1 for key JKFIT”

For another attempt, I tried to assign some additional variables, by:
set guess core
set DF_SCF_GUESS False

it does run without the JK-basis-set error message. But the calculation is much slower than I expect. I calculate a four-atom system (La2N2 under Cs symmetry) with x2c Hamiltonian and cc-pvdz basis sets and the PW91 functional for a single point energy. I provide 60 cores with 250Gb memory, but the calculation hasn’t been finished within 90min.

Is that normal? How to properly switch off the RI?

  1. For another question about the orbital rotation, I found a discussion posted about 5 years ago:
    About ROHF orbital rotation

I wonder is there any more convenient way to rotate orbitals now (preferably like molpro)? And does it work for uks calculations?

  1. Is there any way to fine-control the printed MO? I only need orbitals around HOMO and LUMO to be printed, instead of all orbitals.

Many thanks in advance.


The calculation should definitively run faster.
Where is the calculation stuck? The output and input file would help a lot for debugging this.
Is this version 1.3.2? There have been improvements for x2c in the current developer version.

Generally, setting scf_type pk should not try to find any RI basis set.

The MO printing cannot be fine tuned, but you can additionally print selected orbital data at the python level using the wavefunction class https://psicode.org/psi4manual/master/psi4api.html#psi4.core.Wavefunction

I don’t think any orbital rotation interface for the SCF was added, but the code in that forum post can be used.

Dear Hokru,

many thanks for your reply.

I am using Psi4 1.3.2 release version.

And here is my input:
memory 250 Gb

molecule test {
0 3
La -1.477993 -0.318871 0.0
La 1.623223 -0.043134 0.0
N 0.039656 1.260848 0.0
N -1.160547 1.740903 0.0

units angstrom

#basis_relativistic cc-pvtz-dk
relativistic x2c

basis {
assign N cc-pvdz
assign La cc-pvdz-x2c

set SCF_TYPE pk
set guess core
set DF_SCF_GUESS False
set reference uks
set print_MOs true
The calculation is not stuck. It is just slow. This setup finishes in 30min.

For another test, I set SCF_TYPE direct, and this calculation is even slower. Each SCF iteration takes more than 30min. (In the first post, I mentioned the calculation didn’t finish within 90min. That calculation was using SCF_TYPE direct, not pk. Sorry for the confusion)

But even with SCF_TYPE pk, I still feel 30 min for a single point calculation is a bit too slow.

PSI4 only has a segmented integral code and cannot make use of the general contract. That and these deeply contracted basis sets for Lanthanides make the conventional integral generation very slow.
If you use PK, then the first step will take long as all integrals are computed first and stored (disk or in-core). The rest of the SCF should be faster, though.

There are x2c basis sets from Turbomole that also have a JFIT basis sets (dont need JK-Fit for a GGA).
https://www.basissetexchange.org/ (e.g. x2c-JFIT, x2c-SVPall)
Then you can use RI and it should be faster.

Thanks! Now everything seems much better!