# Mulliken Charge Analysis

From version 2.1.0, ABACUS has the function of Mulliken population analysis. The example can be found in examples/mulliken.

To use this function, set out_mul to `1`

in the INPUT file. After calculation, there will be an output file named `mulliken.txt`

in the output directory. In MD calculations, the output interval is controlled by the keyword out_interval. In the file, there are contents like (`nspin 1`

):

```
STEP: 0
CALCULATE THE MULLIkEN ANALYSIS FOR EACH ATOM
Total charge of spin 1: 8
Total charge: 8
Decomposed Mulliken populations
0 Zeta of Si Spin 1
s 0 1.2553358
sum over m 1.2553358
s 1 -0.030782972
sum over m -0.030782972
sum over m+zeta 1.2245529
px 0 0.85945806
py 0 0.85945806
pz 0 0.85945806
sum over m 2.5783742
px 1 0.0065801228
py 1 0.0065801228
pz 1 0.0065801228
sum over m 0.019740368
sum over m+zeta 2.5981145
d3z^2-r^2 0 0.0189287
dxy 0 0.046491729
dxz 0 0.046491729
dx^2-y^2 0 0.0189287
dyz 0 0.046491729
sum over m 0.17733259
sum over m+zeta 0.17733259
Total Charge on atom: Si 4
...
```

The file gives Mulliken charge in turn according to the order of atoms in the system. For example, the following block is for the first atom in system (`nspin 2`

),

```
0 Zeta of Si Spin 1 Spin 2 Sum Diff
...
Total Charge on atom: Si 4
Total Magnetism on atom: Si -1.2739809e-14
```

And the next block is for the second atom in system, and so on.

```
1 Zeta of Si Spin 1 Spin 2 Sum Diff
...
```

For each atom, the file gives detailed Mulliken population analysis at different levels,

magnetic quantum number level: such as lines beigin with ‘s,px,py,pz,…’

azimuthal quantum number level: such as lines begin with ‘sum over m’.

principal quantum number level: such as lines begin with ‘sum over m+zeta’. Here ‘zeta’ equals ‘zeta’ in the file, which means how many radial atomic orbitals there are for a given orbital angular momentum.

atomic level: such as lines begin with ‘Total Charge on atom’.

More orbital information can be found in ‘Orbital’ file output with ‘mulliken.txt’ when `out_mul 1`