About user-defined basis set in PSI4


Dear friends,
A user-defined basis set can easily be included within the psi4 library. To do so, a desirable basis set should be included in a blank file and in the top of this file “spherical” or “cartesian” phrase should also be included. I would like to include “ma-tzvpp” basis which makes some improvements over the well-known def2-tzvp basis.
My question is that how I can find which of “spherical” or “cartesian” is appropriate for this newly defined basis set.

Any help is highly appreciated.



This adds few diffuse function to the def2 basis sets, which are spherical. So spherical would be correct. Should ideally be described in the papers, but essentially all modern basis sets are developed for spherical functions.

You might need to provide an appropriate DF basis sets yourself.
aug-cc-pVXZ-JKFIT is a safe choice, they default (def2-QZVP-JKFIT probably) should be OK for ma-TZVP as well.


Dear hokru,
Too many thanks for your kindly attention.
Please let me ask another question. As you nicely indicated, all modern basis sets are developed for the spherical considerations. So, why two different “spherical” and “cartesian” choices are provided by PSI4 while we are sure that the former should be considered? On the other hand, there are some highly common basis such as 6-31G(d) which work at the cartesian manner.



PSI4 wants to be nice and provide such a feature, e.g. when you want to reproduce older works.

I wish people would stop using this basis set. The 90s are over, nowadays it causes more harm to the field than good. But that’s my option…
The use of cartesians for 6-31G(d) and spherical for all other Pople ones also lead to more confusion than good. Some programs ignore that and just use spherical functions regardless. Doesn’t matter for at best qualitative results anyway.


Dear Holger,
First, please excuse me to call you by your user name in the forum. I found that you are Holger Kruse.
Your nice explanations were found very helpful and informative; many thanks.

Please note that I am a Gaussian user which use PSI4 just for the SAPT analysis. Moreover I am highly beginner in PSI4 (I am trying to work with this so nice, powerful, and interesting code just from two days ago!).
I would be much grateful if you kindly let me ask a question:

I always use “df_basis_scf aug-cc-pvtz-jkfit” and “df_basis_sapt aug-cc-pvtz-ri” keywords within the SAPT analysis (SAT0, SAPT2+, SAPT2+(3) and so on) together with aug-cc-PVTZ basis set or any other desirable basis set. I do not know whether my procedure is correct. Indeed, are the basis sets employed for “df_basis_scf” and “df_basis_sapt” dependent to the used basis set such as aug-cc-PVTZ? Is there any relationship between these three variables? Is it possible to provide a best and optimum choice regarding SAPT calculations?

In advance, many thanks for your kindness.



For all built in basis sets PSI4 defaults to a reasonable one. If you use a too small or too unsuited fitting basis set the results can yield significant errors. All Dunning basis sets are well covered, let the program choose for you.


Dear Holger,
Too many thanks. What do you mean from “let the program choose for you”?
Is your mean that if “df_basis_scf” and “df_basis_sapt” are not entered by user within the input file, the program is able to automatically choose the best ones?



Yes, no need to specify them yourself unless you use a user-defined basis set.


Dear Holger,

I found that the choice “guess gwh” or “guess sad” within SAPT analysis has no crucial effect since both finally lead to same results. The unique difference is that employing “guess sad” results in a faster SCF convergence. For instance, in a given analysis, while “guess gwh” allows SCF to be converged after 19 cycles, “guess sad” makes convergence possible just after 11 cycles.
By the way, one of my friends prefers to always use “guess gwh”.

May you let me know your valuable opinion?



Dear Holger,
Suppose that we are going to perform a rigid scan over the distance of two interacting monomers such that the SAPT analysis is simultaneously performed for any point of the scan task. Could you please let me know how should be the input file?