|
inline |
Tests convergence of energy truncation via i) evaluation of expansion coefficients <e_i|kv_1> of initial state |kv_1> restricted to eigenstates of effective Hamiltonian in given energy window (e_i \in (e_{min}, e_{max})) ii) convergence criterion is obtained by evaluating norm of coefficient vector.
Currently we are assuming that the krylov vectors or orthogonal.
If one finds this assumption to be invalid, please exchange coefficient calculation for:
Vec candidate = memoizedMatrix[{i,0}]*krylov[0]; for (Index j{1}; j != memoizedMatrix.dim(2); j++){ candidate += memoizedMatrix[{i,j}]*krylov[j]; } memoizedComplementaryCoeffs[i] = overlap(candidate, krylov.front());
theoretically, one can use this to project out degenerate energies by simply summing up the remaining weights.
THE ACTUAL PROJECTION DOES NOT MAKE THIS ASSUMPTION!
References syten::abs(), syten::DenseTensor< rank, Scalar >::dim(), std::distance(), syten::DenseEigensolver::DenseSymEigensolverBase< Type >::evalues, syten::DenseEigensolver::DenseSymEigensolverBase< Type >::evectors, std::lower_bound(), std::max(), memoizedCoeffs, memoizedComplementaryCoeffs, memoizedMatrix, std::min(), std::move(), syten::normSqd(), syten::sqrt(), and syten::vsplit().
Referenced by syten::EnergyTruncation::Standard< Matrix, Vector, OrthoPolicy, EnergyTruncationPolicy >::apply_energy_truncation().