Atomic orbital information in population analysis

Hi

Does anyone know how to get Q-chem to output the full atomic orbital information in the population analysis?

e.g.

1   1   C  1s        1.00
2          2s        0.00
3          2px       0.00  
4          2py       0.00   
5          2pz       0.00

By setting POP_MULLIKEN = 1 or 2 (my output doesnt seem to change…), my output file list the shells (s,p,d etc). But I can’t work out how to break it down further into the px, py and pz components for example

I have worked out how to print the full MO coefficients using PRINT_ORBITALS, but this is more difficult to analyze…

I am sure I must be missing something really trivial!

Thanks

To my knowledge, Q-Chem does not make this breakdown for Mulliken charges. If you provide more information about what it’s for, perhaps there is an alternative way of obtaining the data.

Thanks for the reply. I managed to get what I wanted from carefully looking at the orbitals carefully. I was trying to compare some singlet and triplet configurations of a molecule and checking the populations were as I was expecting.

If what you mean is the orbital-by-orbital Mulliken population breakdown, that is available by setting POP_MULLIKEN=2 (as described in the manual). There’s also a sample job (MulDen.in) that sets POP_MULLIKEN=3, which is NOT described in the manual (I will fix), but =3 gives you the =2 option plus spin densities at the nuclei. So are you not seeing this? e.g., for the MulDen.in sample job with POP_MULLIKEN=2 I see the regular atomic Mulliken populations followed by

          Partial Mulliken       Populations for Occupied RHF Orbitals

                     1         2         3         4         5         6

1 Sc s 1.99975 2.00407 0.00000 0.00000 0.00002 2.06996
2 Sc p 0.00000 0.00002 2.00000 2.00000 1.99996 -0.00000
3 Sc d 0.00024 -0.00409 0.00000 0.00000 -0.00000 -0.07080
4 Sc f -0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
5 H s 0.00000 0.00000 -0.00000 -0.00000 0.00002 0.00084
7 8 9 10 11
1 Sc s -0.00009 -0.00000 -0.00000 0.26002 1.48027
2 Sc p 1.99097 1.99993 1.99993 0.18988 0.14625
3 Sc d 0.00033 0.00002 0.00002 0.37338 0.37567
4 Sc f 0.00003 0.00005 0.00005 0.00179 -0.00001
5 H s 0.00876 0.00000 0.00000 1.17492 -0.00218

and then for POP_MULLIKEN=3 I get all of that plus

            Density at the Nuclear Centers For Each Occupied RHF Orbital

                     1         2         3         4         5         6

1 Sc 5296.513 454.660 0.000 0.000 0.004 56.706
2 H 0.000 0.000 -0.000 0.000 -0.000 0.000
7 8 9 10 11
1 Sc 0.000 0.000 -0.000 0.927 2.392
2 H 0.002 0.000 -0.000 0.371 0.006

Total Electron Density at the Nuclear Centers

1 Sc 5811.200942833872
2 H 0.378519550836

If you can’t get this type of output, let me know.

Hello

Thanks for the information about POP_MULLIKEN=3, I did not know that.

It is not exactly what I was after. I was asking if there is a way of breaking down the contributions further. e.g. rather than grouping all the d orbitals together, how to seperate them out into dxy, dxy, dyz etc in the popoulation analysis (as is done in ORCA or Gaussian output files).

It is not a big deal though :slight_smile:

Ah, okay, I see. The answer to that question is no, to the best of my knowledge; POP_MULLIKEN=3 is as much as they are broken down. (Similarly LOWDIN_POPULATION=1 gives you the Lowdin population breakdown but only to the same level of granularity.) If you really want this information, then you could coax Q-Chem to give you MO coefficients © and overlap matrix (S), then construction the density matrix P = CC^t and compute them yourself, since Mulliken populations come from the matrix P*S (as described in Szabo & Ostlund and probably elsewhere). This can be accomplished with the following $rem section:

$rem
scf_final_print true ! prints S, P, and other matrices at the end
gen_scfman false ! these printing options only work in the old SCF code, I think
scf_print 3 ! info at intermediate cycles, probably unnecessary here
print_orbitals true ! MO coeffs at the end but print statements above give you P directly
basis sto-3g ! or whatever, but the matrices get big
method hf ! or DFT
$end

1 Like