How can I calculate antibonding orbitals?

1 Answer
Jul 25, 2015

Do you mean how you calculate the energy of antibonding orbitals?

If so, one might do that by considering the fact that the ionization energy of removing an electron from a particular orbital is approximately the negative of the actual energy of that orbital (part of Koopman's approximation/theorem).

For example, removing an electron from a core orbital is very difficult (hence the #sigma_(1s)# bonding orbital is way, way, way low in energy compared to the #sigma_(2p_z)# bonding orbital).

Using photoelectron spectroscopy, one could acquire data for this pre-2000's and use Koopman's approximation to estimate the orbital energies.

These days (2000's and past), one can use a program to calculate orbital energies by inputting information about the molecule, such as its equilibrium geometry, bond lengths, and bond angles (and dihedral angles for 3D molecules). Such programs are Psi4 (programmed in C/C++), GAMESS (programmed in Fortran), etc.

For example, in Psi4, all you would need to do is the following:

#"molecule h2o{"#
#" "" o"#
#" "" h 1 Roh"#
#" "" h 1 Roh 2 Ahoh"#

#" "" Roh = 0.958"#
#" "" Ahoh = 104.4776"#

#"set basis cc-pVDZ"#
#"set reference rhf"#

which basically says:

  • define a molecule called "h2o"
  • define the atom oxygen anywhere in space
  • define the atom hydrogen connected to atom 1 (oxygen) by bond distance Roh
  • define another atom hydrogen connected to atom 1 (oxygen) by bond distance Roh and atom 2 (the other hydrogen) by bond angle Ahoh

  • Using basis set coupled-cluster polarized Valence Double Zeta (a certain form of a linear combination of atomic orbitals to represent molecular orbitals in a molecule)

  • Using a reference function based on Restricted Hartree-Fock theory (a traditional method), for molecules that have no unpaired electrons
  • Calculate the energy using Self-Consistent Field methods (iterative guessing until convergence).

Then compile the program in the command line, such as this way on Linux:

#"g++ filename.inp > filename.log"#



to run the program. Something like the above program should take less than 2 minutes to run!

Then your output goes into a #".log"# file and you can sift through it for orbital energies. If you know which orbital is the antibonding orbital, that is the energy for the antibonding orbital. Calculations like these list all the orbital energies, and if you know what you're doing, you can get quite precise energies. The energy there would happen to be in #eV#, electron-volts.

This is how one would determine how the energies go in this diagram: