Generation of a product basis is controlled via several parameters. Most of the parameters are collected in the code block below.

```
prod_basis_type MIXED
prod_basis_procedure ONLY-PB
eigmin_local 1e-7
eigmin_bilocal 1e-11
dealloc_bilocal 1
```

Description of these parameters is expanded below.

`prod_basis_type MIXED`

Type of product basis set used in the main part of the calculation (TDDFT, GW or BSE etc.)

Possible values include

- MIXED
- DOMIPROD
- AC_DIRECT

- MIXED

is probable most advanced basis set, which must be used in all production calculations. This basis consist of atom-centered product functions only. The bilocal products atomic orbitals are expressed via atom-centered product basis functions. A product of two atomic orbitals can be expressed via atom-centered product functions within a product vertex ansatz

(1)but the vertex $V^{ab}_{\mu}$ is rather full matrix in this representation and for reasons of precision, we use a slightly more sophisticated ansatz

(2)where $\tilde V^{ab}_{\tilde\mu}$ is yet another vertex coefficient table for dominant products (see DOMIPROD) and $c^{\tilde\mu}_{\mu}$ is conversion matrix between bilocal dominant functions and atom-centered functions.

Currently, in the method MIXED only local product functions can serve as basis set functions $F^{\mu}(\mathbf r)$ (although a more sophisticated procedure is principally possible).

- DOMIPROD

This is an original basis which is build as linear combinations of original atomic orbital products. The linear combinations are build in such a way that each linear combination is orthogonal to the other linear combinations with respect to a Coulomb metric (bare Coulomb interaction). The linear combinations are constructed by diagonalizing a Coulomb metric $g^{ab,cd}$

(3)and keeping only large eigen states of this diagonalization, with eigen values higher than a given threshold.

The diagonalization is done for each atom pair separately. The atom pair could be **local** (when orbitals $f^a(\mathbf r)$ and $f^b(\mathbf r)$ belong to the same atom) or **bi-local** (when orbitals $f^a(\mathbf r)$ and $f^b(\mathbf r)$ belong to different atoms). The construction procedure implies that each atom pair will get its own product basis functions. Local product basis functions are the same for each type of atoms modulo their origin. Bilocal product functions can be too numerous for large systems, but they have an advantage of being optimal for a particular pair. Moreover, the construction procedure results in a sparse vertex table $\tilde V^{ab}_{\tilde\mu}$. The vertex coefficients can have an order of magnitude less non-zero elements than it's atom-centered counterpart. Therefore, we use the dominant product vertex $\tilde V^{ab}_{\tilde\mu}$ in the main part of calculation (Hartree-Fock, GW, BSE, etc)

- AC_DIRECT

This should be equivalent to the production method MIXED, but with difference that the bilocal product functions are generated and discarded during generation of the product basis set in such a way that only bilocal product functions for one atom pair is stored, never all bilocal functions for the whole system. This should ideally save RAM, but currently this is an experimental option which performs slightly worse (!) than MIXED.

`prod_basis_procedure ONLY-PB`

This is somewhat experimental option which is dedicated to testing of the new structure for product basis `prod_basis_t`. The choice ONLY-PB means that no old structure (`domiprod_t`) is generated. This is not currently a default choice, but ONLY-PB is most suitable for production runs.

`eigmin_local 1e-7`

Eigen value threshold for dropping unimportant linear combinations of the Coulomb metric in the procedure of generation local product basis functions.

`eigmin_bilocal 1e-11`

An eigen-value threshold used in the procedure of keeping the linear combinations of orbital products in the basis set.

`dealloc_bilocal 1`

is used to deallocate the storage of radial functions representing the bilocal dominant product functions for `prod_basis_type MIXED`. The deallocation is important for saving precious RAM, while otherwise it is uselessly reserved for rather voluminous bilocal dominant products. The option must be unnecessary for AC_DIRECT and wrong for DOMIPROD. The amount of memory released depends on parameters nr, jcutoff and eigmin_bilocal and on a particular geometry.