15 REAL(kind=
dp),
PARAMETER :: tolerance = 2.0e-14_dp
16 INTEGER :: selected_rank
17 REAL(kind=
dp),
DIMENSION(7) :: full_eigenvalues
19 full_eigenvalues = [-0.8_dp, -0.2_dp, 0.2_dp, 0.4_dp, 0.7_dp, 0.7_dp, 1.4_dp]
21 IF (selected_rank /= 2) error stop
"Rank cap split a degenerate complementary manifold"
23 IF (selected_rank /= 5) error stop
"Full complementary space did not retain its rank"
25 error stop
"Common-reference inverse weight differs from the spectral model"
program low_rank_preconditioner_unittest
Defines the basic variable types.
integer, parameter, public dp
Small algebraic helpers for the rotationally covariant low-rank OT preconditioner.
pure elemental real(kind=dp) function, public low_rank_inverse_weight(eigenvalue, reference, energy_gap)
Spectral inverse weight relative to a common occupied reference level.
pure integer function, public low_rank_select_rank(eigenvalues, nocc, max_rank, degeneracy_tolerance)
Select a bounded spectral rank without cutting a degenerate boundary manifold.