Loading...
Searching...
No Matches
kpoint_band_classification.hpp
Go to the documentation of this file.
1#pragma once
2
3/**
4 * KPointBandClassification — one k-point's verdict: the role of every band,
5 * and the working basis the subspace iteration sees.
6 */
7
8#include <vector>
9
11
12namespace q3 {
13
14struct [[nodiscard]] KPointBandClassification {
15 std::vector<BandRole> roles;
16 /// Band indices that survive, frozen first is NOT assumed; ascending.
17 std::vector<int> kept_bands;
18 /// Positions within `kept_bands` that are frozen, ascending.
19 std::vector<int> frozen_positions;
20
21 [[nodiscard]] int number_kept() const {
22 return static_cast<int>(kept_bands.size());
23 }
24 [[nodiscard]] int number_frozen() const {
25 return static_cast<int>(frozen_positions.size());
26 }
27};
28
29} // namespace q3
std::vector< int > kept_bands
Band indices that survive, frozen first is NOT assumed; ascending.
std::vector< int > frozen_positions
Positions within kept_bands that are frozen, ascending.