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 ψi of the electronic Hamiltonian. A eigenfunction ψi can be expressed as:

ψik=μciμkϕμk (3.218)

where ϕμ are the atomic orbitals, and cμi are the coefficients of the linear combination for the i-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)

ψik=μciμkMMμk (3.219)

where Mμk are the molecular orbitals. With this we can define an overlap matrix SμνkM=Mμk|Mνk and write down the equation for the MODOS:

MODOSμ(E)=i,ν,kciμkMciνkMSμνkMδ(Eϵik) (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:

COOPμν(E)=ikciμkciνkSμνkδ(Eϵik) (3.221)

where cμi and cνi are the coefficients of the molecular orbital i on atomic orbitals μ and ν, respectively. Sμνk=ϕμk|ϕνk is the overlap matrix between atomic orbitals ϕμ and ϕν. δ(Eϵik) is the Dirac delta function centered at the energy of the i-th molecular orbital.

The MOOP is similar to the COOP, but is calculated in the basis of the molecular orbitals Mμk.

MOOPμν(E)=i,kciμkMciνkMSμνkMδ(Eϵik) (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 ψi be the i-th molecular orbital expressed as a linear combination of atomic orbitals ϕμ:

ψi=μcμiϕμ (3.223)

where cμi are the MO coefficients. The electron density matrix 𝐏 is defined as:

Pμν =inicμicνi (3.224)
Pμν =closed-shell2ioccupiedcμicνi (3.225)

where ni is the occupation number of the i-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:

Sμν=ϕμ|ϕν (3.226)

The Mulliken population analysis assigns the electron density to individual atoms and bonds. The gross atomic population Qμ for an atomic orbital ϕμ is given by:

Qμ=νPμνSνμ (3.227)

The net charge on atom A (consisting of atomic orbitals μA) is:

qA=ZAμAQμ (3.228)

where ZA is the nuclear charge of atom A. The overlap population Pμν between atomic orbitals ϕμ and ϕν is given by:

Pμν=PμνSμν (3.229)

The total Mulliken’s overlap population between atoms A and B (summing over all atomic orbitals μA and νB) is:

PAB=μAνBPμνSμν (3.230)

This provides an estimate of the electron density shared between atoms A and B, 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:

BAB=μAνB(PS)μν(PS)νμ (3.231)

in which PSμν is the matrix product PS. 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.