OT
References: VandeVondele2003, Weber2008
Sets the various options for the orbital transformation (OT) method. Default settings already provide an efficient, yet robust method. Most systems benefit from using the FULL_ALL preconditioner combined with a small value (0.001) of ENERGY_GAP. Well-behaved systems might benefit from using a DIIS minimizer.
Advantages: It’s fast, because no expensive diagonalisation is performed. If preconditioned correctly, method guaranteed to find minimum.
Disadvantages: Sensitive to preconditioning. A good preconditioner can be expensive. Metallic systems require a sufficiently large virtual orbital space and the coupled ROTATION and ENERGIES variables. [Edit on GitHub]
Keywords
Keyword descriptions
SECTION_PARAMETERS
Type: logical
Default: F
Lone keyword: T
Usage: &OT T
Description: controls the activation of the ot method [Edit on GitHub]
ALGORITHM
Type: enum
Default: STRICT
Usage: ALGORITHM STRICT
Description: Algorithm to be used for OT [Edit on GitHub]
Valid values:
STRICTStrict orthogonality: Taylor or diagonalization based algorithm.IRACOrbital Transformation based Iterative Refinement of the Approximative Congruence transformation (OT/IR).
References: VandeVondele2003, VandeVondele2005, Weber2008
BROYDEN_ADAPTIVE_SIGMA
Type: logical
Default: T
Lone keyword: T
Usage: BROYDEN_ADAPTIVE_SIGMA ON
Description: Enable adaptive curvature estimation [Edit on GitHub]
BROYDEN_BETA
Type: real
Default: 9.00000000E-001
Usage: BROYDEN_BETA 0.9
Description: Underrelaxation for the broyden mixer [Edit on GitHub]
BROYDEN_ENABLE_FLIP
Type: logical
Default: T
Lone keyword: T
Usage: BROYDEN_ENABLE_FLIP ON
Description: Ensure positive definite update [Edit on GitHub]
BROYDEN_ETA
Type: real
Default: 7.00000000E-001
Usage: BROYDEN_ETA 0.7
Description: Dampening of estimated energy curvature. [Edit on GitHub]
BROYDEN_FORGET_HISTORY
Type: logical
Default: F
Lone keyword: T
Usage: BROYDEN_FORGET_HISTORY OFF
Description: Forget history on bad approximation [Edit on GitHub]
BROYDEN_GAMMA
Type: real
Default: 5.00000000E-001
Usage: BROYDEN_GAMMA 0.5
Description: Backtracking parameter [Edit on GitHub]
BROYDEN_OMEGA
Type: real
Default: 1.10000000E+000
Usage: BROYDEN_OMEGA 1.1
Description: Growth limit of curvature. [Edit on GitHub]
BROYDEN_SIGMA
Type: real
Default: 2.50000000E-001
Usage: BROYDEN_SIGMA 0.25
Description: Curvature of energy functional. [Edit on GitHub]
BROYDEN_SIGMA_DECREASE
Type: real
Default: 7.00000000E-001
Usage: BROYDEN_SIGMA_DECREASE 0.7
Description: Reduction of curvature on bad approximation. [Edit on GitHub]
BROYDEN_SIGMA_MIN
Type: real
Default: 5.00000000E-002
Usage: BROYDEN_SIGMA_MIN 0.05
Description: Minimum adaptive curvature. [Edit on GitHub]
CHEBYSHEV_DEGREE
Type: integer
Default: 8
Usage: CHEBYSHEV_DEGREE 8
Description: Polynomial degree of the positive Chebyshev semi-iterative inverse used by PRECOND_SOLVER CHEBYSHEV. [Edit on GitHub]
CHOLESKY
Type: enum
Default: REDUCE
Usage: CHOLESKY REDUCE
Description: If FULL_ALL the cholesky decomposition of the S matrix is used. Options on the algorithm to be used. [Edit on GitHub]
Valid values:
OFFThe cholesky algorithm is not usedREDUCEReduce is calledRESTOREReduce is replaced by two restoreINVERSERestore uses operator multiply by inverse of the triangular matrixINVERSE_DBCSRLike inverse, but matrix stored as dbcsr, sparce matrix algebra used when possible
ENERGIES
Type: logical
Default: F
Lone keyword: T
Usage: ENERGIES
Description: Optimize auxiliary orbital energies for Mermin smearing in direct SCF%OT (requires ROTATION and smearing to be active). DIAGONALIZATION%OT obtains orbital energies by canonicalizing its converged eigenspace instead. [Edit on GitHub]
ENERGY_GAP
Type: real
Default: -1.00000000E+000
Usage: ENERGY_GAP 0.001
Description: Should be an estimate for the energy gap [a.u.] (HOMO-LUMO) and is used in preconditioning, especially effective with the FULL_ALL preconditioner, in which case it should be an underestimate of the gap (can be a small number, e.g. 0.002). FULL_SINGLE_INVERSE takes it as lower bound (values below 0.05 can cause stability issues). In general, higher values will tame the preconditioner in case of poor initial guesses. A negative value will leave the choice to CP2K depending on type of preconditioner. [Edit on GitHub]
EPS_IRAC
Type: real
Default: 1.00000000E-010
Usage: EPS_IRAC 1.0E-5
Description: Targeted accuracy during the refinement iteration. [Edit on GitHub]
EPS_IRAC_FILTER_MATRIX
Type: real
Default: 0.00000000E+000
Usage: EPS_IRAC_FILTER_MATRIX 1.0E-5
Description: Sets the threshold for filtering the matrices. [Edit on GitHub]
EPS_IRAC_QUICK_EXIT
Type: real
Default: 1.00000000E-005
Usage: EPS_IRAC_QUICK_EXIT 1.0E-2
Description: Only one extra refinement iteration is done when the norm is below this value. [Edit on GitHub]
EPS_IRAC_SWITCH
Type: real
Default: 1.00000000E-002
Usage: EPS_IRAC_SWITCH 1.0E-3
Description: The algorithm switches to the polynomial refinement when the norm is below this value. [Edit on GitHub]
EPS_TAYLOR
Type: real
Default: 1.00000000E-016
Aliases: EPSTAYLOR
Usage: EPS_TAYLOR 1.0E-15
Description: Target accuracy of the taylor expansion for the matrix functions, should normally be kept as is. [Edit on GitHub]
FERMI_LOW_RANK_BASE
Type: enum
Default: OVERLAP_INVERSE
Usage: FERMI_LOW_RANK_BASE LATTICE_FFT
Description: Base operator used only with PRECONDITIONER FERMI_LOW_RANK. OVERLAP_INVERSE applies the exact dense inverse overlap. LATTICE_FFT projects the overlap onto translations of an explicitly replicated SUBSYS multiple unit cell, inverts its small reciprocal-space blocks, and applies the approximate inverse with lattice FFTs. This choice implies LATTICE_FFT ON; use the general LATTICE_FFT keyword for AUTO selection. The experimental FFT path is restricted to real Gamma-point OT calculations. [Edit on GitHub]
Valid values:
OVERLAP_INVERSEExact dense inverse-overlap baseLATTICE_FFTApproximate block-circulant inverse applied by lattice FFT
FERMI_LOW_RANK_MAX_RANK
Type: integer
Default: 48
Usage: FERMI_LOW_RANK_MAX_RANK 64
Description: Maximum number of complementary eigenstates retained by PRECONDITIONER FERMI_LOW_RANK. Larger values approach the complete common-reference spectral operator at higher application cost. A value of -1 retains the entire complementary space. A finite cap never splits a numerically degenerate boundary manifold. [Edit on GitHub]
GOLD_TARGET
Type: real
Default: 1.00000000E-002
Usage: GOLD_TARGET 0.1
Description: Target relative uncertainty in the location of the minimum for LINESEARCH GOLD [Edit on GitHub]
IRAC_DEGREE
Type: integer
Default: 4
Usage: IRAC_DEGREE 4
Description: The refinement polynomial degree (2, 3 or 4). [Edit on GitHub]
LATTICE_FFT
Type: enum
Default: OFF
Usage: LATTICE_FFT AUTO
Description: Apply the inverse of a block-circulant projection of the selected OT preconditioner with FFTs over explicitly replicated cells. Supported by FULL_S_INVERSE, FULL_KINETIC, FULL_SINGLE_INVERSE, FULL_ALL_COVARIANT, and FERMI_LOW_RANK in real Gamma-point calculations. FULL_ALL_COVARIANT projects and inverts one gap-floored state-dependent Hessian operator per canonical occupied state. ON requires the projected reciprocal-space blocks to be positive definite. AUTO uses the FFT operator only for at least eight replicated cells and a relative projection error no larger than 1.0E-3. It also requires an estimated application-work ratio no larger than 0.8 and limits reciprocal-block storage to four times one dense real operator; otherwise it retains the conventional solver. The estimates include reference-cell block size, occupied-column batch size, state-operator count, and message-passing ranks. Construction of state-independent operators accumulates only the projected reference-cell blocks across ranks. FULL_ALL_COVARIANT and explicit local corrections still require dense construction data. Application routes complete orbital columns across ranks and distributes the FFT batches over those columns. [Edit on GitHub]
Valid values:
OFFUse the conventional OT preconditioner solverONAlways use the approximate lattice-FFT inverseAUTOUse the lattice-FFT inverse only when conservative selection criteria pass
LATTICE_FFT_LOCAL_CELLS
Type: integer
Default: 0
Usage: LATTICE_FFT_LOCAL_CELLS 1
Description: Number of replicated cell blocks retained in an optional balanced local correction to LATTICE_FFT ON. Cells are selected from the largest block-row contributions to the non-circulant residual. The two-level correction is symmetric positive definite and exactly inverts the selected coordinate subspace. A value of zero disables the correction. The correction is deliberately unavailable with AUTO, which continues to reject defective or otherwise non-circulant operators. [Edit on GitHub]
LBFGS_CURVATURE_TOL
Type: real
Default: 1.00000000E-004
Usage: LBFGS_CURVATURE_TOL 1.0E-4
Description: Minimum dimensionless relative curvature accepted for an LBFGS secant pair. Values are restricted to the interval [0,1). [Edit on GitHub]
LBFGS_DAMPING
Type: logical
Default: T
Lone keyword: T
Usage: LBFGS_DAMPING ON
Description: Regularize weak or negative LBFGS curvature by the smallest shift of the gradient difference along the step that satisfies LBFGS_CURVATURE_TOL. If disabled, such secant pairs are skipped. [Edit on GitHub]
LINESEARCH
Type: enum
Default: 2PNT
Aliases: LINE_SEARCH
Usage: LINESEARCH GOLD
Description: 1D line search algorithm to be used with the OT minimizer, in increasing order of robustness and cost. MINIMIZER CG combined with LINESEARCH GOLD should always find an electronic minimum. Whereas the 2PNT minimizer is almost always OK, 3PNT might be needed for systems in which successive OT CG steps do not decrease the total energy. [Edit on GitHub]
Valid values:
ADAPTextrapolates usually based on 3 points, uses additional points on demand, very robust.NONEalways take steps of fixed length2PNTextrapolate based on 2 points3PNTextrapolate based on 3 pointsGOLDperform 1D golden section search of the minimum (very expensive)
MAX_IRAC
Type: integer
Default: 50
Usage: MAX_IRAC 5
Description: Maximum allowed refinement iteration. [Edit on GitHub]
MAX_SCF_DIIS
Type: integer
Default: 0
Usage: MAX_SCF_DIIS 20
Description: Maximum DIIS SCF inner loop cycles. This can be used to extend SCF cycles after a switch to DIIS (see eps_diis). [Edit on GitHub]
MAX_TAYLOR
Type: integer
Default: 4
Usage: MAX_TAYLOR 5
Description: Maximum order of the Taylor expansion before diagonalisation is preferred, for large parallel runs a slightly higher order could sometimes result in a small speedup. [Edit on GitHub]
MINIMIZER
Type: enum
Default: CG
Usage: MINIMIZER DIIS
Description: Minimizer to be used with the OT method [Edit on GitHub]
Valid values:
SDSteepest descent: not recommendedCGConjugate Gradients: most reliable, use for difficult systems. The total energy should decrease at every OT CG step if the line search is appropriate.DIISDirect inversion in the iterative subspace: less reliable than CG, but sometimes about 50% fasterBROYDENBroyden mixing approximating the inverse HessianLBFGSLimited-memory BFGS in the fixed OT product chart. The selected OT preconditioner is used as the initial inverse Hessian. The secant history is reset after a tenfold increase in the raw fixed-chart gradient norm. With OUTER_SCF, an explicit EPS_DIIS can switch later outer iterations to OT/DIIS. Available with ALGORITHM STRICT or IRAC.
NONDIAG_ENERGY
Type: logical
Default: F
Lone keyword: T
Usage: NONDIAG_ENERGY
Description: Add a non-diagonal auxiliary-energy penalty in direct SCF%OT. It is not used by DIAGONALIZATION%OT. [Edit on GitHub]
NONDIAG_ENERGY_STRENGTH
Type: real
Default: 1.00000000E+000
Usage: NONDIAG_ENERGY_STRENGTH
Description: The prefactor for the non-diagonal energy penalty (FD smearing) [Edit on GitHub]
N_HISTORY_VEC
Type: integer
Default: 7
Aliases: NDIIS, N_DIIS, N_BROYDEN, N_LBFGS
Usage: N_HISTORY_VEC 7
Description: Number of history vectors to be used with DIIS, BROYDEN, or LBFGS [Edit on GitHub]
OCCUPATION_PRECONDITIONER
Type: logical
Default: F
Lone keyword: T
Usage: OCCUPATION_PRECONDITIONER
Description: Augment the direct SCF%OT orbital metric with coupled fixed-N occupation response. This augments the independently selected orbital preconditioner. It is not used by DIAGONALIZATION%OT, where occupations are assigned after the eigensolver has converged. [Edit on GitHub]
ON_THE_FLY_LOC
Type: logical
Default: F
Usage: ON_THE_FLY_LOC T
Description: On the fly localization of the molecular orbitals. Can only be used with OT/IRAC. [Edit on GitHub]
ORTHO_IRAC
Type: enum
Default: CHOL
Usage: ORTHO_IRAC POLY
Description: The orthogonality method. [Edit on GitHub]
Valid values:
CHOLCholesky.POLYPolynomial.LWDNLoewdin.
PRECONDITIONER
Type: enum
Default: FULL_KINETIC
Usage: PRECONDITIONER FULL_ALL
Description: Type of preconditioner to be used with all minimization schemes. They differ in effectiveness, cost of construction, cost of application. Properly preconditioned minimization can be orders of magnitude faster than doing nothing. [Edit on GitHub]
Valid values:
FULL_ALLMost effective state selective preconditioner based on diagonalization, requires the ENERGY_GAP parameter to be an underestimate of the HOMO-LUMO gap. This preconditioner is recommended for almost all systems, except very large systems where make_preconditioner would dominate the total computational cost.FERMI_LOW_RANKExperimental rotationally covariant bounded spectral preconditioner. It applies an overlap-inverse base plus a configurable number of complementary-state corrections relative to a common occupied reference level. Construction currently retains a full diagonalization. Application can be cheaper when the complementary space is larger than the retained rank.FULL_ALL_COVARIANTExperimental rotation-covariant form of FULL_ALL. It diagonalizes a private copy of the occupied projected Hamiltonian, applies the complete state-selective Sylvester spectrum in that canonical copy, and rotates every input and output consistently without changing the physical orbitals. Complex K-point ROKS canonicalization is restricted to orbital subspaces with equal alpha/beta occupation signatures. Real Gamma-point use still requires uniform occupations and excludes ROKS.FULL_SINGLE_INVERSEBased on H-eS cholesky inversion, similar to FULL_SINGLE in preconditioning efficiency but cheaper to construct, might be somewhat less robust. Recommended for large systems.FULL_SINGLEBased on H-eS diagonalisation, not as good as FULL_ALL, but somewhat cheaper to apply.FULL_KINETICCholesky inversion of S and T, fast construction, robust, and relatively good, use for very large systems.FULL_S_INVERSECholesky inversion of S, not as good as FULL_KINETIC, yet equally expensive.NONEskip preconditioning
References: VandeVondele2003, Weber2008, Schiffmann2015
PRECOND_SOLVER
Type: enum
Default: DEFAULT
Usage: PRECOND_SOLVER DIRECT
Description: How the preconditioner is applied to the residual. [Edit on GitHub]
Valid values:
DEFAULTthe defaultDIRECTCholesky decomposition followed by triangular solve (works for FULL_KINETIC/SINGLE_INVERSE/S_INVERSE)INVERSE_CHOLESKYCholesky decomposition followed by explicit inversion (works for FULL_KINETIC/SINGLE_INVERSE/S_INVERSE)INVERSE_UPDATEPerforms a Hotelling update of the inverse if a previous preconditioner is present. Mainly useful for GPU accelerated systems (works for FULL_KINETIC/SINGLE_INVERSE/S_INVERSE)CHEBYSHEVApplies a bounded Chebyshev approximation to the inverse using matrix products only (currently requires FULL_KINETIC).
ROTATION
Type: logical
Default: F
Lone keyword: T
Usage: ROTATION
Description: Introduce additional variables so that rotations of the occupied subspace are allowed as well, only needed for cases where the energy is not invariant under a rotation of the occupied subspace such as non-singlet restricted calculations or fractional occupations. This variable is not used by DIAGONALIZATION%OT, which canonicalizes the converged eigenspace explicitly. [Edit on GitHub]
SAFE_DIIS
Type: logical
Default: T
Aliases: SAFER_DIIS
Usage: SAFE_DIIS ON
Description: Reject DIIS steps if they point away from the minimum, do SD in that case. [Edit on GitHub]
STEPSIZE
Type: real
Default: -1.00000000E+000
Usage: STEPSIZE 0.4
Description: Initial stepsize used for the line search, sometimes this parameter can be reduced to stabilize DIIS or to improve the CG behavior in the first few steps. The optimal value depends on the quality of the preconditioner. A negative values leaves the choice to CP2K depending on the preconditioner. [Edit on GitHub]