When they are first made, the LMOs are highly compact functions. Each LMO consists of one or two atom labels and a set of five to eighteen atomic orbital coefficients. However, as soon as the LMOs start to interact, mixing of the LMOs will occur, and the size of the LMOs will increase rapidly. This expansion must be allowed for. Later on, further mixing of the LMOs may result in the contribution to an atom to a certain LMO becoming negligible, in which case the atom can be deleted from the LMO. This results in the LMO becoming smaller. A mechanism must be constructed to allow the size of the LMOs to be changed. Because the occupied and unoccupied LMO sets are treated in a similar manner, only the storage of the occupied set will be described. Therefore, for the rest of this section, all reference to LMOs should be understood as applying to the occupied set only.
Before going further, we need to spend a little time to understand how LMOs are stored. The atomic orbital coefficients of all LMOs are stored in a single REAL array, COCC. A second array, NCOCC, holds the starting location in COCC of each LMO. For convenience, all starting locations are defined as the location immediately before the location of the first element of an array. The atom numbers (not the atomic numbers) used in all LMOs are stored in an INTEGER array, ICOCC, and a second INTEGER array, NNCF, holds the starting location in ICOCC of each LMO. Finally, the number of atoms in each LMO are stored in an array NCF. Figure 1 illustrates these arrays for methane.
During the SCF calculation, the number of atoms in each LMO will increase. To allow for this, some space must be left between the end of one LMO and the start of the next LMO. The amount of space is determined by dividing all the unused space by the number of LMOs. If the size of the vector COCC is 40, and the size of ICOCC is 25, then the storage of the LMO vectors, after adjusting to allow for expansion, is as shown in Figure 2.
After a few iterations, the number of atoms in each LMO will have increased. In general, this number will be less than the number of atoms in the system, but in the example we are using, every LMO will contain all the atoms. This is shown in Figure 3. For large systems, the number of atoms in any one LMO will vary. Very large LMOs may have 300 or more atoms, while small LMOs may have only 25 atoms. On average, LMOs will have about 150-200 atoms.
For every array used in describing the occupied LMOs, there exists an equivalent array for the virtual LMOs. The Table gives the names of the arrays for the virtual LMOs.