# LCAO keywords

LCAO parameters

## LCAO.cfsi

Switch for using Chebyshev filtering on the NAO coefficients.

**type**: `scalar`

**default**: `false`

**allowed**: `true,false`

**example**: `LCAO.cfsi = false`

## LCAO.coeff

To avoid recalculating the atomic orbital coefficients, RESCU may load
the atomic orbital coefficients obtained during a previous calculation.
This is done by setting LCAO.coeff to the path of a file containing the
atomic orbital coefficients. The data should be saved in HDF5 format
under the group /LCAO/coeff. This may be achieved using the function
writeDistArray. It is not necessary to specify the extension as it is
assumed to be .h5.

**type**: `string`

**example**: `LCAO.coeff = './results/mos2_scf.h5'`

## LCAO.DMkcell

The path of the file that stores the k-point-dependent density matrix.
The density matrix may be save setting option.saveDensityMatrixK = true.

**type**: `string`

**example**: `LCAO.DMkcell = './results/c_lcao_hse_scf'`

## LCAO.DMRcell

The path of the file that stores the (R-vector-dependent) displaced
density matrix. The density matrix may be save setting
option.saveDensityMatrix = true.

**type**: `string`

**example**: `LCAO.DMRcell = './results/c_lcao_hse_scf'`

## LCAO.dynSubRed

Store atomic orbital images if true; the k-dependent atomic orbital
subspace is computed when required. Store the k-depedent atomic orbital
subspace if false. Note that LCAO.dynSubRed = 0 can be very memory
intensive if a large number of k-points is used, but it is generally
more computationally efficient.

**type**: `scalar`

**default**: `false`

**allowed**: `true,false`

**example**: `LCAO.dynSubRed = true`

## LCAO.mulliken

Computes the Mulliken population matrix after converging the ground
state density. An atomic orbital basis must be found in the
pseudopotential file. If the wavefunctions are in real-space form, they
will be projected onto the atomic orbital basis.

**type**: `scalar`

**default**: `false`

**allowed**: `true,false`

**example**: `LCAO.mulliken = true`

## LCAO.numPole

Number of poles used in the pole expansion of the Fermi-Dirac operator.

**type**: `scalar`

**default**: `50`

**example**: `LCAO.numPole = 80`

## LCAO.numIterDiag

Number of iterations during which diagonalization is used (instead of
the PEXSI algorithm). This is meant for systems whose Fermi level is
difficult to determine, in which case PEXSI may be particularly slow
during the first few iterations.

**type**: `scalar`

**default**: `1`

**example**: `LCAO.numIterDiag = 2`

## LCAO.sprs

This number is used to determine whether to treat the matrices as sparse
or dense. For example, if the overlap matrix is sparser than 0.1, then
it will be treated as a sparse matrix.

**type**: `scalar`

**default**: `0.15`

**example**: `LCAO.sprs = 0.1`

## LCAO.status

If LCAO.status = true, RESCU performs a calculation using the atomic
orbital basis. This is generally faster than performing a purely real
space calculation, but the atomic orbital basis must be validated for
correctness.

**type**: `scalar`

**default**: `false`

**allowed**: `true,false`

**example**: `LCAO.status = true`

## LCAO.usePoleExpansion

If LCAO.status = true, RESCU uses the a pole expansion of the
Fermi-Dirac operator instead of diagonalization to calculate the density
matrix.

**type**: `scalar`

**default**: `false`

**allowed**: `true,false`

**example**: `LCAO.usePoleExpansion = true`

## LCAO.useBTDinv

If LCAO.useBTDinv = true, RESCU uses a block tridiagonal invertion
algorithm to calculate selected entries of the Hamiltonian\'s Green
function. Otherwise, MATLAB\'s inv routine is used (this is only for
debugging purposes and will result in poor efficiency).

**type**: `scalar`

**default**: `true`

**allowed**: `true,false`

**example**: `LCAO.useBTDinv = true`

## LCAO.veffRed

LCAO.dynSubRed = 1 required. Instead of projecting the effective
potential at every k-points, compute the effective potential projections
between orbital images and then perform the phase-dependent reduction on
the projected operator. This is fastest in the limit of a large number
of k-point.

**type**: `scalar`

**default**: `false`

**allowed**: `true,false`

**example**: `LCAO.veffRed = true`
