![]() |
(git:5e7fe52)
|
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 |
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.
| 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.
| hessian | Hessian in f(c) = 1/2 c^T hessian c + linear^T c. |
| linear | Linear part of the quadratic model. |
| coeff | Resulting non-negative coefficients, normalized to sum to one. |
| objective | Objective value at coeff. |
| status | Completion status. Invalid/nonfinite inputs use the preferred-point fallback; iteration limits return the best legal point found. |
| preferred_index | History 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.
| 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.
| pf_metric | Matrix T_ij=Tr(P_i F_j), already summed over spin/k-points as needed. |
| newest | Index of the reference history entry. |
| hessian | Hessian of the canonical simplex quadratic model. |
| linear | Linear term of the canonical simplex quadratic model. |
| valid | Whether all dimensions and input values were valid. |
Definition at line 157 of file qs_scf_subspace_math.F.
| 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.
| generation | Insertion generation for each physical slot; zero denotes an empty slot. |
Definition at line 206 of file qs_scf_subspace_math.F.
| integer, parameter, public qs_scf_subspace_math::simplex_qp_success = 0 |
Definition at line 27 of file qs_scf_subspace_math.F.
| integer, parameter, public qs_scf_subspace_math::simplex_qp_invalid_shape = 1 |
Definition at line 28 of file qs_scf_subspace_math.F.
| integer, parameter, public qs_scf_subspace_math::simplex_qp_nonfinite_input = 2 |
Definition at line 29 of file qs_scf_subspace_math.F.
| integer, parameter, public qs_scf_subspace_math::simplex_qp_iteration_limit = 3 |
Definition at line 30 of file qs_scf_subspace_math.F.
| integer, parameter, public qs_scf_subspace_math::simplex_qp_pairwise_stationary = 4 |
Definition at line 31 of file qs_scf_subspace_math.F.