# How are molecular orbitals constructed from the coefficients and basis set?

When an SCF calculation is done in a QM program, the MO coefficients of the solution are printed into the output. Now, graphical softwares can plot 3D molecular orbitals from these coefficients, presumably by combining the basis set and the coefficients.

This is the first part of the output of an RHF/MIDI calculation on an $$\ce{H2O}$$ molecule with GAMESS(US):

          ------------
EIGENVECTORS
------------

1          2          3          4          5
-20.4191    -1.3388    -0.6850    -0.5393    -0.4837
A          A          A          A          A
1  O  1  S    0.989154  -0.220275  -0.001184   0.079432  -0.000000
2  O  1  S    0.065271   0.487564   0.002152  -0.177885  -0.000000
3  O  1  S   -0.034882   0.438551   0.006441  -0.333617  -0.000000
4  O  1  X    0.001409   0.036986   0.314950   0.210975   0.164841
5  O  1  Y   -0.000292  -0.007466  -0.121285  -0.044237   0.484575
6  O  1  Z    0.002563   0.069802  -0.193015   0.375649  -0.035515
7  O  1  X   -0.002020   0.037929   0.308448   0.249550   0.207751
8  O  1  Y    0.000419  -0.007817  -0.118676  -0.052406   0.610715
9  O  1  Z   -0.003659   0.069385  -0.187599   0.443221  -0.044760
10  H  2  S    0.000324   0.134487   0.264755   0.153642  -0.000000
11  H  2  S    0.006519   0.005342   0.148311   0.110818  -0.000000
12  H  3  S    0.000260   0.138002  -0.267972   0.150940  -0.000000
13  H  3  S    0.006664   0.004777  -0.147661   0.106685  -0.000000


The basis set is:

 O

1   S       1           281.8665800    0.069059895330
1   S       2            42.4160000    0.393159473412
1   S       3             9.0956200    0.665669054983

2   S       4            11.4660300   -0.145056191626
2   S       5             0.8878600    1.044738808830

3   S       6             0.2788000    1.000000000000

4   P       7             8.0472400    0.226466081004
4   P       8             1.6684200    0.868524024343

5   P       9             0.3725100    1.000000000000

H

6   S      10             4.5018000    0.156285427224
6   S      11             0.6814440    0.904690578596

7   S      12             0.1513980    1.000000000000

H

8   S      13             4.5018000    0.156285427224
8   S      14             0.6814440    0.904690578596

9   S      15             0.1513980    1.000000000000


At this point, I don't know how to combine the coefficients with the primitives in the basis set. Clearly the symbols on the left side of the MO coefficients indicate S, px, py, pz... etc orbitals. So, according to the output, Oxygen should have 3 S, then 3 P and then 3 P orbitals. But the basis set has 6 S and 3 P functions. So I don't know which basis primitives correspond to which AO name (i.e. s, px etc.).

Could someone help me understand how the final MOs are constructued from the coefficients and the basis set?

• +1 But can you please tell us the name of this basis set? I searched a few of them common ones of roughly this size, on basis set exchange, but couldn't find one with these numbers. Feb 6, 2021 at 23:15
• You have six primitives for oxygen S orbitals as MIDI is split-valence set and each of STOs is represented as 3 gaussians giving 6 gaussians in total. But I can tell anything about P orbitals, it's not that straightforward for me. Feb 7, 2021 at 4:34
• @romaichenko I figured out the P-type orbitals: There's 3 primitives giving 2 contractions, for each of Px, Py, Pz. This means there's 2 Px, 2 Py, 2 Pz (6 P-type contractions in total). So combined with your point that for S-type orbitals there's 6 primitives giving 3 contractions, we get 3 S and 6 P, which is what the user's output shows :) Feb 7, 2021 at 6:17
• @NikeDattani The basis set is Huzinaga's 21 split valence MIDI basis set—it's basically a split valence version of MINI basis set. And it is on the basis set exchange as MIDI: basissetexchange.org/basis/midi/format/gamess_us/… Feb 7, 2021 at 10:51

Things are more clear to me when I look at the basis set in CFOUR format, because of the information at the top which tells me how many primitives and how many contractions there are for each type of orbital:

O:MIDI
Huzinaga MIDI

2
0 1
3 2
6 3

281.86658 42.416000 9.0956200 11.46603 0.887860 0.278800

0.069060  0.000000 0.00000000
0.393159  0.000000 0.00000000
0.665669  0.000000 0.00000000
0.000000 -0.080820 0.00000000
0.000000  0.582090 0.00000000
0.000000  0.000000 1.00000000

8.047240 1.668420 0.372510

0.124271 0.00000000
0.476594 0.00000000
0.000000 1.00000000


I'm going to use the % symbol to add comments on the numbers at the top, to explain what they mean (but adding comments like this won't work if you actually did this to your GENBAS file in CFOUR):

2   % # of types of orbitals = 2 (S and P).
0 1 % 0 = S, 1 = P, 2 = D, 3 = F, etc.
3 2 % 3 contractions for S, 2 contractions for Px, 2 for Py, 2 for Pz
6 3 % 6 primitives for S,   3 primitives for Px,   3 for Py, 3 for Pz


This explains why the basis set in GAMESS(US) format is showing 6 primitives for S and 3 primitives for P, but in your final eigenvectors, we now consider the contractions:

• 3 for S
• 2 for Px
• 2 for Py
• 2 for Pz

This is exactly what your output shows!

• The same information can be obtained from the GAMES(US) basis set format, but you'd have to count how many unique numbers in the first column belong to each orbital type (in this case 1, 2 and 3 belong to S-type, while 4 and 5 belong to P-type, so we have 3 S-type contractions and 2 P-type contractions, which is what CFOUR's basis set format tells you right at the top of the file). Feb 7, 2021 at 6:20
• So, does the order of the MO coefficients follow the order of contractions? Which would mean that every contracted P GTO gets used three times in making the orbitals? Feb 7, 2021 at 10:57