(git:5e7fe52)
Loading...
Searching...
No Matches
qs_scf_subspace_math Module Reference

Small, matrix-free mathematical kernels used by ADIIS. More...

Functions/Subroutines

subroutine, public simplex_quadratic_minimize (hessian, linear, coeff, objective, status, preferred_index)
 Minimize a quadratic model over the probability simplex.
subroutine, public qs_scf_subspace_build_adiis_model (pf_metric, newest, hessian, linear, valid)
 Construct the canonical ADIIS model relative to the newest history entry.
pure integer function, public qs_scf_subspace_fifo_slot (generation)
 Select the next physical slot for a strict FIFO history.

Variables

integer, parameter, public simplex_qp_success = 0
integer, parameter, public simplex_qp_invalid_shape = 1
integer, parameter, public simplex_qp_nonfinite_input = 2
integer, parameter, public simplex_qp_iteration_limit = 3
integer, parameter, public simplex_qp_pairwise_stationary = 4

Detailed Description

Small, matrix-free mathematical kernels used by ADIIS.

The quadratic model uses the convention

  f(c) = 1/2 c^T hessian c + linear^T c,

with c on the probability simplex.  Only the symmetric part of the
supplied Hessian contributes to the objective.

Function/Subroutine Documentation

◆ simplex_quadratic_minimize()

subroutine, public qs_scf_subspace_math::simplex_quadratic_minimize ( real(kind=dp), dimension(:, :), intent(in) hessian,
real(kind=dp), dimension(:), intent(in) linear,
real(kind=dp), dimension(:), intent(out) coeff,
real(kind=dp), intent(out), optional objective,
integer, intent(out), optional status,
integer, intent(in), optional preferred_index )

Minimize a quadratic model over the probability simplex.

Parameters
hessianHessian in f(c) = 1/2 c^T hessian c + linear^T c.
linearLinear part of the quadratic model.
coeffResulting non-negative coefficients, normalized to sum to one.
objectiveObjective value at coeff.
statusCompletion status. Invalid/nonfinite inputs use the preferred-point fallback; iteration limits return the best legal point found.
preferred_indexHistory entry preferred for fallbacks and numerical ties; defaults to n.
SCF histories are normally very small.  Up to max_exact_dimension, all
active faces are enumerated.  A global minimizer of a quadratic over a
simplex is a stationary point in the relative interior of one of these
faces (a singular stationary face always contains an equivalent boundary
solution).  Larger problems use multistart, simplex-preserving pairwise
line searches and return simplex_qp_pairwise_stationary.  This only proves
that no improving two-coordinate transfer was found; for an indefinite
quadratic it is a heuristic result, not a general local/global optimum.

Definition at line 60 of file qs_scf_subspace_math.F.

Here is the caller graph for this function:

◆ qs_scf_subspace_build_adiis_model()

subroutine, public qs_scf_subspace_math::qs_scf_subspace_build_adiis_model ( real(kind=dp), dimension(:, :), intent(in) pf_metric,
integer, intent(in) newest,
real(kind=dp), dimension(:, :), intent(out) hessian,
real(kind=dp), dimension(:), intent(out) linear,
logical, intent(out), optional valid )

Construct the canonical ADIIS model relative to the newest history entry.

Parameters
pf_metricMatrix T_ij=Tr(P_i F_j), already summed over spin/k-points as needed.
newestIndex of the reference history entry.
hessianHessian of the canonical simplex quadratic model.
linearLinear term of the canonical simplex quadratic model.
validWhether all dimensions and input values were valid.

Definition at line 157 of file qs_scf_subspace_math.F.

Here is the caller graph for this function:

◆ qs_scf_subspace_fifo_slot()

pure integer function, public qs_scf_subspace_math::qs_scf_subspace_fifo_slot ( integer, dimension(:), intent(in) generation)

Select the next physical slot for a strict FIFO history.

Parameters
generationInsertion generation for each physical slot; zero denotes an empty slot.
Returns
First empty slot, otherwise the oldest occupied slot; zero for invalid input.

Definition at line 206 of file qs_scf_subspace_math.F.

Here is the caller graph for this function:

Variable Documentation

◆ simplex_qp_success

integer, parameter, public qs_scf_subspace_math::simplex_qp_success = 0

Definition at line 27 of file qs_scf_subspace_math.F.

◆ simplex_qp_invalid_shape

integer, parameter, public qs_scf_subspace_math::simplex_qp_invalid_shape = 1

Definition at line 28 of file qs_scf_subspace_math.F.

◆ simplex_qp_nonfinite_input

integer, parameter, public qs_scf_subspace_math::simplex_qp_nonfinite_input = 2

Definition at line 29 of file qs_scf_subspace_math.F.

◆ simplex_qp_iteration_limit

integer, parameter, public qs_scf_subspace_math::simplex_qp_iteration_limit = 3

Definition at line 30 of file qs_scf_subspace_math.F.

◆ simplex_qp_pairwise_stationary

integer, parameter, public qs_scf_subspace_math::simplex_qp_pairwise_stationary = 4

Definition at line 31 of file qs_scf_subspace_math.F.