.. index::
   single: Program; GENANO
   single: GENANO
   single: Basis set; Generation
   single: Basis set; Atomic Natural Orbitals

.. _TUT\:sec\:genano:

:program:`GENANO` --- A Program to Generate ANO Basis Sets
==========================================================

:program:`GENANO` is a program for determining the contraction coefficients for
generally contracted basis sets. They are determined by diagonalizing a density
matrix, using the eigenvectors (natural orbitals) as the contraction
coefficients, resulting in basis sets of the ANO (Atomic Natural Orbitals) type.
The program can be used to generate any set of atomic or molecular basis
functions. Only one or more wave functions (represented by formated orbital
files) are needed to generate the average density matrix. These natural orbital
files can be produced by any of the wave function generators, as it is described
in section :ref:`UG:sec:genano` of the user's guide. As an illustrative example,
in the Advanced Examples there is an example of how to
generate a set of molecular basis set describing Rydberg orbitals for the
benzene molecule. The reader is referred to this example for more details.

The :program:`GENANO` program requires several input files. First, one
:file:`ONEINT` file generated by the :program:`SEWARD` module for each input wave
function. The files must be linked as :file:`ONE001`, :file:`ONE002`, etc. If the
wave functions correspond to the same system, the same :file:`ONEINT` file must
be linked with the corresponding names as many times as wave functions are
going to be treated. Finally, the program needs one file for wave function
containing the formated set of natural orbitals. The files must be linked as
:file:`NAT001`, :file:`NAT002`, etc.

The input file for module :program:`GENANO` contains basically three important
keywords. :kword:`CENTER` defines the atom label for which the basis set is to
be generated. The label must match the label it has in the :program:`SEWARD`.
:kword:`SETS` keyword indicates that the next line of input contains the
number of sets to be used in the averaging procedure and :kword:`WEIGHTS`
defines the relative weight of each one of the previous sets in the averaging
procedure. :numref:`block:genano_input` lists the input file required by the
:program:`GENANO` program for making a basis set for the oxygen atom. Three
natural orbital files are expected, containing the natural orbitals for the
neutral atom, the cation, and the anion.

.. code-block:: none
   :caption: Sample input requesting the :program:`GENANO` module to
             average three sets of natural orbitals on the oxygen atom.
   :name: block:genano_input

   &GENANO
   Title= Oxygen atom basis set: O/O+/O-
   Center= O
   Sets= 3
   Weights= 0.50 0.25 0.25

As output files :program:`GENANO` provides the file :file:`ANO`,
containing the contraction coefficient matrix organized such that each column
correspond to one contracted basis function, and the file :file:`FIG`, which
contains a PostScript figure file of the obtained eigenvalues. The output of
:program:`GENANO` is self-explanatory.
