GaussianShell Angular Momentum Ordering

Hi All,

What is the order of the angular momentum polynomials in psi4? I am currently accessing the results of a computation via: psi4.core.GaussianShell. This provides the angular momentum for the shell, but not the ordering of the polynomials.

So far I know that: $S, P_z, P_x, P_y$ is correct (from ensuring the electron density is the same under rotation).

From the ordering of the $P$ orbitals I would assume the $D$ orbitals are ordered:
$D_{zz}, D_{zx}, D_{zy}, D_{xx}, D_{xy}, D_{yy}$

And the $F$:
$F_{zzz}, F_{zzx}, F_{zzy}, F_{zxx}, F_{zxy}, F_{zyy}, F_{xxx}, F_{xxy}, F_{xyy}, F_{yyy}$

Is this correct or have I misunderstood?

Thanks in advance!

If you’re interested in angular momentum, then why are your orbitals indexed by Cartesians?

I am not interested in angular momentum as a property, I am interested in computing the properties of the electron density. This requires that I compute the value of the basis function at any point in real space. I need to work with more complex molecules (which have higher momentum Cartesian basis sets), but it appears that Psi4 uses a different convention than the other QM codes I have used.

There is a function in libmints that will do this: BasisSet::compute_phi() in bassisset.cc.

compute_phi would need to be exported over to Python if you want to use it in a Python program, and the arguments would need to be documented. The first argument in particular isn’t obvious to me at first glance. It’s certainly possible, but would require either somebody who already knows how to use that function, or for somebody else to use the source to figure it out.

If you still need the original question answered, let me rephrase: You seem to be interested in how Psi orders its angular momentum-indexed orbitals, but are trying to express that in terms of Cartesian-indexed orbitals. That’s an impossible task. For example, there are 6 Cartesian indexed D-orbitals, but 5 angular momentum indexed D-orbitals.

What am I missing?

Hi, I think we are talking about slightly different things, this may be me playing “fast and loose” with the word angular momentum. I want to know the ordering of the basis functions (for Cartesian Gaussian Basis Sets) within a shell. For example: a P shell has three basis functions (Px, Py, Pz) but it seems that Psi4 orders the basis functions (Pz, Px, Py) – I say this as it appears to be the only ordering that makes the electron density invariant to molecular rotation (i used “symmetry c1” “nocom” and “noreorient” to check this). In a D shell there are 6 basis functions returned by Psi4 – I have just checked this also.

Thank you for the pointer to basisset.cc but this seems to order the P basis functions x, y, z (looking at the basis_set::initialize_singletons). Even with “noreorient” will psi4 still align a molecule internally with a primary axis and return the basis function coefficients/density matrix with respect to the internal alignment?

Additional: I am accessing all the coefficients, density matrix, primitive parameters, nuclear coordinates etc via the python interface after loading a wfn file.