Since the program is written in FORTRAN77 no true dynamical memory allocation can be performed. However, a `semi-dynamical memory allocation' procedure is implemented. Apart from small fixed size arrays all arrays are stored in a work-array called w in the main programs. At the time a new array is needed, say the Hamiltonian, its size is calculated and space for it is allocated in the work array. When the array it not needed anymore, the space is freed and other arrays can be stored in the same place. This prevents `over-dimensioning'. The size of the work array, however, depends on the size of the problem i.e. number of atoms, number of k-points, number of partial waves, etc. The size of the work array is given by wksize in the main programs. If wksize is too small for the problem at hand the program will abort, requesting increase of wksize.