# ALMO_SCF

References: Khaliullin2013, Scheiber2018

Settings for a class of efficient linear scaling methods based on absolutely localized orbitals (ALMOs). ALMO methods are currently restricted to closed-shell molecular systems. [Edit on GitHub]

Subsections

- ALMO_OPTIMIZER_DIIS
- ALMO_OPTIMIZER_PCG
- ALMO_OPTIMIZER_TRUSTR
- ANALYSIS
- MATRIX_ITERATE
- NLMO_OPTIMIZER_PCG
- XALMO_OPTIMIZER_PCG
- XALMO_OPTIMIZER_TRUSTR

## Keywords

- ALMO_ALGORITHM

- ALMO_EXTRAPOLATION_ORDER

- ALMO_SCF_GUESS

- CONSTRUCT_NLMOS

- DELOCALIZE_METHOD

- EPS_FILTER

- MO_OVERLAP_INV_ALG

- RETURN_ORTHOGONALIZED_MOS

- XALMO_ALGORITHM

- XALMO_EXTRAPOLATION_ORDER

- XALMO_R_CUTOFF_FACTOR

- XALMO_TRIAL_WF

## Keyword descriptions

ALMO_ALGORITHM: enum = DIAG

  Usage: ALMO_ALGORITHM DIAG

  Valid values:

  - `DIAG` DIIS-accelerated diagonalization controlled by ALMO_OPTIMIZER_DIIS. Recommended for large systems containing small fragments.

  - `PCG` Energy minimization with a PCG algorithm controlled by ALMO_OPTIMIZER_PCG.

  - `TRUST_REGION` Trust-region optimizer is recommended if PCG has difficulty converging. It is controlled by ALMO_OPTIMIZER_TRUSTR

  - `SKIP` Skip optimization of block-diagonal ALMOs.

  Specifies the algorithm to update block-diagonal ALMOs during the SCF procedure. [Edit on GitHub]

ALMO_EXTRAPOLATION_ORDER: integer = 3

  Usage: ALMO_EXTRAPOLATION_ORDER 3

  Number of previous states used for the ASPC extrapolation of the ALMO initial guess. 0 implies that the guess is given by ALMO_SCF_GUESS at each step. [Edit on GitHub]

ALMO_SCF_GUESS: enum = ATOMIC

  Usage: ALMO_SCF_GUESS MOLECULAR

  Valid values:

  - `MOLECULAR` SCF calculations on single molecules controlled by the regular SCF keywords outside ALMO options. This kind of calculation is expensive and only recommended if ALMO SCF does not converge from the ATOMIC guess.

  - `ATOMIC` Superposition of atomic densities.

  The method to generate initial ALMOs. [Edit on GitHub]

CONSTRUCT_NLMOS: logical = F

  Usage: CONSTRUCT_NLMOS .TRUE.

  Turns on post-SCF construction of NLMOs [Edit on GitHub]

DELOCALIZE_METHOD: enum = XALMO_X

  Usage: DELOCALIZE_METHOD XALMO_X

  Valid values:

  - `NONE` Neglect electron delocalization

  - `XALMO_1DIAG` Correction based on one diagonalization of the spatially projected Hamiltonian (XALMO)

  - `XALMO_X` Single excitation correction (no Hamiltonian re-build) with spatial restrictions (XALMO)

  - `XALMO_SCF` Self-consistent treatment of delocalization with spatial restrictions (XALMO)

  - `FULL_X` Single excitation correction (no Hamiltonian re-build) without spatial restrictions

  - `FULL_SCF` Self-consistent treatment of delocalization without spatial restrictions

  - `FULL_X_THEN_SCF` Single excitation correction followed by full SCF procedure, both without spatial restrictions

  Methods to reintroduce electron delocalization, which is excluded with the block-diagonal ALMO reference. Electron delocalization can be computed using either fully delocalized MOs or spatially restricted ALMOs (called eXtended ALMOs or XALMOs). All methods below use either a PCG or trust-region optimizers controlled by XALMO_OPTIMIZER_* subsections. The only exception is the non-iterative XALMO_1DIAG. [Edit on GitHub]

EPS_FILTER: real = 1.00000000E-007

  Usage: EPS_FILTER 1.e-6

  Threshold for the matrix sparsity filter [Edit on GitHub]

MO_OVERLAP_INV_ALG: enum = LS_HOTELLING

  Usage: MO_OVERLAP_INV_ALG LS_HOTELLING

  Valid values:

  - `LS_HOTELLING` Linear scaling iterative Hotelling algorithm. Fast for large sparse matrices.

  - `LS_TAYLOR` Linear scaling algorithm based on Taylor expansion of (A+B)^(-1).

  - `DENSE_CHOLESKY` Stable but dense Cholesky algorithm. Cubically scaling.

  Algorithm to invert MO overlap matrix. [Edit on GitHub]

RETURN_ORTHOGONALIZED_MOS: logical = T

  Lone keyword: `T`

  Usage: RETURN_ORTHOGONALIZED_MOS .TRUE.

  Orthogonalize final ALMOs before they are returned to Quickstep (i.e. for calculation of properties) [Edit on GitHub]

XALMO_ALGORITHM: enum = PCG

  Usage: XALMO_ALGORITHM TRUST_REGION

  Valid values:

  - `DIAG` DIIS-accelerated diagonalization.

  - `PCG` PCG algorithm controlled by XALMO_OPTIMIZER_PCG.

  - `TRUST_REGION` Trust-region optimizer controlled by XALMO_OPTIMIZER_TRUSTR

  Specifies the algorithm to update ALMOs on eXtended domains (XALMOs). [Edit on GitHub]

XALMO_EXTRAPOLATION_ORDER: integer = 0

  Usage: XALMO_EXTRAPOLATION_ORDER 1

  Number of previous states used for the ASPC extrapolation of the initial guess for the delocalization correction. [Edit on GitHub]

XALMO_R_CUTOFF_FACTOR: real = 1.50000000E+000

  Usage: XALMO_R_CUTOFF_FACTOR 1.6

  Controls the localization radius of XALMOs: R_cutoff = XALMO_R_CUTOFF_FACTOR*(radius(at1)+radius(at2)) [Edit on GitHub]

XALMO_TRIAL_WF: enum = PROJECT_R0_OUT

  Usage: XALMO_TRIAL_WF SIMPLE

  Valid values:

  - `SIMPLE` Straightforward AO-basis expansion.

  - `PROJECT_R0_OUT` Block-diagonal ALMOs plus the XALMO term projected onto the unoccupied ALMO-subspace.

  Determines the form of the trial XALMOs. [Edit on GitHub]