LOWDIN_POPULATION and HF

I tried to calculate Löwdin charges for the HF wave function as follows:

$molecule
0  1
O          0.00000        0.00000        0.11779
H          0.00000        0.75545       -0.47116
H          0.00000       -0.75545       -0.47116
$end

$rem
GUI = 2
SYM_IGNORE      true
JOBTYPE         sp
BASIS           6-31++G**
METHOD          hf
LOWDIN_POPULATION true
MEM_STATIC      2000
MEM_TOTAL      165000
$end

However, there are (only) Mulliken charges in the output:

          Ground-State Mulliken Net Atomic Charges

     Atom                 Charge (a.u.)
  ----------------------------------------
      1 O                    -0.711941
      2 H                     0.355970
      3 H                     0.355970
  ----------------------------------------
  Sum of atomic charges =     0.000000

Could you please explain how to get HF Löwdin charges?
I’m using Q-Chem 4.4.

This is described in the manual,
https://manual.q-chem.com/latest/subsec_pop_anal.html
Set LOWDIN_POPULATION = TRUE. Currently, what you get are Löwdin populations for each occupied MO, which you must sum yourself. (Set POP_MULLIKEN = 2 to see the Mulliken charges in the same format, for comparison.)

Thanks.
I have used
LOWDIN_POPULATION true (see original input here: LOWDIN_POPULATION and HF).
But there are neither Löwdin charges nor populations for each occupied MO in the output…
[There are only Orbital Energies, Ground-State Mulliken Net Atomic Charges, and Cartesian Multipole Moments.]
Any ideas? (I’m using Q-Chem 4.4.)

It seems that LOWDIN_POPULATION does not work in Q-Chem 4.4.

However, if I set POP_MULLIKEN = 2, I get Löwdin populations.

Using this input:

$molecule
0  1
O          0.00000        0.00000        0.11779
H          0.00000        0.75545       -0.47116
H          0.00000       -0.75545       -0.47116
$end

$rem
METHOD         hf
BASIS          6-31++G**
POP_MULLIKEN   2
$end

I get the following:

              Partial Lowdin         Populations for Occupied RHF Orbitals

                         1         2         3         4         5
                        1A1       2A1       1B1       3A1       1B2  
   1    O     s     1.99496   1.04011   0.00000   0.13766   0.00000
   2    O     p     0.00002   0.03543   1.31517   1.57491   1.93680
   3    O     d     0.00089   0.43699   0.02178   0.05153   0.00086
   4    H 1   s     0.00102   0.20882   0.30887   0.10044   0.00000
   5    H 1   p     0.00104   0.03492   0.02265   0.01750   0.03117
   6    H 2   s     0.00102   0.20882   0.30887   0.10044   0.00000
   7    H 2   p     0.00104   0.03492   0.02265   0.01750   0.03117

I think LOWDIN_POPULATION may have been added in a later version, as a substitute for POP_MULLIKEN = 2. What you are seeing is the orbital-by-orbital breakdown of the Loewdin populations, you need to add them up to get the atomic populations. For example, on H1:

Q = 0.00102 + 0.02882 + ... + 0.00104 + 0.03492 + ... + 0.03117 = 0.72643

The atomic population is Z - Q, so for H1 it is 1.0 - 0.72643 = 0.27357.

With more recent versions of Q-Chem you still have to do the same exercise but the printing is triggered by LOWDIN_POPULATION = TRUE, whereas POP_MULLIKEN = 2 will give you the orbital-by-orbital Loewdin populations.

Thank you.
I see.

Did you mean Mulliken (instead of Loewdin)?

I was referring to more recent versions of Q-Chem where the behavior has changed. In recent versions, POP_MULLIKEN = 2 provides orbital-by-orbital Mulliken populations whereas LOWDIN_POPULATION does this for Loewdin. I do (vaguely) recall the behavior that you are seeing in v. 4.4; can’t quite remember when this change was made.

1 Like