Orbital Composition Analysis
This blog shows how to perform orbial composition analysis based on Gaussian output files.
1. General Information
Orbital composition analysis is to evaluate the contributions of various components that make up an orbital.The orbitals could be any type of orbitals (MO, LMO, NO, etc). These components can be analyzed at different levels, from smallest to largest: (1) basis functions, (2) atomic orbitals, (3) atoms, (4) molecular fragments.
2. Calculate Contributions of Basis Functions
Here we will use a water molecule as example to explain. Input file is like this:
#p b3lyp/6-31(d) pop=full iop(3/33=1)
Basis functions composition
0 1
O 0. 0. 0.11972
H 0. 0.76155 -0.47887
H 0. -0.76155 -0.47887
Using the keyword pop=full
prints out the orbital coefficient and iop(3/33=1)
outputs the overlap matrix (see below).
The orbital part in the output file appears as follows:
Molecular Orbital Coefficients:
1 2 3 4 5
(A1)--O (A1)--O (B2)--O (A1)--O (B1)--O
Eigenvalues -- -19.13815 -0.99790 -0.51718 -0.37220 -0.29119
1 1 O 1S 0.99286 -0.20950 0.00000 -0.08809 0.00000
2 2S 0.02622 0.46921 0.00000 0.17724 0.00000
3 2PX 0.00000 0.00000 0.00000 0.00000 0.64458
4 2PY 0.00000 0.00000 0.51744 0.00000 0.00000
5 2PZ -0.00110 -0.12769 0.00000 0.55184 0.00000
6 3S 0.01011 0.43950 0.00000 0.41041 0.00000
7 3PX 0.00000 0.00000 0.00000 0.00000 0.50605
8 3PY 0.00000 0.00000 0.26974 0.00000 0.00000
9 3PZ -0.00000 -0.06064 0.00000 0.37218 0.00000
10 4XX -0.00772 -0.01093 0.00000 -0.00026 0.00000
11 4YY -0.00777 0.01879 0.00000 0.00089 0.00000
12 4ZZ -0.00775 0.01607 0.00000 -0.05242 0.00000
13 4XY 0.00000 0.00000 0.00000 0.00000 0.00000
14 4XZ 0.00000 0.00000 0.00000 0.00000 -0.03544
15 4YZ 0.00000 0.00000 -0.04127 0.00000 0.00000
16 2 H 1S 0.00037 0.13915 0.23745 -0.14372 0.00000
17 2S -0.00103 0.00645 0.14193 -0.11426 0.00000
18 3 H 1S 0.00037 0.13915 -0.23745 -0.14372 0.00000
19 2S -0.00103 0.00645 -0.14193 -0.11426 0.00000
From the output, the HOMO (No.5) wavefunction can be writen as:
\[\Psi _5 = 0.64458 \times \chi_3 + 0.50605 \times \chi _7 -0.03544 \times \chi _{14}\]Since the orbital must be normalized:
\[\langle \Psi _5 | \Psi _5 \rangle = 1 = 0.64458^2 \times \langle \chi_3|\chi_3 \rangle + 0.50605^2 \times \langle \chi_7|\chi_7 \rangle + 0.03544^2 \times \langle \chi_{14}|\chi_{14} \rangle + 2 \times 0.64458 \times 0.50605 \langle \chi_3|\chi_7 \rangle - 2 \times 0.64458 \times 0.03544 \langle \chi_3|\chi_{14} \rangle - 2 \times 0.50605 \times 0.03544 \langle \chi_7|\chi_{14} \rangle\]Thus,
\[1 = 0.41548 \times S_{3,3} + 0.25609 \times S_{7,7} + 0.00126 \times S_{14,14} + 0.65238 \times S_{3,7} - 0.04569 \times S_{3,14} - 0.03587 \times S_{7,14}\]In the above equetion, 0.41548 represents the contribution of basis χ3 to HOMO, while 0.65238 reflects the combined contribution of basis χ3 and χ7 to HOMO. Since, Sa,a = 1,
Thus,
\[\langle \Psi _5 | \Psi _5 \rangle = 0.67283 + 0.65238 \times S_{3,7} - 0.04569 \times S_{3,14} - 0.03587 \times S_{7,14}\]To calculate the contribution of each basis function, we need overlap integral S3,7, S3,14, and S7,14. These overlap integral can be obtained using iop(3/33=1)
keyword and aresummarized in the Overlap section:
*** Overlap ***
1 2 3 4 5
1 0.100000D+01
2 0.233690D+00 0.100000D+01
3 0.000000D+00 0.000000D+00 0.100000D+01
4 0.000000D+00 0.000000D+00 0.000000D+00 0.100000D+01
5 0.000000D+00 0.000000D+00 0.000000D+00 0.000000D+00 0.100000D+01
6 0.167280D+00 0.763641D+00 0.000000D+00 0.000000D+00 0.000000D+00
7 0.000000D+00 0.000000D+00 0.501521D+00 0.000000D+00 0.000000D+00
8 0.000000D+00 0.000000D+00 0.000000D+00 0.501521D+00 0.000000D+00
9 0.000000D+00 0.000000D+00 0.000000D+00 0.000000D+00 0.501521D+00
10 0.335315D-01 0.547066D+00 0.000000D+00 0.000000D+00 0.000000D+00
11 0.335315D-01 0.547066D+00 0.000000D+00 0.000000D+00 0.000000D+00
12 0.335315D-01 0.547066D+00 0.000000D+00 0.000000D+00 0.000000D+00
13 0.000000D+00 0.000000D+00 0.000000D+00 0.000000D+00 0.000000D+00
14 0.000000D+00 0.000000D+00 0.000000D+00 0.000000D+00 0.000000D+00
15 0.000000D+00 0.000000D+00 0.000000D+00 0.000000D+00 0.000000D+00
16 0.334348D-01 0.241296D+00 0.000000D+00 0.221010D+00 -0.173718D+00
17 0.681738D-01 0.376405D+00 0.000000D+00 0.116274D+00 -0.913932D-01
18 0.334348D-01 0.241296D+00 0.000000D+00 -0.221010D+00 -0.173718D+00
19 0.681738D-01 0.376405D+00 0.000000D+00 -0.116274D+00 -0.913932D-01
6 7 8 9 10
6 0.100000D+01
7 0.000000D+00 0.100000D+01
8 0.000000D+00 0.000000D+00 0.100000D+01
9 0.000000D+00 0.000000D+00 0.000000D+00 0.100000D+01
10 0.699015D+00 0.000000D+00 0.000000D+00 0.000000D+00 0.100000D+01
11 0.699015D+00 0.000000D+00 0.000000D+00 0.000000D+00 0.333333D+00
12 0.699015D+00 0.000000D+00 0.000000D+00 0.000000D+00 0.333333D+00
13 0.000000D+00 0.000000D+00 0.000000D+00 0.000000D+00 0.000000D+00
14 0.000000D+00 0.000000D+00 0.000000D+00 0.000000D+00 0.000000D+00
15 0.000000D+00 0.000000D+00 0.000000D+00 0.000000D+00 0.000000D+00
16 0.421231D+00 0.000000D+00 0.457410D+00 -0.359532D+00 0.162722D+00
17 0.678714D+00 0.000000D+00 0.379588D+00 -0.298363D+00 0.395977D+00
18 0.421231D+00 0.000000D+00 -0.457410D+00 -0.359532D+00 0.162722D+00
19 0.678714D+00 0.000000D+00 -0.379588D+00 -0.298363D+00 0.395977D+00
11 12 13 14 15
11 0.100000D+01
12 0.333333D+00 0.100000D+01
13 0.000000D+00 0.000000D+00 0.100000D+01
14 0.000000D+00 0.000000D+00 0.000000D+00 0.100000D+01
15 0.000000D+00 0.000000D+00 0.000000D+00 0.000000D+00 0.100000D+01
16 0.401135D+00 0.310019D+00 0.000000D+00 0.000000D+00 -0.324581D+00
17 0.440358D+00 0.423396D+00 0.000000D+00 0.000000D+00 -0.604210D-01
18 0.401135D+00 0.310019D+00 0.000000D+00 0.000000D+00 0.324581D+00
19 0.440358D+00 0.423396D+00 0.000000D+00 0.000000D+00 0.604210D-01
16 17 18 19
16 0.100000D+01
17 0.658292D+00 0.100000D+01
18 0.502482D-01 0.221846D+00 0.100000D+01
19 0.221846D+00 0.512715D+00 0.658292D+00 0.100000D+01
For this example, the S3,7 = 0.50152, and S3,14 = S7,14 = 0. Thus,
\[\langle \Psi _5 | \Psi _5 \rangle = 0.67283 + 0.65238 \times 0.50152 = 1.00002\]To calculate the contribution of each basis function χn, here are three methods:
(1) Mulliken Partition
In the Mulliken partition, when calculating the contribution of basis function χn to an orbital, all the diagonal (localized, i.e., Sn,n) terms of χn are assigned entirely to χn, while half of the off-diagonal (overlap, i.e., Sn,m) terms between χn and χm are also attributed to χn.
In the above example, the contribution of χ3 to HOMO is:
\[0.64458^2 + 0.64458 \times 0.50605 \times 0.50152 = 0.57907\]Similar, the contribution of χ7 and χ14 to HOMO are 41.968% and 0.126%, respectively.
(2) Stout-Politzer Partition
The Stout–Politzer partition accounts for the inequality between basis functions by partitioning the overlap terms in proportion to the squared coefficients of the two involved basis functions. For above example, the contribution of χ3 to HOMO is:
\[0.64458^2 + 2 \times 0.64458 \times 0.50605 \times 0.50152 \times \frac {0.64458^2}{0.64458^2+0.50605^2} = 0.61790\]Similar, the contribution of χ7 and χ14 to HOMO are 38.085% and 0.126%, respectively.
(3) Ros-Schuit (SCPA) partition
skip for now, maybe added later
3. Calculate Contributions of Atomic Orbitals
Here are several methods to do this, and in this blog, I will introducing the NAO approach.
In Gaussian, using keyword pop=nboread
and add $NBO NAOMO $END
at the end of input file, the NBO module will print the NAO population results and orbital coefficient of NAO:
NATURAL POPULATIONS: Natural atomic orbital occupancies
NAO Atom No lang Type(AO) Occupancy Energy
----------------------------------------------------------
1 O 1 S Cor( 1S) 1.99992 -18.98955
2 O 1 S Val( 2S) 1.76556 -0.88052
3 O 1 S Ryd( 3S) 0.00271 1.19296
4 O 1 S Ryd( 4S) 0.00000 3.53766
5 O 1 px Val( 2p) 1.99661 -0.28809
6 O 1 px Ryd( 3p) 0.00088 0.89052
7 O 1 py Val( 2p) 1.45457 -0.25518
8 O 1 py Ryd( 3p) 0.00287 1.02985
9 O 1 pz Val( 2p) 1.69984 -0.28442
10 O 1 pz Ryd( 3p) 0.00043 0.93030
11 O 1 dxy Ryd( 3d) 0.00000 1.74635
12 O 1 dxz Ryd( 3d) 0.00251 1.77697
13 O 1 dyz Ryd( 3d) 0.00205 2.53155
14 O 1 dx2y2 Ryd( 3d) 0.00069 2.13328
15 O 1 dz2 Ryd( 3d) 0.00267 1.73849
16 H 2 S Val( 1S) 0.53264 0.14162
17 H 2 S Ryd( 2S) 0.00169 0.57225
18 H 3 S Val( 1S) 0.53264 0.14162
19 H 3 S Ryd( 2S) 0.00169 0.57225
MOs in the NAO basis:
NAO 1 2 3 4 5 6 7 8
---------- ------- ------- ------- ------- ------- ------- ------- -------
1. O 1 (S) 0.9959 -0.0875 -0.0000 -0.0218 0.0000 0.0042 -0.0000 -0.0000
2. O 1 (S) 0.0840 0.8718 -0.0000 0.3402 0.0000 0.2404 0.0000 0.0000
3. O 1 (S) 0.0004 0.0134 0.0000 -0.0343 -0.0000 -0.1941 -0.0000 0.0000
4. O 1 (S) -0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0367 -0.0000 0.0000
5. O 1 (px) 0.0000 0.0000 0.0000 -0.0000 0.9992 0.0000 -0.0000 -0.0000
6. O 1 (px) -0.0000 -0.0000 -0.0000 0.0000 -0.0210 -0.0000 0.0000 0.0000
7. O 1 (py) 0.0000 0.0000 0.8528 -0.0000 0.0000 -0.0000 -0.3862 -0.3369
8. O 1 (py) 0.0000 -0.0000 0.0379 -0.0000 -0.0000 -0.0000 -0.0097 0.3747
9. O 1 (pz) 0.0023 -0.2020 -0.0000 0.8995 -0.0000 -0.3068 0.0000 -0.0000
10. O 1 (pz) -0.0010 -0.0051 0.0000 -0.0138 0.0000 0.0118 0.0000 0.0000
11. O 1 (d1) 0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000
12. O 1 (d2) -0.0000 0.0000 0.0000 -0.0000 -0.0354 0.0000 -0.0000 0.0000
13. O 1 (d3) -0.0000 -0.0000 -0.0320 0.0000 -0.0000 -0.0000 0.0143 -0.1522
14. O 1 (d4) 0.0001 -0.0185 -0.0000 0.0023 -0.0000 0.0167 0.0000 -0.0000
15. O 1 (d5) -0.0000 0.0083 0.0000 -0.0356 0.0000 0.0129 -0.0000 0.0000
16. H 2 (S) 0.0234 0.3082 0.3674 -0.1893 -0.0000 -0.4673 0.4331 0.3805
17. H 2 (S) 0.0020 -0.0228 0.0122 -0.0131 -0.0000 -0.4312 0.4875 -0.4655
18. H 3 (S) 0.0234 0.3082 -0.3674 -0.1893 -0.0000 -0.4673 -0.4331 -0.3805
19. H 3 (S) 0.0020 -0.0228 -0.0122 -0.0131 0.0000 -0.4312 -0.4875 0.4655
In the first output section, the core (Cor
), valence (Val
) and Rydberg (Ryd
) NAOs of the natural minimum basis are summarized. In most cases, only the contributions from Cor
and Val
NAOs are significant, as the Ryd
NAOs are typically negligible.
From the first table, we can see that the NAO orbital number for the 2px orbital of the oxygen atom is 5 for Val
and 6 for Ryd
. These numbers can then be found in the second table. Focusing on the HOMO (No. 5) in this example, the contribution from O(2px, Val) is 0.99922 = 99.84%, while that from O(2px, Ryd) is (–0.0210)2 = 0.04%. Since a polarization function is included in the 6-31G(d)
basis set, the O(3dxz, Ryd) also contributes 0.13% to the HOMO. In total, the oxygen atom accounts for 100% of the HOMO contribution.
- References: http://sobereva.com/131 (in Chinese)
Enjoy Reading This Article?
Here are some more articles you might like to read next: