MCPcopy Create free account
hub / github.com/SZAILAB/MaterialDFT-Demo / signed_weighted_eigenvalue_change

Function signed_weighted_eigenvalue_change

cpp_core/src/scf.cpp:837–859  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

835}
836
837double signed_weighted_eigenvalue_change(
838 const std::vector<std::vector<double>>& old_eigenvalues_by_k,
839 const std::vector<std::vector<double>>& new_eigenvalues_by_k,
840 const std::vector<std::vector<double>>& occupations_by_k,
841 double fallback_ha
842) {
843 if (old_eigenvalues_by_k.size() != new_eigenvalues_by_k.size()
844 || old_eigenvalues_by_k.size() != occupations_by_k.size()) {
845 return fallback_ha;
846 }
847 double sum = 0.0;
848 for (std::size_t ik = 0; ik < new_eigenvalues_by_k.size(); ++ik) {
849 if (old_eigenvalues_by_k[ik].size() != new_eigenvalues_by_k[ik].size()
850 || occupations_by_k[ik].size() != new_eigenvalues_by_k[ik].size()) {
851 return fallback_ha;
852 }
853 for (std::size_t band = 0; band < new_eigenvalues_by_k[ik].size(); ++band) {
854 sum += occupations_by_k[ik][band]
855 * (new_eigenvalues_by_k[ik][band] - old_eigenvalues_by_k[ik][band]);
856 }
857 }
858 return sum;
859}
860
861double abs_weighted_eigenvalue_change(
862 const std::vector<std::vector<double>>& old_eigenvalues_by_k,

Callers 1

run_scf_kpoints_hartreeFunction · 0.85

Calls 1

sizeMethod · 0.80

Tested by

no test coverage detected