3.45 Projections of the DOS
3.45.1 Molecular-Orbital Projected Density of States (MODOS)
The MODOS is a crucial concept in quantum chemistry and condensed matter physics. It provides a way to describe the distribution of electronic states in a molecule or solid as a function of energy. The MODOS projection makes use of the eigenfunctions of the electronic Hamiltonian. A eigenfunction can be expressed as:
| (3.218) |
where are the atomic orbitals, and are the coefficients of the linear combination for the -th molecular orbital. The Bloch states of the full system are expressed in the basis of the molecular orbitals (resulting from a calculation containing only the free-standing molecular layer)
| (3.219) |
where are the molecular orbitals. With this we can define an overlap matrix and write down the equation for the MODOS:
| (3.220) |
Calculating the MODOS
To calculate the MODOS you need to calculate, where you need to make sure that the atoms of the molecule are found at the bottom of the geometry file. You may use periodic boundary conditions and the repeated slab approach.
-
•
The full system: substrate + molecule
-
•
The substrate (molecules have been removed from the full system)
-
•
The molecule (the substrate has been removed from the full system)
Apart from the atoms in the unit cell, the setting for these calculations (lattice vectors, k-grid, etc.) must be identical. The MODOS script (MODOS_FHI_aims_mpi) requires the following input:
-
•
The modos control file: MODOS_control.in
-
•
The eigenvectors of the full system: eigenvec.out
-
•
The overlap matrix of the full system: ovlp_mat.out
-
•
The eigenvectors of the molecule: eigenvec.out_mol
-
•
The eigenvectors of the substrate: eigenvec.out_sub
You can output the eigenvectors and the overlap matrix by adding the keyword output eigenvec_ovlp to the control file. Separate eigenvector files will be produced for each node you run the calculation on. You need to combine them by executing the script combine_eigenvectors in the calculation directory. Finally you need to rename them according to the names given above. An example MODOS control file (MODOS_control.in) can be found along with the MODOS script (MODOS_FHI_aims_mpi).
3.45.2 Crystal and Molecular Orbital Overlap Population (COOP/MOOP)
The Crystal Orbital Overlap Population (COOP) is a measure used in solid-state chemistry to describe the bonding interactions between atoms in a crystal. It is a function that provides insight into the bonding, nonbonding, and antibonding nature of interactions between pairs of atoms as a function of energy. The COOP between atomic orbitals and is defined as:
| (3.221) |
where and are the coefficients of the molecular orbital on atomic orbitals and , respectively. is the overlap matrix between atomic orbitals and . is the Dirac delta function centered at the energy of the -th molecular orbital.
The MOOP is similar to the COOP, but is calculated in the basis of the molecular orbitals .
| (3.222) |
Calculating the COOP/MOOP
Use the same procedure as in the case of calculating the MODOS (see section 3.45.1).
3.45.3 Mulliken Bond Partitioning
Mulliken bond partitioning is a method used to assign electron density in a molecule to individual atoms and bonds based on the molecular orbital (MO) coefficients and overlap integrals. The method helps in understanding the distribution of electron density among the atomic orbitals (AOs) of a molecule. The present implementation is based on the concept of I. Mayer [215, 216]. The calculated bond order is therefore also referred to as Mayer bond order. The code assumes explicitly a closed-shell system.
Let be the -th molecular orbital expressed as a linear combination of atomic orbitals :
| (3.223) |
where are the MO coefficients. The electron density matrix is defined as:
| (3.224) | ||||
| (3.225) |
where is the occupation number of the -th molecular orbital (typically 2 for doubly occupied orbitals and 1 for singly occupied orbitals in closed-shell systems). The overlap matrix is given by:
| (3.226) |
The Mulliken population analysis assigns the electron density to individual atoms and bonds. The gross atomic population for an atomic orbital is given by:
| (3.227) |
The net charge on atom (consisting of atomic orbitals ) is:
| (3.228) |
where is the nuclear charge of atom . The overlap population between atomic orbitals and is given by:
| (3.229) |
The total Mulliken’s overlap population between atoms and (summing over all atomic orbitals and ) is:
| (3.230) |
This provides an estimate of the electron density shared between atoms and , reflecting the strength and nature of the bond. A bond order in a more classical sense can be obtained in form of the Mayer bond order. It is defined as:
| (3.231) |
in which is the matrix product . The Mayer bond order yields (non-integer) values which are comparable to the classical definition of the difference in occupied bonding - anti-bonding orbitals.
Calculating the Bond Partitioning
To calculate the bond partitioning you need to first calculate your system and add the keyword output eigenvec_ovlp to the control file. Next you need to combine the eigenvector results by executing the script combine_eigenvectors in the calculation directory. Finally, you need to run the script bond_partitioning in the calculation directory. It will output a file called bond_partitioning.dat containing a table with the overlap population and the Mayer bond order for all atomic pairs i,j.
Tags for the general section of control.in
Tag: output eigenvec_ovlp(control.in)
Usage: output eigenvec_ovlp
Purpose: Outputs the eigenvectors and the overlap matrix.